Настройка интерфейса в keepalived

У меня есть 2 сервера, на обоих стоят nginx и kipalived. На первом сервере конфигурация выглядит так:

global_defs {
    enable_script_security
}

vrrp_script nginx_check {
    script "/usr/bin/curl http://127.0.0.1"
    interval 5
    user nginx
}

vrrp_instance web {
    state MASTER
    interface enp1s0
    virtual_router_id 254
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
        192.168.31.254
    }
    track_script {
        nginx_check
    }
    notify /etc/keepalived/notify-web.sh root
}

На втором аналогично, только state BACUP, priority 50. У меня вопросы:

  1. что делает keepalived - только создаёт виртуальный ip и присваивает его тому серверу, который работает? если так, что ip присваивает компьютеру или самому себе?

  2. правильно ли указывать адрес http://127.0.0.1 для проверки работоспособности сайта при условии, если сайт запущен на обоих серверах? ведь приложение запущено в двух экземплярах (в смысле на обоих серверах) и на них адрес этого приложений будет одинаковым

  3. "interface enp1s0" - должно быть одинаково на обоих серверах?

  4. какой указать интерфейс исходя из этого (на обоих серверах разные имена интерфейсов - так и должно быть):

    olegg@serverotale1:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 40:8d:5c:f5:74:33 brd ff:ff:ff:ff:ff:ff inet 192.168.31.96/24 brd 192.168.31.255 scope global dynamic noprefixroute enp1s0 valid_lft 36147sec preferred_lft 36147sec inet 192.168.31.254/32 scope global enp1s0 valid_lft forever preferred_lft forever inet6 fe80::428d:5cff:fef5:7433/64 scope link valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether aa:28:33:0d:fe:65 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever oleggeg@server:~$


Ответы (1 шт):

Автор решения: Solt

Предположим у вас две машины с адресами 192.168.31.96 основной и 192.168.31.97 бекап.

Проверять сайт на самом себе (127.0.0.1) имеет смысл только для уверенности, что локальный NGINX живой. А то, что мастер упал и более недоступен по идее второй сервер и так сам узнает. На то и нужен vrrp.

Интерфейсы, конечно же указывать на каждой машине свои.

virtual_router_id 254 - общий чтоб серверы знали, что принадлежат одной группе, обслуживающей один виртуальный адрес.

virtual_ipaddress - один и тот же 192.168.31.254. Это его они будут создавать по активации.

И, конечно же потом, с улицы вы смотрите на nginx по IP 192.168.31.254.

→ Ссылка