From bd3ef61a0c0042fb4198ea7746e567ae3ca8a17a Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Sun, 4 Feb 2024 21:46:45 +0900 Subject: [PATCH] redis: Support multiple sentinel servers Redis Sentinel client implementation support using multiple sentinel servers for redundancy, but only a single server from the servers list was passed down to it. This uses the new taskflow interface to add fallback servers, and register the remaining servers in the list as fallbacks. Depends-on: https://review.opendev.org/c/openstack/taskflow/+/907674 Change-Id: I6b281d2520db0048329b12b33108273ba2f96534 --- .../controller/worker/v2/taskflow_jobboard_driver.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/octavia/controller/worker/v2/taskflow_jobboard_driver.py b/octavia/controller/worker/v2/taskflow_jobboard_driver.py index 05e9c9fcac..187966da7b 100644 --- a/octavia/controller/worker/v2/taskflow_jobboard_driver.py +++ b/octavia/controller/worker/v2/taskflow_jobboard_driver.py @@ -87,12 +87,22 @@ class RedisTaskFlowDriver(JobboardTaskFlowDriver): self.persistence_driver = persistence_driver def job_board(self, persistence): + + def _format_server(host, port): + if ':' in host: + return '[%s]:%d' % (host, port) + return '%s:%d' % (host, port) + jobboard_backend_conf = { 'board': 'redis', 'host': CONF.task_flow.jobboard_backend_hosts[0], 'port': CONF.task_flow.jobboard_backend_port, 'namespace': CONF.task_flow.jobboard_backend_namespace, 'sentinel': CONF.task_flow.jobboard_redis_sentinel, + 'sentinel_fallbacks': [ + _format_server(host, CONF.task_flow.jobboard_backend_port) + for host in CONF.task_flow.jobboard_backend_hosts[1:] + ] } if CONF.task_flow.jobboard_backend_username is not None: jobboard_backend_conf['username'] = (