Перейти к содержанию

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 процесс

  1. lb-1 (MASTER) перестаёт отправлять VRRP heartbeat
  2. lb-2 (BACKUP) не получает heartbeat 3 секунды
  3. lb-2 промотит себя в MASTER
  4. lb-2 захватывает VIP 188.130.238.189
  5. Трафик автоматически идёт на 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