Commit 6451d368 authored by Benoît Knecht's avatar Benoît Knecht Committed by Guillaume Abrioux
Browse files

ceph-rgw-loadbalancer: Fix keepalived master selection

While 2ca33641

 fixed a bug in the way the `keepalived.conf.j2` template matched
hostnames to set the VRRP `MASTER`/`BACKUP` states, it also introduced a
regression in the case where `virtual_ips` is a list of more than one IP
address.

The previous behavior would result in each host in the `rgwloadbalancers` group
to be `MASTER` for one of the `virtual_ips`, but the new behavior caused the
first host to be `MASTER` for all the IP address in `virtual_ips`.

This commit restores the original behavior.
Signed-off-by: default avatarBenoît Knecht <bknecht@protonmail.ch>
(cherry picked from commit 3116f464)
parent 84a0ed44
......@@ -19,7 +19,7 @@
- name: set_fact vip to vrrp_instance
set_fact:
vrrp_instances: "{{ vrrp_instances | default([]) | union([{ 'name': 'VI_' + index|string , 'vip': item }]) }}"
vrrp_instances: "{{ vrrp_instances | default([]) | union([{ 'name': 'VI_' + index|string , 'vip': item, 'master': groups[rgwloadbalancer_group_name][index] }]) }}"
loop: "{{ virtual_ips | flatten(levels=1) }}"
loop_control:
index_var: index
......
......@@ -15,8 +15,8 @@ vrrp_script check_haproxy {
{% for instance in vrrp_instances %}
vrrp_instance {{ instance['name'] }} {
state {{ 'MASTER' if inventory_hostname == groups[rgwloadbalancer_group_name][0] else 'BACKUP' }}
priority {{ '100' if inventory_hostname == groups[rgwloadbalancer_group_name][0] else '90' }}
state {{ 'MASTER' if inventory_hostname == instance['master'] else 'BACKUP' }}
priority {{ '100' if inventory_hostname == instance['master'] else '90' }}
interface {{ virtual_ip_interface }}
virtual_router_id {{ 50 + loop.index }}
advert_int 1
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment