From b9adeab14f92c49a6bcaa3149b8a7d1dde76cf5c Mon Sep 17 00:00:00 2001 From: Tim Simmons Date: Tue, 31 Jan 2017 18:07:39 +0000 Subject: [PATCH] Enable current Designate services designate-pool-manager and designate-zone-manager are deprecated in favor of designate-worker and designate-producer. This enables those services. This does not functionally change the way Designate works, so the associated config changes are minimal. This does remove some cumbersome pool manager cache configuration that is no longer needed, but wasn't being used anyway. It also simplifies the Designate architecture by making the separation of duties easier to grok, and enables simple horizontal scaling by starting more ``designate-worker`` processes. Change-Id: I7adb2cea21136c18f36e0ed6404989d4e5de8e4d --- defaults/main.yml | 17 ++++------ doc/source/index.rst | 5 ++- examples/playbook.yml | 1 - extras/env.d/designate.yml | 8 ++--- extras/user_secrets_designate.yml | 1 - tasks/designate_db_setup.yml | 6 ---- templates/designate.conf.j2 | 56 ++++++++++++++++++++++++++++--- tests/inventory | 8 ++--- tests/os_designate-overrides.yml | 4 --- tests/test-install-designate.yml | 3 -- 10 files changed, 68 insertions(+), 41 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index 1e4c794..8efd984 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -61,9 +61,6 @@ designate_system_user_home: "/var/lib/{{ designate_system_user_name }}" designate_galera_address: 127.0.0.1 designate_galera_user: designate designate_galera_database: designate -designate_pool_manager_galera_address: 127.0.0.1 -designate_pool_manager_galera_user: designate_pool_manager -designate_pool_manager_galera_database: designate_pool_manager ## RabbitMQ info designate_rabbitmq_userid: designate @@ -74,8 +71,6 @@ designate_rabbitmq_port: 5672 ## Pool Configuration Defaults designate_pool_uuid: 794ccc2c-d751-44fe-b57f-8894c9f5c842 -designate_pool_nameserver_uuid: f02a0c72-c701-4ec2-85d7-197b30992ce8 -designate_pool_target_uuid: f02a0c72-c701-4ec2-85d7-197b30992ce9 # Enable/Disable Ceilometer designate_ceilometer_enabled: False @@ -158,12 +153,12 @@ designate_services: designate-central: group: designate_central service_name: designate-central - designate-pool-manager: - group: designate_pool_manager - service_name: designate-pool-manager - designate-zone-manager: - group: designate_zone_manager - service_name: designate-zone-manager + designate-worker: + group: designate_worker + service_name: designate-worker + designate-producer: + group: designate_producer + service_name: designate-producer designate-mdns: group: designate_mdns service_name: designate-mdns diff --git a/doc/source/index.rst b/doc/source/index.rst index 5f73024..1ddb953 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -7,8 +7,8 @@ This Ansible role installs and configures OpenStack Designate. This role will install the following services: * designate-api * designate-central - * designate-pool-manager - * designate-zone-manager + * designate-worker + * designate-producer * designate-mdns * designate-sink @@ -34,7 +34,6 @@ Required variables designate_galera_address designate_galera_password - designate_pool_manager_galera_password designate_service_password designate_rabbitmq_password diff --git a/examples/playbook.yml b/examples/playbook.yml index 8df4b19..6d0ca94 100644 --- a/examples/playbook.yml +++ b/examples/playbook.yml @@ -8,6 +8,5 @@ internal_lb_vip_address: 192.168.0.1 designate_galera_address: "{{ internal_lb_vip_address }}" designate_galera_password: "SuperSecretePassword1" - designate_pool_manager_galera_password: "SuperSecretePassword2" designate_service_password: "SuperSecretePassword3" designate_rabbitmq_password: "SuperSecretePassword4" diff --git a/extras/env.d/designate.yml b/extras/env.d/designate.yml index 49f7e7e..f589a02 100644 --- a/extras/env.d/designate.yml +++ b/extras/env.d/designate.yml @@ -23,10 +23,10 @@ component_skel: designate_mdns: belongs_to: - designate_all - designate_pool_manager: + designate_worker: belongs_to: - designate_all - designate_zone_manager: + designate_producer: belongs_to: - designate_all designate_sink: @@ -41,8 +41,8 @@ container_skel: - designate_api - designate_central - designate_mdns - - designate_pool_manager - - designate_zone_manager + - designate_worker + - designate_producer - designate_sink properties: service_name: designate diff --git a/extras/user_secrets_designate.yml b/extras/user_secrets_designate.yml index b67901e..55d3455 100644 --- a/extras/user_secrets_designate.yml +++ b/extras/user_secrets_designate.yml @@ -1,5 +1,4 @@ designate_galera_password: -designate_pool_manager_galera_password: designate_pool_nameserver_uuid: designate_pool_target_uuid: designate_pool_uuid: diff --git a/tasks/designate_db_setup.yml b/tasks/designate_db_setup.yml index a3e62a1..98235e9 100644 --- a/tasks/designate_db_setup.yml +++ b/tasks/designate_db_setup.yml @@ -19,12 +19,6 @@ become_user: "{{ designate_system_user_name }}" changed_when: false -- name: Perform a Designate Pool Manager Cache sync - command: "{{ designate_bin }}/designate-manage pool-manager-cache sync" - become: yes - become_user: "{{ designate_system_user_name }}" - changed_when: false - - name: Perform a Designate DNS pools update command: "{{ designate_bin }}/designate-manage pool update" become: yes diff --git a/templates/designate.conf.j2 b/templates/designate.conf.j2 index 3b503e8..db71b5b 100644 --- a/templates/designate.conf.j2 +++ b/templates/designate.conf.j2 @@ -216,9 +216,9 @@ memcached_servers = {{ memcached_servers }} #notify_delay = 0 #----------------------- -# Zone Manager Service +# Producer Service #----------------------- -[service:zone_manager] +[service:producer] # Number of Zone Manager worker processes to spawn #workers = None @@ -235,7 +235,7 @@ memcached_servers = {{ memcached_servers }} #------------------------ # Deleted domains purging #------------------------ -[zone_manager_task:domain_purge] +[producer_task:domain_purge] # How frequently to purge deleted domains, in seconds #interval = 3600 # 1h @@ -245,6 +245,20 @@ memcached_servers = {{ memcached_servers }} # How old deleted records should be (deleted_at) to be purged, in seconds #time_threshold = 604800 # 7 days +#------------------------ +# Delayed zones NOTIFY +#------------------------ +[producer_task:delayed_notify] +# How frequently to scan for zones pending NOTIFY, in seconds +#interval = 5 + +#------------------------ +# Worker Periodic Recovery +#------------------------ +[producer_task:worker_periodic_recovery] +# How frequently to scan for zones in ERROR, in seconds +#interval = 120 + #----------------------- # Pool Manager Service #----------------------- @@ -298,6 +312,40 @@ pool_id = {{ designate_pool_uuid }} # The cache driver to use #cache_driver = memcache +#----------------------- +# Worker Service +#----------------------- +[service:worker] +# Whether to send events to worker instead of Pool Manager +enabled = True + +# Number of Worker processes to spawn +#workers = None + +# Number of Worker greenthreads to spawn +#threads = 1000 + +# The percentage of servers requiring a successful update for a zone change +# to be considered active +#threshold_percentage = 100 + +# The time to wait for a response from a server +#poll_timeout = 30 + +# The time between retrying to send a request and waiting for a response from a +# server +#poll_retry_interval = 15 + +# The maximum number of times to retry sending a request and wait for a +# response from a server +#poll_max_retries = 10 + +# The time to wait before sending the first request to a server +#poll_delay = 5 + +# Whether to allow worker to send NOTIFYs. NOTIFY requests to mdns will noop +notify = True + ################################### ## Pool Manager Cache Configuration ################################### @@ -305,7 +353,7 @@ pool_id = {{ designate_pool_uuid }} # SQLAlchemy Pool Manager Cache #----------------------- [pool_manager_cache:sqlalchemy] -connection = mysql+pymysql://{{ designate_pool_manager_galera_user }}:{{ designate_pool_manager_galera_password }}@{{ designate_pool_manager_galera_address }}/designate_pool_manager?charset=utf8 +#connection=sqlite:///$state_path/designate_pool_manager.sqlite #connection_debug = 100 #connection_trace = False #sqlite_synchronous = True diff --git a/tests/inventory b/tests/inventory index ee466b7..a15b154 100644 --- a/tests/inventory +++ b/tests/inventory @@ -14,8 +14,8 @@ openstack1 designate_api designate_central designate_mdns -designate_pool_manager -designate_zone_manager +designate_worker +designate_producer designate_sink [designate_api] @@ -27,10 +27,10 @@ openstack1 [designate_mdns] openstack1 -[designate_pool_manager] +[designate_worker] openstack1 -[designate_zone_manager] +[designate_producer] openstack1 [designate_sink] diff --git a/tests/os_designate-overrides.yml b/tests/os_designate-overrides.yml index e33cefa..c93c9e2 100644 --- a/tests/os_designate-overrides.yml +++ b/tests/os_designate-overrides.yml @@ -23,10 +23,6 @@ designate_galera_address: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] designate_galera_database: designate designate_galera_user: designate designate_galera_password: "SuperSecrete" -designate_pool_manager_galera_address: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}" -designate_pool_manager_galera_database: designate_pool_manager -designate_pool_manager_galera_user: designate_pool_manager -designate_pool_manager_galera_password: "SuperSecrete" designate_rabbitmq_password: "secrete" designate_rabbitmq_userid: designate designate_rabbitmq_vhost: /designate diff --git a/tests/test-install-designate.yml b/tests/test-install-designate.yml index 017d034..990e395 100644 --- a/tests/test-install-designate.yml +++ b/tests/test-install-designate.yml @@ -25,9 +25,6 @@ - include: common/create-grant-db.yml db_name: "{{ designate_galera_user }}" db_password: "{{ designate_galera_password }}" - - include: common/create-grant-db.yml - db_name: "{{ designate_pool_manager_galera_database }}" - db_password: "{{ designate_pool_manager_galera_password }}" - name: Install bind9 package: name: "{{ bind_package_name }}"