Назад | Перейти на главную страницу

Высокая доступность с HAProxy, Keepalived и Lightsail Static IP

Я пытаюсь настроить настройку высокой доступности с использованием HAProxy, Keepalived и AWS Lightsail. Я настроил все до такой степени, что если я вручную переключу местоположение IP, все будет работать, как ожидалось, но автоматическое назначение IP - нет. Будем очень признательны за любые рекомендации о том, как это сделать.

Я следил за этим руководством для HAProxy и Keepalived на EC2. Я думал, что это все равно будет работать из-за того, что ресурсы в основном те же, но мне не удалось заставить его работать.

У меня есть три узла балансировки нагрузки, по одному в каждом регионе высокой доступности во Франкфурте. Внутреннее соединение между ними подтверждено и проверено на отметке 0,9 мс. Статический IP-адрес указывается вручную на lb1. Если lb1 отключается, ничего не происходит и обслуживание прекращается.

Конфигурация Keepalived lb1:

          vrrp_script check_haproxy
          {
             script "pidof haproxy"
             interval 5
             fall 2
             rise 2
          }

          vrrp_instance VI_1
          {
             debug 2
             interface eth0
             state MASTER
             virtual_router_id 1
             priority 101
             unicast_src_ip PRIVATE_IP_LB1

             unicast_peer
             {
                PRIVATE_IP_LB2
                PRIVATE_IP_LB3
             }

             track_script
             {
                check_haproxy
             }

             notify_master /etc/keepalived/failover.sh
          }

Конфигурация Keepalived lb2:

          vrrp_script check_haproxy
          {
             script "pidof haproxy"
             interval 5
             fall 2
             rise 2
          }
          vrrp_instance VI_1
          {
             debug 2
             interface eth0
             state BACKUP
             virtual_router_id 1
             priority 100
             unicast_src_ip PRIVATE_IP_LB2

             unicast_peer
             {
                PRIVATE_IP_LB1
                PRIVATE_IP_LB3
             }

             track_script
             {
                check_haproxy
             }

             notify_master /etc/keepalived/failover.sh
          }

Конфигурация Keepalived lb3:

          vrrp_script check_haproxy
          {
             script "pidof haproxy"
             interval 5
             fall 2
             rise 2
          }
          vrrp_instance VI_1
          {
             debug 2
             interface eth0
             state BACKUP
             virtual_router_id 1
             priority 99
             unicast_src_ip PRIVATE_IP_LB3

             unicast_peer
             {
                PRIVATE_IP_LB1
                PRIVATE_IP_LB2
             }

             track_script
             {
                check_haproxy
             }

             notify_master /etc/keepalived/failover.sh
          }

failover.sh

          #!/bin/bash

          EIP=AWS_LIGHTSAIL_STATIC_IP
          INSTANCE_ID=INSTANCE_ID_OF_NODE

          /usr/bin/aws ec2 disassociate-address --public-ip $EIP
          /usr/bin/aws ec2 associate-address --public-ip $EIP --instance-id $INSTANCE_ID