Получение правильного IP-адреса для HAproxy/Keepalived

Это все новое для меня. Пожалуйста, потерпите меня. Извините, если я не правильно сформулировал свою проблему. Я хотел бы установить IP плавающий, чтобы использовать HAproxy и Keepalived.

У меня есть следующие ips:
LB1: 192.168.1.27 # первый балансировщик нагрузки
LB2: 192.168.1.32 # второй балансировщик нагрузки
www1: 192.168.1.28 # первый веб-сервер
www2: 192.168.1.29 # второй веб-сервер
плавающий IP: 192.168.1.200

Когда я отключаю балансировщик нагрузки 1 (LB1), трафик не перенаправляется на плавающий IP. Я не знаю, что проверить, чтобы я мог успешно выполнить всю эту установку. Я подозреваю, что проблема связана с LB2 (кроме меня:)), поскольку плавающий ip не выполняет свою работу, когда LB1 не работает.

Я также следовал за разделом процесса проверки по ссылке ниже '8. Проверьте правильное переключение при сбое ", но безрезультатно: Как создать Плавающий IP и использовать его для настройки HAProxy. По отдельности 5 ips работают нормально только при включенном HAproxy. Это все, что я могу сказать.

Не могли бы вы мне помочь? Благодарю.

РЕДАКТИРОВАТЬ

Мой конфиг:

УСТАНОВКА ГАПРОКСИ на lb1

global
    log 127.0.0.1 local2
    daemon
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy

defaults
    log global
    mode http
    option httplog
    timeout connect 5000
    timeout client 50000
    timeout server 50000
    retries 3
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

listen stats
    bind :1936
    stats enable
    stats hide-version
    stats realm Loadbalanced\ Servers
    stats uri /haproxy?stats
    stats auth haproxy:haproxy

frontend http-in
    bind *:80
    default_backend webservers

backend webservers
    balance roundrobin
    option httpchk GET /haproxy_check
    stick-table type ip size 20k peers mypeer
    server www1 192.168.1.28:80 cookie LSW_WWW1 check inter 500 fall 3 rise 2
    server www2 192.168.1.29:80 cookie LSW_WWW2 check inter 500 fall 3 rise 2

peers mypeer
    peer lb1hostname 192.168.1.27:1024
    peer lb2hostname 192.168.1.32:1024 backup

HAPROXY установить на lb2:

global
    log 127.0.0.1 local2
    daemon
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy

defaults
    log global
    mode http
    option httplog
    timeout connect 5000
    timeout client 50000
    timeout server 50000
    retries 3
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

listen stats
    bind :1936
    stats enable
    stats hide-version
    stats realm Loadbalanced\ Servers
    stats uri /haproxy?stats
    stats auth haproxy:haproxy

frontend http-in
    bind *:80
    default_backend webservers

backend webservers
    balance roundrobin
    option httpchk GET /haproxy_check
    server www1 192.168.1.28:80 cookie LSW_WWW1 check inter 500 fall 3 rise 2
    server www2 192.168.1.29:80 cookie LSW_WWW2 check inter 500 fall 3 rise 2

СОХРАНЕННЫЙ НА LB1

vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2} 
vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 51
    priority 200
    virtual_ipaddress {
            192.168.1.200
    }
    track_script {
            chk_haproxy
    }}

СОХРАНЕННЫЙ НА LB2

vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2}

vrrp_instance VI_1 {
    interface eth0
    state BACKUP
    virtual_router_id 51
    priority 100
    virtual_ipaddress {
            192.168.1.200
    }
    track_script {
            chk_haproxy
    }}

На LB1 и LB2 в Keepalived:

nano /etc/sysctl.conf

добавленной net.ipv4.ip_nonlocal_bind=1

sysctl -p

на lb1:

sudo service keepalived alived stopзатем проверил, работает ли lb2. Это!!! Но когда Haproxy на LB1 не работает, трафик все еще не перенаправляется на LB2.

1 ответ

Это может указывать на проблему с обновлением arp при аварийном переключении ip, проверьте таблицу arp на ваших устройствах, если плавающий ip указывает на lb2 mac addr

Другие вопросы по тегам