keepalived - Load Balancer HA
Автоматически сгенерировано: 2026-03-03 09:38
Общая информация
Назначение: Обеспечение отказоустойчивости Load Balancer через Floating VIP
Технология: VRRP (Virtual Router Redundancy Protocol)
Серверы: - lb-1 (10.10.19.10) - MASTER (priority 101) - lb-2 (10.10.19.11) - BACKUP (priority 100)
Virtual IP (VIP)
VIP: 188.130.238.189
Интерфейс: ens3
Текущий MASTER: ⚠️ lb-2 (или VIP недоступен)
Конфигурация
Файл: /etc/keepalived/keepalived.conf
VRRP instance: VI_1
Router ID: 51 (lb-1), 52 (lb-2)
Priority:
- lb-1: 101 (MASTER)
- lb-2: 100 (BACKUP)
Advertisement interval: 1 секунда
Health Checks
keepalived проверяет:
- HAProxy процесс (
track_script) - Сетевой интерфейс (
track_interface) - VRRP heartbeat между lb-1 и lb-2
При отказе проверки на MASTER: - Priority понижается на 20 - BACKUP становится MASTER - VIP переключается на BACKUP
Failover процесс
- lb-1 (MASTER) перестаёт отправлять VRRP heartbeat
- lb-2 (BACKUP) не получает heartbeat 3 секунды
- lb-2 промотит себя в MASTER
- lb-2 захватывает VIP 188.130.238.189
- Трафик автоматически идёт на lb-2
Время переключения: ~3-5 секунд
Проверка
# Статус keepalived
ssh lb-1 'systemctl status keepalived'
ssh lb-2 'systemctl status keepalived'
# Проверка VIP (должен быть на MASTER)
ssh lb-1 'ip addr show ens3 | grep 188.130.238.189'
ssh lb-2 'ip addr show ens3 | grep 188.130.238.189'
# Логи VRRP
ssh lb-1 'sudo journalctl -u keepalived -f | grep VRRP'
# Текущее состояние
ssh lb-1 'sudo systemctl status keepalived | grep State'
Операции
Ручное переключение MASTER
# Остановить keepalived на текущем MASTER
ssh lb-1 'sudo systemctl stop keepalived'
# BACKUP автоматически станет MASTER
# Проверить VIP переключился
ssh lb-2 'ip addr show | grep 188.130.238.189'
# Вернуть обратно
ssh lb-1 'sudo systemctl start keepalived'
Reload конфигурации
ssh lb-1 'sudo systemctl reload keepalived'
Troubleshooting
Split brain (оба имеют VIP)
# Проверить на обоих
ssh lb-1 'ip addr | grep 188.130.238.189'
ssh lb-2 'ip addr | grep 188.130.238.189'
# Если оба имеют VIP - перезапустить на BACKUP
ssh lb-2 'sudo systemctl restart keepalived'
VIP не назначен
# Проверить firewall (разрешить VRRP)
sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
sudo firewall-cmd --reload