У меня есть конфигурация master / master с 2 общедоступными IP-адресами (1.1.1.66, 1.1.1.70), которые используются совместно двумя узлами. Идея состоит в том, что у обоих узлов есть по одному общедоступному IP-адресу. И если один из узлов выйдет из строя, другой примет свой публичный IP-адрес и начнет обслуживать оба IP-адреса.
В конфигурации также есть клонированный ресурс шлюза (ocf: heartbeat: Route), который должен запускаться после общедоступных IP-адресов.
У меня такой проблемный сценарий:
Неудачные действия: default_gw_start_0 на haproxy-02 'неизвестная ошибка' (1): call = 32, status = complete, exitreason = 'default_gw Не удалось добавить сетевой маршрут: к 0.0.0.0/0 dev eth0 через 1.1.1.65', last- rc-change = 'Thu Dec 26 01:03:36 2019', queued = 0ms, exec = 38ms
Как я могу заставить второй узел ждать возврата общедоступного IP-адреса, прежде чем пытаться запустить клонированный ресурс Route?
Моя конфигурация:
pcs resource create ip_1 ocf:heartbeat:IPaddr2 ip=1.1.1.66 cidr_netmask=29 nic="eth0" op monitor interval=30s
pcs resource create ip_2 ocf:heartbeat:IPaddr2 ip=1.1.1.70 cidr_netmask=29 nic="eth0" op monitor interval=30s
pcs resource create default_gw ocf:heartbeat:Route destination="0.0.0.0/0" device="eth0" gateway="1.1.1.65" family=""
pcs resource clone default_gw globally-unique="true"
pcs constraint order ip_1 then default_gw-clone
pcs constraint order ip_2 then default_gw-clone
pcs constraint colocation add ip_1 ip_2 -1
** ОБНОВЛЕНИЕ: временное решение - избежать клонирования ресурса Route в целом и создать отдельные ресурсы Route (я назвал их default_gw_1 и default_gw_2) для каждого хоста: **
pcs resource delete default_gw
pcs resource create default_gw_1 ocf:heartbeat:Route destination="0.0.0.0/0" device="eth0" gateway="1.1.1.65" family="ip4" --force
pcs resource create default_gw_2 ocf:heartbeat:Route destination="0.0.0.0/0" device="eth0" gateway="1.1.1.65" family="ip4" --force
# start ips first, then start routes
pcs constraint order ip_1 then default_gw_1
pcs constraint order ip_2 then default_gw_2
# otherwise routes try to start on nodes without the ip attached (and fail)
pcs constraint colocation add default_gw_1 with ip_1 INFINITY
pcs constraint colocation add default_gw_2 with ip_2 INFINITY
# lock routes to start on their specific nodes only
pcs constraint location add gateway_1 default_gw_1 haproxy-01 INFINITY resource-discovery=exclusive
pcs constraint location add gateway_2 default_gw_2 haproxy-02 INFINITY resource-discovery=exclusive
# this will fight with stickiness
pcs constraint location ip_1 prefers haproxy-01=50
pcs constraint location ip_2 prefers haproxy-02=50
pcs resource defaults resource-stickiness=100