Default to etcd3gw driver for etcd-based coordination

To fix instability and availability issues:

etcd3 is not available in repos for binary kolla images.

etcd3 does not support eventlet-based services [1].

[1] https://review.opendev.org/466098

Change-Id: I430bab735da204fc81696130b17931a89214c876
Closes-bug: #1852086
Closes-bug: #1854932
(cherry picked from commit 58b5acbf65)
This commit is contained in:
Radosław Piliszek 2019-11-15 09:38:43 +01:00
parent c097c312cd
commit bfd1bde4e0
3 changed files with 25 additions and 4 deletions

View File

@ -209,6 +209,9 @@ auth_endpoint = {{ keystone_internal_url }}
{% if cinder_coordination_backend == 'redis' %}
backend_url = {{ redis_connection_string }}
{% elif cinder_coordination_backend == 'etcd' %}
# NOTE(jeffrey4l): python-etcd3 module do not support multi endpoint here.
backend_url = etcd3://{{ 'api' | kolla_address(groups['etcd'][0]) | put_address_in_context('url') }}:{{ etcd_client_port }}
# NOTE(yoctozepto): etcd-compatible tooz drivers do not support multiple endpoints here (verified in Stein, Train)
# NOTE(yoctozepto): we must use etcd3gw (aka etcd3+http) due to issues with alternative (etcd3) and eventlet (as used by cinder)
# see https://bugs.launchpad.net/kolla-ansible/+bug/1854932
# and https://review.opendev.org/466098 for details
backend_url = etcd3+http://{{ 'api' | kolla_address(groups['etcd'][0]) | put_address_in_context('url') }}:{{ etcd_client_port }}
{% endif %}

View File

@ -103,6 +103,9 @@ policy_file = {{ designate_policy_file }}
{% if designate_coordination_backend == 'redis' %}
backend_url = {{ redis_connection_string }}
{% elif designate_coordination_backend == 'etcd' %}
# NOTE(noxoid): python-etcd3 does not support multiple endpoints
backend_url = etcd3://{{ 'api' | kolla_address(groups['etcd'][0]) | put_address_in_context('url') }}:{{ etcd_client_port }}
# NOTE(yoctozepto): etcd-compatible tooz drivers do not support multiple endpoints here (verified in Stein, Train)
# NOTE(yoctozepto): we must use etcd3gw (aka etcd3+http) due to issues with alternative (etcd3) and eventlet (as used by designate)
# see https://bugs.launchpad.net/kolla-ansible/+bug/1854932
# and https://review.opendev.org/466098 for details
backend_url = etcd3+http://{{ 'api' | kolla_address(groups['etcd'][0]) | put_address_in_context('url') }}:{{ etcd_client_port }}
{% endif %}

View File

@ -0,0 +1,15 @@
---
fixes:
- |
When ``etcd`` is used with ``cinder_coordination_backend``
and/or ``designate_coordination_backend``, the config has been changed
to use the ``etcd3gw`` (aka ``etcd3+http``) ``tooz`` coordination driver
instead of ``etcd3`` due to issues with the latter's availability and
stability. ``etcd3`` does not handle well eventlet-based services,
such as cinder's and designate's.
See bugs `1852086
<https://bugs.launchpad.net/kolla-ansible/+bug/1852086>`__ and `1854932
<https://bugs.launchpad.net/kolla-ansible/+bug/1854932>`__
for details.
See also `tooz change introducing etcd3gw
<https://review.opendev.org/466098>`__.