К основному контенту

Настройка Keepalived + Virtual IP (VIP)

В этом руководстве я опишу установку и настройку Keepalived для организации отказоустойчивого виртуального IP-адреса (VIP) на серверах lb-host-1 и lb-host-2.


1 Установка Keepalived

На обоих серверах lb-host-1 и lb-host-2 выполните:

sudo apt update && sudo apt install keepalived -y

Или на CentOS/RHEL:

sudo yum install keepalived -y


2 Настройка Keepalived

На основном сервере lb-host-1 (Master)

Редактируем конфиг:

sudo nano /etc/keepalived/keepalived.conf

Добавляем конфигурацию:

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass secret

    }

    virtual_ipaddress {

        10.10.10.50

    }

}

Сохраните файл Ctrl+X, затем YEnter.


На резервном сервере lb-host-2 (Backup)

Открываем конфигурационный файл:

sudo nano /etc/keepalived/keepalived.conf

Добавляем следующий код:

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass secret

    }

    virtual_ipaddress {

        10.10.10.50

    }

}

Сохраните файл.


3 Запуск и включение Keepalived

На обоих серверах выполняем:

sudo systemctl enable keepalived --now

sudo systemctl status keepalived


4 Проверка работы

На Master (lb-host-1) выполните:

ip a | grep 10.10.10.50

Вы должны увидеть, что VIP-адрес 10.10.10.50 привязан к интерфейсу.

Затем отключите lb-host-1 командой:

bash

CopyEdit

sudo systemctl stop keepalived

Теперь выполните команду на Backup (lb-host-2):

ip a | grep 10.10.10.50

Если Keepalived работает правильно, VIP-адрес должен автоматически переключиться на резервный сервер.

Для возврата обратно запустите Keepalived на Master:

sudo systemctl start keepalived


5 Диагностика

Если что-то не работает:

  • Проверить логи:

bash

CopyEdit

sudo journalctl -u keepalived --no-pager | tail -20

  • Проверить, есть ли VIP:

bash

CopyEdit

ip a | grep 10.10.10.50

  • Проверить работу службы:

bash

CopyEdit

sudo systemctl status keepalived

После всех проверок ваш Keepalived + VIP должен работать! 🚀

Распиши все параметры в конфиге объясни как работает согласование между серверами keepalived

 

Подробное руководство по Keepalived и объяснение параметров

1 Как работает Keepalived и согласование между серверами

Keepalived использует VRRP (Virtual Router Redundancy Protocol), который обеспечивает автоматическое переключение виртуального IP (VIP) между узлами.

🔹 VRRP назначает один сервер как MASTER, а другой как BACKUP.
🔹 Сервер MASTER постоянно отправляет advertisement-пакеты (анонсы) на BACKUP.
🔹 Если BACKUP перестает получать пакеты от MASTER (например, сервер выключился), он становится MASTER и берет на себя VIP-адрес.
🔹 При возвращении MASTER в строй, если его приоритет выше, он снова забирает VIP-адрес.


2 Разбор конфигурации Keepalived

Пример конфигурации Master-сервера (lb-host-1):

vrrp_instance VI_1 {

    state MASTER                     # Состояние сервера (MASTER или BACKUP)

    interface eth0                    # Сетевой интерфейс, на котором будет работать Keepalived

    virtual_router_id 51               # Уникальный ID виртуального роутера (должен быть одинаковый на всех узлах)

    priority 100                       # Приоритет сервера (чем выше, тем главнее)

    advert_int 1                       # Интервал в секундах, с которым MASTER отправляет пакеты VRRP

    authentication {                  

        auth_type PASS                 # Тип аутентификации (PASS - простой пароль)

        auth_pass secret                # Пароль для защиты VRRP-сообщений

    }

    virtual_ipaddress {                

        10.10.10.50                   # Виртуальный IP, который будет переходить между серверами

    }

}

📌 Как работает этот конфиг:

  1. Master отправляет VRRP-пакеты раз в 1 секунду (advert_int 1).
  2. Если Backup не получает их в течение 3 секунд (обычно 3 интервала), он становится новым Master.
  3. Backup имеет более низкий priority, поэтому он берет на себя VIP только при сбое Master.

Пример конфигурации Backup-сервера (lb-host-2):

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass secret

    }

    virtual_ipaddress {

        10.10.10.50

    }

}

📌 Отличие от Master:

  • state BACKUP — сервер работает в режиме ожидания.
  • priority 90 — ниже, чем у MASTER, поэтому он не будет назначать себе VIP, пока MASTER жив.
  • Все остальные параметры должны совпадать.

3 Подробное объяснение параметров

Параметр

Описание

vrrp_instance VI_1

Определяет группу VRRP. VI_1 – уникальное имя группы.

state MASTER/BACKUP

Указывает роль узла в VRRP-кластере. MASTER – активный, BACKUP – резервный.

interface eth0

Указывает сетевой интерфейс, к которому привязывается виртуальный IP.

virtual_router_id 51

Уникальный ID VRRP-группы (от 1 до 255). Должен быть одинаковым на всех серверах.

priority 100

Приоритет. Чем выше, тем главнее. MASTER должен иметь более высокий приоритет, чем BACKUP.

advert_int 1

Время (в секундах) между отправкой VRRP-анонсов. Чем меньше, тем быстрее происходит переключение.

authentication

Блок аутентификации VRRP (для защиты от поддельных пакетов).

auth_type PASS

Используется парольная аутентификация.

auth_pass secret

Пароль для аутентификации VRRP-сообщений.

virtual_ipaddress

Список виртуальных IP, которые будут назначаться MASTER и переходить к BACKUP.


4 Сценарии переключения VIP

🔴 Сбой MASTER-сервера (lb-host-1)

  • MASTER отправляет VRRP-анонсы каждые 1 секунду.
  • BACKUP ждет 3 секунды без VRRP-пакетов.
  • После 3 секунд BACKUP становится MASTER и забирает VIP 10.10.10.50.

🟢 Возвращение MASTER-сервера

  • При запуске MASTER проверяет, есть ли уже MASTER с таким же virtual_router_id.
  • Если его priority выше, он отбирает VIP обратно.
  • BACKUP снова становится резервным.

5 Проверка работы

После настройки Keepalived выполните на Master:

ip a | grep 10.10.10.50

Если всё работает, VIP будет привязан к интерфейсу eth0.

Остановите Master:

sudo systemctl stop keepalived

Теперь на Backup:

ip a | grep 10.10.10.50

VIP должен появиться на lb-host-2.

Запустите Master обратно:

sudo systemctl start keepalived

VIP вернется на lb-host-1.


Логирование и диагностика

Проверка состояния Keepalived:

sudo systemctl status keepalived

Просмотр логов работы:

sudo journalctl -u keepalived --no-pager | tail -20

Проверка VRRP-состояния:

watch -n 1 "ip a | grep 10.10.10.50"

Эта команда будет обновлять состояние VIP каждую секунду.


7 Дополнительные настройки

1. Автостарт Keepalived

Чтобы Keepalived запускался при перезагрузке, выполните:

sudo systemctl enable keepalived

2. Отправка уведомлений при переключении

Добавьте в keepalived.conf:

notify_master "/usr/local/bin/master.sh"

notify_backup "/usr/local/bin/backup.sh"

notify_fault "/usr/local/bin/fault.sh"

Создайте скрипты /usr/local/bin/master.sh:

#!/bin/bash

echo "Switched to MASTER on $(hostname)" | mail -s "Keepalived MASTER Alert" admin@example.com

Аналогично создайте backup.sh и fault.sh.

Сделайте их исполняемыми:

chmod +x /usr/local/bin/*.sh


Заключение

Теперь у вас настроен отказоустойчивый VIP с Keepalived. 🎯

Что в итоге мы сделали?
Установили Keepalived.
Настроили VRRP и виртуальный IP-адрес.
Объяснили все параметры.
Проверили и протестировали отказоустойчивость.

Теперь, если один сервер выходит из строя, другой автоматически забирает VIP. 🚀

Как сервер keepalived находит другой сервер и отправляет на него VRRP трафик?

 

Как Keepalived находит другой сервер и отправляет VRRP-трафик?

Keepalived использует VRRP (Virtual Router Redundancy Protocol) для обмена информацией между MASTER и BACKUP-серверами. Давайте разберем, как это работает на уровне сети.


1 Как сервера находят друг друга?

Когда Keepalived запускается, он использует многоадресную (multicast) рассылку на VRRP-группу 224.0.0.18 с протоколом IP/VRRP (протокол 112).

🔹 Каждый сервер слушает пакеты на этом мультикасте
🔹 MASTER-сервер отправляет VRRP-анонсы (advertisement packets), сообщая о своем существовании
🔹 BACKUP-сервер слушает эти пакеты, ожидая сбоя MASTER


2 Как работает передача VRRP-пакетов?

VRRP-пакеты идут только в локальной сети (L2, Broadcast domain), так как 224.0.0.18 не маршрутизируется!

📌 Что происходит в сети?

  1. MASTER каждые advert_int секунд (обычно 1 секунда) отправляет VRRP-анонсы на 224.0.0.18
  2. BACKUP получает эти пакеты и понимает, что MASTER жив
  3. Если BACKUP не получает пакеты advert_int * 3 секунд, он переходит в MASTER и назначает себе VIP

📌 Пример VRRP-пакета:

Source IP: 10.10.10.51  (lb-host-1, MASTER)

Destination IP: 224.0.0.18  (VRRP Multicast Group)

Protocol: VRRP (112)

Payload: [VRRP Advertisement, priority=100, Virtual IP=10.10.10.50]


3 Проверка VRRP-трафика

🔍 Как проверить, что идут VRRP-пакеты?

На BACKUP-сервере запустите команду:

sudo tcpdump -i eth0 -n -vv proto 112

Пример вывода:

makefile

CopyEdit

15:43:10.123456 IP 10.10.10.51 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, interval 1s

15:43:11.123457 IP 10.10.10.51 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, interval 1s

Это означает, что MASTER отправляет VRRP-анонсы каждые 1 секунду.

Если в логах нет VRRP-анонсов, BACKUP не видит MASTER и активирует VIP.


4 Почему VRRP-пакеты могут не доходить?

1 Мультикаст-фильтрация
🔹 Если сеть блокирует мультикаст (224.0.0.18), VRRP не работает.
🔹 Проверьте, разрешен ли IGMP и мультикаст в настройках коммутатора.
🔹 Откройте iptables и проверьте блокировку:

sudo iptables -L -nv | grep 112

🔹 Если VRRP заблокирован, добавьте правило:

sudo iptables -A INPUT -p vrrp -j ACCEPT

2 Ошибки с интерфейсом
🔹 Убедитесь, что в конфиге interface eth0 указан правильный интерфейс.
🔹 Посмотрите доступные интерфейсы командой:

ip link show

3 Разные virtual_router_id
🔹 Оба сервера должны иметь одинаковый virtual_router_id.
🔹 Проверьте конфиг /etc/keepalived/keepalived.conf на обоих серверах.


5 Итог

Keepalived использует VRRP (протокол 112) и мультикаст 224.0.0.18
 MASTER отправляет VRRP-анонсы раз в advert_int секунд
 BACKUP получает пакеты и ждет advert_int * 3 секунд
Если пакеты не приходят, BACKUP становится MASTER и берет VIP
Проверить VRRP можно через tcpdump
Ошибки чаще всего связаны с фильтрацией мультикаста или разными virtual_router_id

Теперь Keepalived будет переключать VIP мгновенно при сбоях! 🚀

Что произойдет если в сети будет несколько одинаковых virtual_router_id от разных кластеров?

 

Что произойдет, если в сети будет несколько одинаковых virtual_router_id от разных кластеров?

🔍 1. Как работает virtual_router_id?

virtual_router_id (VRID) — это идентификатор виртуального маршрутизатора в VRRP.

  • Один VRID = одна VRRP-группа
  • Все серверы в одной VRRP-группе должны иметь одинаковый VRID
  • Разные VRRP-кластеры должны использовать разные VRID, иначе возможны конфликты

🔥 2. Возможные проблемы при одинаковых virtual_router_id у разных кластеров

Если в сети работают несколько независимых VRRP-кластеров с одинаковым virtual_router_id, они начнут видеть друг друга как часть одной группы. Это приведет к конфликтам и неожиданным переключениям VIP.

📌 Возможные сценарии проблем:

1 Перехват VIP-адресов между кластерами

  • Один кластер неожиданно станет MASTER для другого
  • VIP может перемещаться между кластерами случайным образом

Флуктуация VRRP-состояний (flapping)

  • Серверы будут постоянно переизбирать MASTER, так как видят "чужие" VRRP-пакеты
  • В логах появятся частые переходы MASTERBACKUPMASTER

3 Конфликт с разными VIP-адресами

  • Если два кластера с одинаковым VRID используют разные виртуальные IP-адреса, Keepalived может случайно удалить/перезаписать VIP одного кластера

 3. Как избежать проблемы?

1 Используйте уникальный virtual_router_id для каждого VRRP-кластера

  • Например:
    • VRRP для балансировщиков: virtual_router_id 51
    • VRRP для баз данных: virtual_router_id 52
    • VRRP для веб-серверов: virtual_router_id 53

2 Ограничьте VRRP-пакеты на уровне сети
Если ваши
VRRP-кластеры не должны взаимодействовать, настройте VLAN'ы или используйте iptables, чтобы пакеты VRRP одного кластера не доходили до другого.

Пример правила для блокировки "чужих" VRRP-пакетов:

sudo iptables -A INPUT -p vrrp -s ! 10.10.10.0/24 -j DROP

Это правило блокирует VRRP-трафик, который не пришел из локальной сети.


 Вывод

Если несколько VRRP-кластеров в одной сети используют одинаковый virtual_router_id, это может вызвать:
🚨 Перехват VIP между кластерами
🚨 Нестабильную работу Keepalived (flapping)
🚨 Непредсказуемые конфликты IP

🛠 Решение:
 Используйте уникальный virtual_router_id для каждого кластера
 Ограничьте VRRP-трафик на уровне сети

Теперь ваши VRRP-кластеры будут работать стабильно! 🚀

 

-- Logs begin at Thu 2025-03-27 09:46:16 MSK, end at Fri 2025-03-28 12:30:38 MSK. -- Mar 28 12:30:24 lb-host-1 systemd[1]: Starting Keepalive Daemon (LVS and VRRP)... Mar 28 12:30:24 lb-host-1 Keepalived[3966]: Starting Keepalived v1.2.24 (02/14,2019) Mar 28 12:30:24 lb-host-1 Keepalived[3966]: Opening file '/etc/keepalived/keepalived.conf'. Mar 28 12:30:24 lb-host-1 Keepalived[3968]: Starting Healthcheck child process, pid=3969 Mar 28 12:30:24 lb-host-1 Keepalived_healthcheckers[3969]: Initializing ipvs Mar 28 12:30:24 lb-host-1 Keepalived[3968]: Starting VRRP child process, pid=3970 Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Registering Kernel netlink reflector Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Registering Kernel netlink command channel Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Registering gratuitous ARP shared channel Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Unable to load ipset library Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Unable to initialise ipsets Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Opening file '/etc/keepalived/keepalived.conf'. Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: VRRP Error : VRID not valid ! Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: must be between 1 & 255. reconfigure ! Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Truncating auth_pass to 8 characters Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: VRRP_Instance(VI_1) the virtual id must be set! Mar 28 12:30:24 lb-host-1 Keepalived_healthcheckers[3969]: Registering Kernel netlink reflector Mar 28 12:30:24 lb-host-1 Keepalived_healthcheckers[3969]: Registering Kernel netlink command channel Mar 28 12:30:24 lb-host-1 Keepalived_healthcheckers[3969]: Opening file '/etc/keepalived/keepalived.conf'. Mar 28 12:30:24 lb-host-1 Keepalived_healthcheckers[3969]: Using LinkWatch kernel netlink reflector... Mar 28 12:30:24 lb-host-1 systemd[1]: Started Keepalive Daemon (LVS and VRRP). Mar 28 12:30:25 lb-host-1 Keepalived_vrrp[3970]: Stopped Mar 28 12:30:25 lb-host-1 Keepalived[3968]: pid 3970 exited with permanent error CONFIG. Terminating Mar 28 12:30:25 lb-host-1 Keepalived[3968]: Stopping Mar 28 12:30:30 lb-host-1 Keepalived[3968]: Stopped Keepalived v1.2.24 (02/14,2019)

 

Анализ логов Keepalived и исправление ошибок

В вашем логе есть несколько ключевых ошибок, из-за которых Keepalived не запускается корректно:

1 Ошибка: VRRP Error : VRID not valid !

Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: VRRP Error : VRID not valid !

Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]:              must be between 1 & 255. reconfigure !

🔍 Проблема: В конфигурации /etc/keepalived/keepalived.conf неправильно указан virtual_router_id или он отсутствует.
VRRP требует, чтобы virtual_router_id был в диапазоне от 1 до 255.

🔧 Решение:

  1. Проверьте ваш конфиг:

sudo nano /etc/keepalived/keepalived.conf

  1. Найдите строку с virtual_router_id и убедитесь, что там стоит корректное значение.
    Пример исправленного конфига:

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51  # Убедитесь, что это значение от 1 до 255

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass secret

    }

    virtual_ipaddress {

        10.10.10.50

    }

}

  1. Сохраните конфиг и перезапустите Keepalived:

sudo systemctl restart keepalived


2 Ошибка: Truncating auth_pass to 8 characters

Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Truncating auth_pass to 8 characters

🔍 Проблема: Пароль в блоке authentication длиннее 8 символов, а Keepalived обрезает его.

🔧 Решение:
Используйте пароль
 не длиннее 8 символов. Например:

authentication {

    auth_type PASS

    auth_pass mypass12  # 8 символов или меньше

}

После изменения перезапустите Keepalived:

sudo systemctl restart keepalived


3 Ошибка: Unable to load ipset library / Unable to initialise ipsets

Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Unable to load ipset library

Mar 28 12:30:24 lb-host-1 Keepalived_vrrp[3970]: Unable to initialise ipsets

🔍 Проблема: Keepalived не может загрузить библиотеку ipset, которая используется для управления IP-наборами в Linux.

🔧 Решение:

  1. Установите ipset:

sudo apt install ipset -y  # Для Debian/Ubuntu

sudo yum install ipset -y  # Для CentOS/RHEL

  1. Перезапустите Keepalived:

sudo systemctl restart keepalived


4 Ошибка: pid 3970 exited with permanent error CONFIG. Terminating

Mar 28 12:30:25 lb-host-1 Keepalived[3968]: pid 3970 exited with permanent error CONFIG. Terminating

🔍 Проблема: Keepalived не смог загрузить конфигурацию, из-за чего процесс остановился.

🔧 Решение:

  1. Проверьте конфигурацию на ошибки:

sudo keepalived -t -f /etc/keepalived/keepalived.conf

  1. Если есть ошибки, исправьте их и перезапустите сервис:

sudo systemctl restart keepalived


Заключение

🔹 Исправьте virtual_router_id (от 1 до 255)
🔹 Используйте auth_pass не длиннее 8 символов
🔹 Установите ipset, если его нет
🔹 Проверяйте конфиг перед запуском (keepalived -t)

После этих исправлений Keepalived должен запуститься без ошибок! 🚀

Mar 28 12:33:55 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:33:55 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet... Mar 28 12:33:56 lb-host-1 Keepalived_vrrp[3991]: (VI_1): received a 0 auth, expecting 1! Mar 28 12:33:56 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:33:56 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet... Mar 28 12:33:57 lb-host-1 Keepalived_vrrp[3991]: (VI_1): received a 0 auth, expecting 1! Mar 28 12:33:57 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:33:57 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet... Mar 28 12:33:58 lb-host-1 Keepalived_vrrp[3991]: (VI_1): received a 0 auth, expecting 1! Mar 28 12:33:58 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:33:58 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet... Mar 28 12:33:59 lb-host-1 Keepalived_vrrp[3991]: (VI_1): received a 0 auth, expecting 1! Mar 28 12:33:59 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:33:59 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet... Mar 28 12:34:00 lb-host-1 Keepalived_vrrp[3991]: (VI_1): received a 0 auth, expecting 1! Mar 28 12:34:00 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:34:00 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet... Mar 28 12:34:01 lb-host-1 Keepalived_vrrp[3991]: (VI_1): received a 0 auth, expecting 1! Mar 28 12:34:01 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:34:01 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet... Mar 28 12:34:02 lb-host-1 Keepalived_vrrp[3991]: (VI_1): received a 0 auth, expecting 1! Mar 28 12:34:02 lb-host-1 Keepalived_vrrp[3991]: bogus VRRP packet received on ens192 !!! Mar 28 12:34:02 lb-host-1 Keepalived_vrrp[3991]: VRRP_Instance(VI_1) Dropping received VRRP packet...

 

Анализ ошибок Keepalived и их исправление

В логах Keepalived на интерфейсе ens192 видны ошибки:

  1. bogus VRRP packet received on ens192 !!!
  2. VRRP_Instance(VI_1) Dropping received VRRP packet...
  3. (VI_1): received a 0 auth, expecting 1!

Это указывает на проблемы с аутентификацией VRRP-пакетов между MASTER и BACKUP.


🔍 Причины ошибки и их решения

1 Ошибка: received a 0 auth, expecting 1!

🔍 Проблема:
Один сервер отправляет
VRRP-пакеты без аутентификации, а другой ожидает аутентификацию.

🔧 Решение:

  1. Проверьте файл конфигурации /etc/keepalived/keepalived.conf на обоих серверах и убедитесь, что секция authentication одинаковая.

 Должно быть так (одинаково на обоих серверах!):

authentication {

    auth_type PASS

    auth_pass secret123  # Убедитесь, что пароль не длиннее 8 символов!

}

  1. Перезапустите Keepalived на обоих серверах:

sudo systemctl restart keepalived

  1. Проверьте логи после перезапуска:

sudo journalctl -u keepalived --since "5 minutes ago"


2 Ошибка: bogus VRRP packet received on ens192 !!!

🔍 Проблема:
Keepalived получает VRRP-пакеты с неверными параметрами. Возможные причины:

  1. Несовпадающие virtual_router_id на MASTER и BACKUP
  2. VRRP-пакеты приходят от сервера, который не настроен в кластере
  3. Проблемы с мультикастом в сети

🔧 Решение:

  1. Проверьте, что virtual_router_id одинаковый на обоих серверах:

vrrp_instance VI_1 {

    virtual_router_id 51  # Должно быть одинаковым везде!

}

  1. Проверьте, что оба сервера находятся в одной сети и получают VRRP-пакеты. Запустите команду на BACKUP:

sudo tcpdump -i ens192 -n -vv proto 112

Если пакеты приходят, но их структура неправильная — значит, проблема в конфигурации VRRP.

  1. Проверьте, нет ли других серверов с таким же virtual_router_id, но не относящихся к вашему кластеру. Используйте tcpdump, чтобы посмотреть отправителей:

sudo tcpdump -i ens192 -n -vvv

Если VRRP-пакеты приходят от неизвестного сервера, он может мешать работе.

  1. Проверьте настройки мультикаста, так как VRRP использует 224.0.0.18:

sudo ip route show | grep 224.0.0.0

Если мультикаст-фильтрация включена, попробуйте отключить:

sudo sysctl -w net.ipv4.conf.all.mc_forwarding=1

sudo sysctl -w net.ipv4.conf.ens192.rp_filter=0


Итоговое исправление

1 Убедитесь, что auth_pass совпадает на обоих серверах1
2 Убедитесь, что
 virtual_router_id одинаковый
3 Проверьте
 VRRP-трафик с tcpdump, чтобы убедиться, что пакеты приходят от нужных серверов
4 Отключите
 фильтрацию мультикаста, если она мешает VRRP

После исправлений перезапустите Keepalived:

sudo systemctl restart keepalived

После этого VRRP должен работать без ошибок! 🚀

 

Комментарии

Популярные сообщения из этого блога

Настройка и подключение IPSec в Windows

Настройка IPSec на Windows включает в себя создание правил безопасности и фильтров для защиты сетевого трафика. Ниже — пошаговое руководство. Включение службы IPSec Перед настройкой убедитесь, что служба IPSec Policy Agent запущена: Нажмите Win + R , введите services.msc и нажмите Enter . Найдите IPsec Policy Agent . Если она не работает, нажмите ПКМ → Свойства . Установите Тип запуска: Автоматически , затем нажмите Запустить . Настройка политики IPSec через «Локальную политику безопасности» Нажмите Win + R , введите secpol.msc , нажмите Enter . Перейдите в Политики IP-безопасности в локальном компьютере . В правом окне нажмите Создать политику IP-безопасности → Далее . Укажите имя политики (например, "IPSec VPN"), снимите флажок Активировать правило по умолчанию , нажмите Далее . Нажмите Добавить , чтобы создать правило. Транспортный или туннельный режим : Если IPSec для защищенной локальной сети – выберите Транспортный режим . Если IPSec для VPN – выберите Туннельн...

Как найти и изменить репозитарии для CentOS 8

В CentOS 8 официальные репозитории (BaseOS, AppStream и Extras) управляются с помощью dnf и файлов конфигурации в /etc/yum.repos.d/ . Вот как их найти и изменить: 1. Просмотр текущих репозиториев dnf repolist Если нужно увидеть подробную информацию: dnf repolist all 2. Изменение репозиториев Файлы конфигурации репозиториев находятся в /etc/yum.repos.d/ . Например, основной репозиторий может быть в файле CentOS-AppStream.repo . Открыть его можно так: nano /etc/yum.repos.d/CentOS-AppStream.repo Внутри можно изменить: enabled=1 → включает репозиторий enabled=0 → отключает репозиторий baseurl= или mirrorlist= → задать новый источник пакетов 3. Замена недоступных репозиториев CentOS 8 достиг конца поддержки , и официальные зеркала больше не работают. Вместо них можно подключить Vault или AlmaLinux/Rocky Linux : Использование архивного репозитория CentOS Vault Создайте резервную копию старых .repo файлов: mkdir /root/repo-backup && mv /etc/yum.repos.d/*.repo /root/repo-backu...

Что такое Redfish API? Развертывание серверов через Redfish API: подробное руководство с примерами

Введение в Redfish API Redfish API — это стандартный интерфейс управления серверами, разработанный DMTF (Distributed Management Task Force). Он предоставляет RESTful API для взаимодействия с серверными системами, включая включение/выключение, мониторинг состояния и развертывание операционной системы. Этот API позволяет автоматизировать управление серверами без необходимости физического доступа или использования устаревших интерфейсов, таких как IPMI. Требования Прежде чем приступить к работе, необходимо подготовить следующее: Сервер с поддержкой Redfish (например, HPE iLO, Dell iDRAC, Lenovo XClarity, Cisco UCS и др.). Доступ к Redfish API через сеть. Учетные данные для аутентификации. Инструмент для работы с API (cURL, Postman, Python с библиотекой requests ). Подключение и аутентификация Для взаимодействия с Redfish API используется стандартный HTTP-запрос с аутентификацией по логину и паролю. Например, для проверки работоспособности интерфейса можно выполнить GET-запрос ...