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

Балансировка нагрузки Keepalived с Nginx, не работающим только с резервным Nginx, живым после смерти Master Nginx

Я использую 2 сервера Nginx на 2 разных машинах с установленным Keepalived соответственно на обеих машинах. Ниже представлена ​​конфигурация для Keepalived.

МАСТЕР ХРАНИЛ

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

     track_script {
            chk_http_port
        }

    virtual_ipaddress {
        10.0.80.240
    }

unicast_src_ip 10.0.80.66
    unicast_peer {
        10.0.80.68
    }
}

vrrp_script chk_http_port {
    script "pidof nginx"
    interval 2
}

РАБ СОХРАНЯЕТСЯ

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        chk_http_port
    }

    virtual_ipaddress {
        10.0.80.240
    }

unicast_src_ip 10.0.80.68
    unicast_peer {
        10.0.80.66
    }
}

vrrp_script chk_http_port {
    script "pidof nginx"
    interval 2
}

НОТА: 10.0.80.66 & 10.0.80.68 это 2 сервера, на которых установлены Nginx и Keepalived. 10.0.80.240 - это действительный неназначенный частный IP-адрес в сети, используемый в качестве виртуального IP-адреса в конфигурации keepalived

ВОПРОС: Когда Nginx с МАСТЕР заявил Keepalived на 10.0.80.66 не работает, Keepalived не перенаправляет запрос на экземпляр Nginx, работающий на 10.0.80.68. Есть ли какие-то настройки, которые мне нужно сделать на машинах, чтобы это произошло?

В этом вопросе не так много информации о причинах такого статуса "неработающий", но я остановлюсь на очевидном: Ваш 'vrrp_script'только убедитесь, что процесс nginx присутствует в системе, а не то, что служба запущена и работает.

Для надежной проверки нужно пойти дальше, например примерно так:

#!/bin/bash
# exit on first error
set -o errexit
# check nginx process exist
pidof nginx
# check nginx static processing ok (if appliable)
curl --silent http://localhost/static/test/
# check dynamic backend (ideally should test backend database connection)
curl --silent http://localhost/service/test/
# everything was ok ? so exit fine
exit 0

Очевидно, вам нужно настроить, и он может быть намного более "умным"