From 7433aab258fd093d4c2de855ef3196b02e68f6d3 Mon Sep 17 00:00:00 2001 From: chris meyers Date: Wed, 1 Apr 2020 16:09:57 -0400 Subject: [PATCH] switch memcached from tcp to unix domain socket --- awx/settings/defaults.py | 13 +------------ installer/roles/kubernetes/defaults/main.yml | 1 - .../roles/kubernetes/templates/configmap.yml.j2 | 10 ---------- .../roles/kubernetes/templates/environment.sh.j2 | 2 -- installer/roles/local_docker/defaults/main.yml | 2 -- installer/roles/local_docker/tasks/compose.yml | 6 ++++++ .../roles/local_docker/templates/credentials.py.j2 | 10 ---------- .../local_docker/templates/docker-compose.yml.j2 | 6 ++++++ .../roles/local_docker/templates/environment.sh.j2 | 2 -- .../roles/minishift/templates/configmap.yml.j2 | 9 --------- tools/docker-compose-cluster.yml | 7 +++++++ tools/docker-compose.yml | 7 +++++-- tools/docker-compose/bootstrap_development.sh | 1 - 13 files changed, 25 insertions(+), 51 deletions(-) diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index ff083c1c80..53a72f369f 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -405,17 +405,6 @@ AWX_ISOLATED_PERIODIC_CHECK = 600 # Verbosity level for isolated node management tasks AWX_ISOLATED_VERBOSITY = 0 -# Memcached django cache configuration -# CACHES = { -# 'default': { -# 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', -# 'LOCATION': '127.0.0.1:11211', -# 'TIMEOUT': 864000, -# 'KEY_PREFIX': 'tower_dev', -# } -# } - - DEVSERVER_DEFAULT_ADDR = '0.0.0.0' DEVSERVER_DEFAULT_PORT = '8013' @@ -458,7 +447,7 @@ CELERYBEAT_SCHEDULE = { CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', - 'LOCATION': 'memcached:11211', + 'LOCATION': 'unix:/var/run/memcached/memcached.sock' }, } diff --git a/installer/roles/kubernetes/defaults/main.yml b/installer/roles/kubernetes/defaults/main.yml index f5bdc08280..701a659ad7 100644 --- a/installer/roles/kubernetes/defaults/main.yml +++ b/installer/roles/kubernetes/defaults/main.yml @@ -27,7 +27,6 @@ kubernetes_redis_image: "redis" kubernetes_redis_image_tag: "latest" kubernetes_redis_config_mount_path: "/usr/local/etc/redis/redis.conf" -memcached_hostname: localhost memcached_mem_request: 1 memcached_cpu_request: 500 diff --git a/installer/roles/kubernetes/templates/configmap.yml.j2 b/installer/roles/kubernetes/templates/configmap.yml.j2 index 3555187f60..30b0e3397b 100644 --- a/installer/roles/kubernetes/templates/configmap.yml.j2 +++ b/installer/roles/kubernetes/templates/configmap.yml.j2 @@ -192,16 +192,6 @@ data: LOGGING['handlers']['system_tracking_migrations'] = {'class': 'logging.NullHandler'} LOGGING['handlers']['management_playbooks'] = {'class': 'logging.NullHandler'} - CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', - 'LOCATION': 'unix:/var/run/memcached/memcached.sock' - }, - 'ephemeral': { - 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', - }, - } - USE_X_FORWARDED_PORT = True AWX_CONTAINER_GROUP_DEFAULT_IMAGE = "{{ container_groups_image }}" diff --git a/installer/roles/kubernetes/templates/environment.sh.j2 b/installer/roles/kubernetes/templates/environment.sh.j2 index 08c2608633..45fd3fba8e 100644 --- a/installer/roles/kubernetes/templates/environment.sh.j2 +++ b/installer/roles/kubernetes/templates/environment.sh.j2 @@ -3,5 +3,3 @@ DATABASE_NAME={{ pg_database }} DATABASE_HOST={{ pg_hostname|default('postgresql') }} DATABASE_PORT={{ pg_port|default('5432') }} DATABASE_PASSWORD={{ pg_password | quote }} -MEMCACHED_HOST={{ memcached_hostname|default('localhost') }} -MEMCACHED_PORT={{ memcached_port|default('11211') }} diff --git a/installer/roles/local_docker/defaults/main.yml b/installer/roles/local_docker/defaults/main.yml index 056b9ecb96..96f7751bf1 100644 --- a/installer/roles/local_docker/defaults/main.yml +++ b/installer/roles/local_docker/defaults/main.yml @@ -8,7 +8,5 @@ postgresql_image: "postgres:{{postgresql_version}}" memcached_image: "memcached" memcached_version: "alpine" -memcached_hostname: "memcached" -memcached_port: "11211" compose_start_containers: true diff --git a/installer/roles/local_docker/tasks/compose.yml b/installer/roles/local_docker/tasks/compose.yml index 120b81cc1a..3212732283 100644 --- a/installer/roles/local_docker/tasks/compose.yml +++ b/installer/roles/local_docker/tasks/compose.yml @@ -10,6 +10,12 @@ state: directory mode: 0777 +- name: Create Memcached socket directory + file: + path: "{{ docker_compose_dir }}/memcached_socket" + state: directory + mode: 0777 + - name: Create Docker Compose Configuration template: src: "{{ item }}.j2" diff --git a/installer/roles/local_docker/templates/credentials.py.j2 b/installer/roles/local_docker/templates/credentials.py.j2 index 308ce1ff5e..9ea7ac2775 100644 --- a/installer/roles/local_docker/templates/credentials.py.j2 +++ b/installer/roles/local_docker/templates/credentials.py.j2 @@ -10,14 +10,4 @@ DATABASES = { } } -CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', - 'LOCATION': '{}:{}'.format("{{ memcached_hostname }}", "{{ memcached_port }}") - }, - 'ephemeral': { - 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', - }, -} - BROADCAST_WEBSOCKET_SECRET = "{{ broadcast_websocket_secret | b64encode }}" diff --git a/installer/roles/local_docker/templates/docker-compose.yml.j2 b/installer/roles/local_docker/templates/docker-compose.yml.j2 index 5b5f22277a..e9a26f4416 100644 --- a/installer/roles/local_docker/templates/docker-compose.yml.j2 +++ b/installer/roles/local_docker/templates/docker-compose.yml.j2 @@ -25,6 +25,7 @@ services: - "{{ docker_compose_dir }}/credentials.py:/etc/tower/conf.d/credentials.py" - "{{ docker_compose_dir }}/nginx.conf:/etc/nginx/nginx.conf:ro" - "{{ docker_compose_dir }}/redis_socket:/var/run/redis/:rw" + - "{{ docker_compose_dir }}/memcached_socket:/var/run/memcached/:rw" {% if project_data_dir is defined %} - "{{ project_data_dir +':/var/lib/awx/projects:rw' }}" {% endif %} @@ -78,6 +79,7 @@ services: - "{{ docker_compose_dir }}/environment.sh:/etc/tower/conf.d/environment.sh" - "{{ docker_compose_dir }}/credentials.py:/etc/tower/conf.d/credentials.py" - "{{ docker_compose_dir }}/redis_socket:/var/run/redis/:rw" + - "{{ docker_compose_dir }}/memcached_socket:/var/run/memcached/:rw" {% if project_data_dir is defined %} - "{{ project_data_dir +':/var/lib/awx/projects:rw' }}" {% endif %} @@ -125,15 +127,19 @@ services: volumes: - "{{ docker_compose_dir }}/redis.conf:/usr/local/etc/redis/redis.conf:ro" - "{{ docker_compose_dir }}/redis_socket:/var/run/redis/:rw" + - "{{ docker_compose_dir }}/memcached_socket:/var/run/memcached/:rw" memcached: image: "{{ memcached_image }}:{{ memcached_version }}" container_name: awx_memcached + command: ["-s", "/var/run/memcached/memcached.sock", "-a", "0666"] restart: unless-stopped environment: http_proxy: {{ http_proxy | default('') }} https_proxy: {{ https_proxy | default('') }} no_proxy: {{ no_proxy | default('') }} + volumes: + - "{{ docker_compose_dir }}/memcached_socket:/var/run/memcached/:rw" {% if pg_hostname is not defined %} postgres: diff --git a/installer/roles/local_docker/templates/environment.sh.j2 b/installer/roles/local_docker/templates/environment.sh.j2 index 5053f1afbe..fc0763178d 100644 --- a/installer/roles/local_docker/templates/environment.sh.j2 +++ b/installer/roles/local_docker/templates/environment.sh.j2 @@ -6,7 +6,5 @@ DATABASE_PASSWORD={{ pg_password|default('awxpass')|quote }} {% if pg_admin_password is defined %} DATABASE_ADMIN_PASSWORD={{ pg_admin_password|quote }} {% endif %} -MEMCACHED_HOST={{ memcached_hostname|default('memcached') }} -MEMCACHED_PORT={{ memcached_port|default('11211')|quote }} AWX_ADMIN_USER={{ admin_user|quote }} AWX_ADMIN_PASSWORD={{ admin_password|quote }} diff --git a/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 b/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 index 88d5b1d74f..74d0cb1fe8 100644 --- a/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 +++ b/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 @@ -91,15 +91,6 @@ data: 'ROUTING': 'awx.main.routing.channel_routing', 'CONFIG': {'url': BROKER_URL}} } - CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', - 'LOCATION': '{}:{}'.format("localhost", "11211") - }, - 'ephemeral': { - 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', - }, - } --- apiVersion: v1 kind: ConfigMap diff --git a/tools/docker-compose-cluster.yml b/tools/docker-compose-cluster.yml index b4454f9adf..c26382fdad 100644 --- a/tools/docker-compose-cluster.yml +++ b/tools/docker-compose-cluster.yml @@ -30,6 +30,7 @@ services: volumes: - "../:/awx_devel" - "./redis/redis_socket_ha_1:/var/run/redis/" + - "./memcached/:/var/run/memcached" ports: - "5899-5999:5899-5999" awx-2: @@ -48,6 +49,7 @@ services: volumes: - "../:/awx_devel" - "./redis/redis_socket_ha_2:/var/run/redis/" + - "./memcached/:/var/run/memcached" ports: - "7899-7999:7899-7999" awx-3: @@ -67,6 +69,7 @@ services: volumes: - "../:/awx_devel" - "./redis/redis_socket_ha_3:/var/run/redis/" + - "./memcached/:/var/run/memcached" ports: - "8899-8999:8899-8999" redis_1: @@ -103,5 +106,9 @@ services: image: postgres:10 container_name: tools_postgres_1 memcached: + user: ${CURRENT_UID} image: memcached:alpine container_name: tools_memcached_1 + command: ["-s", "/var/run/memcached/memcached.sock", "-a", "0666"] + volumes: + - "./memcached/:/var/run/memcached" diff --git a/tools/docker-compose.yml b/tools/docker-compose.yml index 3b9428fc27..61a2d9b9ef 100644 --- a/tools/docker-compose.yml +++ b/tools/docker-compose.yml @@ -33,6 +33,7 @@ services: - "../:/awx_devel" - "../awx/projects/:/var/lib/awx/projects/" - "./redis/redis_socket_standalone:/var/run/redis/" + - "./memcached/:/var/run/memcached" privileged: true # A useful container that simply passes through log messages to the console # helpful for testing awx/tower logging @@ -50,10 +51,12 @@ services: environment: POSTGRES_HOST_AUTH_METHOD: trust memcached: + user: ${CURRENT_UID} image: memcached:alpine container_name: tools_memcached_1 - ports: - - "11211:11211" + command: ["-s", "/var/run/memcached/memcached.sock", "-a", "0666"] + volumes: + - "./memcached/:/var/run/memcached" redis: image: redis:latest container_name: tools_redis_1 diff --git a/tools/docker-compose/bootstrap_development.sh b/tools/docker-compose/bootstrap_development.sh index 0210203949..00642d5528 100755 --- a/tools/docker-compose/bootstrap_development.sh +++ b/tools/docker-compose/bootstrap_development.sh @@ -3,7 +3,6 @@ set +x # Wait for the databases to come up ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=postgres port=5432" all -ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=memcached port=11211" all ansible -i "127.0.0.1," -c local -v -m wait_for -a "path=/var/run/redis/redis.sock" all # In case AWX in the container wants to connect to itself, use "docker exec" to attach to the container otherwise