# Высокая доступность (High Availability) в VyOS

> Высокая доступность с VRRP в VyOS - failover, синхронизация состояний и health checks с примерами Active-Standby и Active-Active

Source: https://opennix.org/docs/vyos/ha/


VRRP (Virtual Router Redundancy Protocol) обеспечивает автоматическое резервирование маршрутизаторов для непрерывной работы сети.

## Обзор

**VRRP** (RFC 3768, RFC 5798) - протокол для создания виртуального роутера из нескольких физических устройств.

**Принцип работы**:
- Несколько роутеров объединяются в VRRP группу
- Один роутер становится **Master** (активный)
- Остальные роутеры - **Backup** (резервные)
- При отказе Master, Backup автоматически становится Master
- Клиенты используют виртуальный IP адрес (не меняется при failover)

**Применение**:
- Резервирование шлюза по умолчанию для клиентов
- High Availability для критичных сервисов
- Устранение Single Point of Failure
- Непрерывность работы при обслуживании
- Enterprise network redundancy

**Преимущества**:
- Автоматический failover (без вмешательства администратора)
- Прозрачность для клиентов (один IP адрес)
- Быстрое переключение (секунды)
- Поддержка множественных VRRP групп
- Стандартный протокол (RFC)

## VRRP Концепции

### Virtual Router ID (VRID)

Уникальный идентификатор VRRP группы (1-255).

**Важно**: VRID должен быть уникален на L2 сегменте (broadcast domain).

### Priority

Приоритет роутера для выбора Master (1-255).

- **Выше priority** = больше шансов стать Master
- По умолчанию: 100
- Роутер с priority 255 - всегда Master (owner)

### Preemption

Автоматическое возвращение роли Master при восстановлении роутера с высоким priority.

- **Включено по умолчанию** - роутер с высоким priority забирает роль Master
- **Отключено** (no-preempt) - текущий Master остается активным

### Virtual IP Address

IP адрес, используемый клиентами как default gateway.

- Может быть несколько виртуальных адресов в одной группе
- Master отвечает на ARP запросы для виртуального IP
- Backup не использует виртуальный IP

### MAC Address

VRRP использует специальный виртуальный MAC адрес:
- **IPv4**: `00:00:5e:00:01:XX` (XX = VRID)
- **IPv6**: `00:00:5e:00:02:XX`

## Базовая конфигурация

### Простая VRRP группа

**Router 1 (Master - priority 200)**:
```bash
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 200

commit
save
```

**Router 2 (Backup - priority 100)**:
```bash
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 100

commit
save
```

**Проверка**:
```bash
run show vrrp
```

Клиенты используют `192.168.1.1` как default gateway.

### Множественные виртуальные IP

```bash
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN address 192.168.1.254/24
set high-availability vrrp group LAN priority 200

commit
```

Оба адреса будут активны на Master.

## Priority и Preemption

### Установка Priority

```bash
set high-availability vrrp group LAN priority 200
commit
```

Значения:
- **1-254** - обычные роутеры
- **255** - owner (физический IP совпадает с виртуальным)

### Отключение Preemption

```bash
set high-availability vrrp group LAN no-preempt
commit
```

Роутер с высоким priority **не будет** забирать роль Master автоматически.

**Использование**: Предотвращение частых переключений (flapping).

### Preemption Delay

Задержка перед возвратом роли Master:

```bash
set high-availability vrrp group LAN preempt-delay 180
commit
```

Роутер ждет 180 секунд после загрузки перед тем как стать Master.

**Использование**: Дать время для стабилизации сервисов.

## Authentication

Защита VRRP от несанкционированных роутеров.

### Plaintext Authentication

**Не рекомендуется** (пароль в открытом виде):

```bash
set high-availability vrrp group LAN authentication type plaintext-password
set high-availability vrrp group LAN authentication password 'MyPassword'
commit
```

### AH Authentication

**Рекомендуется** - использует IPsec AH:

```bash
set high-availability vrrp group LAN authentication type ah
set high-availability vrrp group LAN authentication password 'SecurePassword123!'
commit
```

Пароль должен совпадать на всех роутерах группы.

## Health Check

Мониторинг состояния роутера и автоматическое снижение priority при проблемах.

### Track Interface

Мониторинг состояния интерфейса:

```bash
set high-availability vrrp group LAN track interface eth0
set high-availability vrrp group LAN track interface eth0 weight -50

commit
```

При падении eth0, priority уменьшается на 50.

Если priority становится ниже чем у Backup - происходит failover.

### Health Check Script

Пользовательский скрипт для проверки доступности:

```bash
set high-availability vrrp group LAN health-check script '/config/scripts/check-connectivity.sh'
set high-availability vrrp group LAN health-check interval 10
set high-availability vrrp group LAN health-check failure-count 3

commit
```

**Скрипт** `/config/scripts/check-connectivity.sh`:
```bash
#!/bin/bash
# Check ISP connectivity
ping -c 1 -W 2 8.8.8.8 > /dev/null 2>&1
exit $?
```

Параметры:
- **interval** - интервал проверки (секунды)
- **failure-count** - количество неудач перед failover
- Exit code 0 - успех, не 0 - ошибка

Не забудьте сделать скрипт исполняемым:
```bash
chmod +x /config/scripts/check-connectivity.sh
```

## Transition Scripts

Выполнение действий при изменении состояния VRRP.

### Master Transition Script

Выполняется при переходе в состояние Master:

```bash
set high-availability vrrp group LAN transition-script master '/config/scripts/become-master.sh'
commit
```

**Пример** `/config/scripts/become-master.sh`:
```bash
#!/bin/bash
logger "VRRP: Became Master"
# Запустить дополнительные сервисы
# systemctl start my-service
```

### Backup Transition Script

Выполняется при переходе в состояние Backup:

```bash
set high-availability vrrp group LAN transition-script backup '/config/scripts/become-backup.sh'
commit
```

### Fault Transition Script

Выполняется при переходе в состояние Fault:

```bash
set high-availability vrrp group LAN transition-script fault '/config/scripts/become-fault.sh'
commit
```

### Stop Transition Script

Выполняется при остановке VRRP:

```bash
set high-availability vrrp group LAN transition-script stop '/config/scripts/vrrp-stop.sh'
commit
```

## Sync Groups

Синхронизация состояния нескольких VRRP групп.

### Создание Sync Group

```bash
set high-availability vrrp sync-group SYNC-GROUP member LAN-INSIDE
set high-availability vrrp sync-group SYNC-GROUP member LAN-DMZ

commit
```

**Эффект**: Когда одна группа переходит в Backup, все группы в sync-group также переходят.

**Использование**: Координация failover для множественных сетей.

### Sync Group Transition Scripts

```bash
set high-availability vrrp sync-group SYNC-GROUP transition-script master '/config/scripts/sync-master.sh'
set high-availability vrrp sync-group SYNC-GROUP transition-script backup '/config/scripts/sync-backup.sh'

commit
```

## Unicast VRRP

VRRP через unicast вместо multicast.

**Использование**: Когда multicast не поддерживается (некоторые cloud провайдеры).

```bash
set high-availability vrrp group LAN peer-address 10.0.0.2
set high-availability vrrp group LAN peer-address 10.0.0.3

commit
```

VRRP сообщения отправляются напрямую указанным peers (unicast).

## Global Parameters

### VRRP Version

```bash
set high-availability vrrp global-parameters version 3
commit
```

Версии:
- **2** - RFC 3768 (по умолчанию, IPv4)
- **3** - RFC 5798 (IPv4 и IPv6)

### Startup Delay

Задержка перед запуском VRRP после boot:

```bash
set high-availability vrrp global-parameters startup-delay 60
commit
```

Дает время для инициализации сети перед VRRP.

### Gratuitous ARP

Параметры для ARP announcement:

```bash
set high-availability vrrp global-parameters garp interval 5
set high-availability vrrp global-parameters garp master-refresh 60

commit
```

- **interval** - интервал между GARP (секунды)
- **master-refresh** - интервал refresh GARP от Master

## Conntrack Sync

Синхронизация connection tracking между роутерами для stateful failover.

### Базовая конфигурация

```bash
set service conntrack-sync accept-protocol 'tcp'
set service conntrack-sync accept-protocol 'udp'
set service conntrack-sync accept-protocol 'icmp'

set service conntrack-sync failover-mechanism vrrp sync-group SYNC-GROUP

set service conntrack-sync interface eth2
set service conntrack-sync mcast-group 225.0.0.50

commit
```

### Параметры

**Accept Protocol** - какие протоколы синхронизировать:
```bash
set service conntrack-sync accept-protocol tcp
set service conntrack-sync accept-protocol udp
```

**Ignore Address** - не синхронизировать соединения с/на адреса:
```bash
set service conntrack-sync ignore-address ipv4 192.168.1.0/24
```

**Interface** - интерфейс для sync трафика (рекомендуется dedicated):
```bash
set service conntrack-sync interface eth2
```

**Multicast Group**:
```bash
set service conntrack-sync mcast-group 225.0.0.50
```

## Примеры конфигурации

### Простой HA Gateway

**Топология**:
```
ISP --- [Router1] ---+
                     |--- 192.168.1.0/24 (LAN)
ISP --- [Router2] ---+
```

**Router 1 (Master)**:
```bash
# WAN Interface
set interfaces ethernet eth0 address 203.0.113.10/24

# LAN Interface
set interfaces ethernet eth1 address 192.168.1.2/24

# VRRP
set high-availability vrrp group WAN vrid 10
set high-availability vrrp group WAN interface eth0
set high-availability vrrp group WAN address 203.0.113.1/24
set high-availability vrrp group WAN priority 200

set high-availability vrrp group LAN vrid 20
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 200

# Sync Groups
set high-availability vrrp sync-group FAILOVER member WAN
set high-availability vrrp sync-group FAILOVER member LAN

# NAT
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade

# Firewall
set firewall ipv4 input filter default-action drop
set firewall ipv4 input filter rule 10 action accept
set firewall ipv4 input filter rule 10 state established
set firewall ipv4 input filter rule 10 state related

set firewall ipv4 input filter rule 20 action accept
set firewall ipv4 input filter rule 20 protocol vrrp

commit
save
```

**Router 2 (Backup)**:
```bash
# WAN Interface
set interfaces ethernet eth0 address 203.0.113.11/24

# LAN Interface
set interfaces ethernet eth1 address 192.168.1.3/24

# VRRP (lower priority)
set high-availability vrrp group WAN vrid 10
set high-availability vrrp group WAN interface eth0
set high-availability vrrp group WAN address 203.0.113.1/24
set high-availability vrrp group WAN priority 100

set high-availability vrrp group LAN vrid 20
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 100

# Sync Groups
set high-availability vrrp sync-group FAILOVER member WAN
set high-availability vrrp sync-group FAILOVER member LAN

# NAT (same as Router 1)
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade

# Firewall (same as Router 1)
set firewall ipv4 input filter default-action drop
set firewall ipv4 input filter rule 10 action accept
set firewall ipv4 input filter rule 10 state established
set firewall ipv4 input filter rule 10 state related

set firewall ipv4 input filter rule 20 action accept
set firewall ipv4 input filter rule 20 protocol vrrp

commit
save
```

### HA с Health Check

```bash
# VRRP Group
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 200

# Track WAN interface
set high-availability vrrp group LAN track interface eth0
set high-availability vrrp group LAN track interface eth0 weight -100

# Health check script
set high-availability vrrp group LAN health-check script '/config/scripts/check-wan.sh'
set high-availability vrrp group LAN health-check interval 10
set high-availability vrrp group LAN health-check failure-count 3

commit
```

**Health Check Script** `/config/scripts/check-wan.sh`:
```bash
#!/bin/bash

# Check internet connectivity
ping -c 2 -W 2 8.8.8.8 > /dev/null 2>&1
PING1=$?

ping -c 2 -W 2 1.1.1.1 > /dev/null 2>&1
PING2=$?

# Success if at least one ping works
if [ $PING1 -eq 0 ] || [ $PING2 -eq 0 ]; then
    exit 0
else
    exit 1
fi
```

### HA с Conntrack Sync

```bash
# Router 1
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 200

set high-availability vrrp sync-group SYNC member LAN

# Conntrack sync
set service conntrack-sync accept-protocol tcp
set service conntrack-sync accept-protocol udp
set service conntrack-sync failover-mechanism vrrp sync-group SYNC
set service conntrack-sync interface eth2
set service conntrack-sync mcast-group 225.0.0.50

# Dedicated sync interface
set interfaces ethernet eth2 address 10.255.255.1/30

commit
```

**Router 2**:
```bash
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 100

set high-availability vrrp sync-group SYNC member LAN

set service conntrack-sync accept-protocol tcp
set service conntrack-sync accept-protocol udp
set service conntrack-sync failover-mechanism vrrp sync-group SYNC
set service conntrack-sync interface eth2
set service conntrack-sync mcast-group 225.0.0.50

set interfaces ethernet eth2 address 10.255.255.2/30

commit
```

### Enterprise HA с OSPF

```bash
# Router 1
# Physical IPs
set interfaces ethernet eth0 address 203.0.113.2/24
set interfaces ethernet eth1 address 192.168.1.2/24
set interfaces loopback lo address 10.255.255.1/32

# VRRP
set high-availability vrrp group WAN vrid 10
set high-availability vrrp group WAN interface eth0
set high-availability vrrp group WAN address 203.0.113.1/24
set high-availability vrrp group WAN priority 200
set high-availability vrrp group WAN no-preempt

set high-availability vrrp group LAN vrid 20
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 200
set high-availability vrrp group LAN no-preempt

# OSPF
set protocols ospf parameters router-id 10.255.255.1
set protocols ospf area 0 network 192.168.1.0/24
set protocols ospf interface eth1 priority 200

# NAT
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade

commit
```

**Router 2**:
```bash
# Physical IPs
set interfaces ethernet eth0 address 203.0.113.3/24
set interfaces ethernet eth1 address 192.168.1.3/24
set interfaces loopback lo address 10.255.255.2/32

# VRRP (lower priority, no preempt)
set high-availability vrrp group WAN vrid 10
set high-availability vrrp group WAN interface eth0
set high-availability vrrp group WAN address 203.0.113.1/24
set high-availability vrrp group WAN priority 100
set high-availability vrrp group WAN no-preempt

set high-availability vrrp group LAN vrid 20
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 100
set high-availability vrrp group LAN no-preempt

# OSPF
set protocols ospf parameters router-id 10.255.255.2
set protocols ospf area 0 network 192.168.1.0/24
set protocols ospf interface eth1 priority 100

# NAT (same configuration)
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade

commit
```

## Операционные команды

### VRRP Status

```bash
run show vrrp
```

Пример вывода:
```
Name        Interface      VRID  State    Last Transition
----------  -----------  ------  -------  -----------------
LAN         eth1             10  MASTER   2m30s
WAN         eth0             20  MASTER   2m30s
```

Детали группы:
```bash
run show vrrp detail
```

### Conntrack Sync Status

```bash
run show conntrack-sync statistics
```

### Force Failover

Остановить VRRP на Master для тестирования:

```bash
restart vrrp
```

Или временно снизить priority:
```bash
set high-availability vrrp group LAN priority 50
commit
```

Вернуть обратно:
```bash
set high-availability vrrp group LAN priority 200
commit
```

## Интеграция с облачными платформами

### Yandex Cloud

При развертывании VyOS HA в Yandex Cloud учитывайте особенности облачной платформы:

**Архитектура для Yandex Cloud**:
```
Yandex Cloud VPC
├── Subnet A (ru-central1-a)
│   └── VyOS-1 (MASTER)
│       eth0: 10.0.1.10 (внутренний)
│       eth1: 192.168.1.2
└── Subnet B (ru-central1-b)
    └── VyOS-2 (BACKUP)
        eth0: 10.0.2.10 (внутренний)
        eth1: 192.168.1.3
```

**Unicast VRRP для Yandex Cloud**:
```bash
# Router 1 (в зоне ru-central1-a)
set interfaces ethernet eth0 address 10.0.1.10/24
set interfaces ethernet eth1 address 192.168.1.2/24

# VRRP с unicast (multicast не поддерживается между зонами)
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 200
set high-availability vrrp group LAN peer-address 192.168.1.3

# Firewall для VRRP unicast
set firewall ipv4 input filter rule 20 action accept
set firewall ipv4 input filter rule 20 source address 192.168.1.3
set firewall ipv4 input filter rule 20 destination port 112
set firewall ipv4 input filter rule 20 protocol udp

commit
```

**Router 2 (в зоне ru-central1-b)**:
```bash
set interfaces ethernet eth0 address 10.0.2.10/24
set interfaces ethernet eth1 address 192.168.1.3/24

set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 100
set high-availability vrrp group LAN peer-address 192.168.1.2

set firewall ipv4 input filter rule 20 action accept
set firewall ipv4 input filter rule 20 source address 192.168.1.2
set firewall ipv4 input filter rule 20 destination port 112
set firewall ipv4 input filter rule 20 protocol udp

commit
```

**Yandex Cloud Network Load Balancer альтернатива**:

Для публичного IP используйте Network Load Balancer вместо VRRP:
```bash
# Настройка health check endpoint на каждом роутере
set service https listen-address 10.0.1.10
set service https port 443

# В Yandex Cloud Console:
# 1. Создать Network Load Balancer
# 2. Target Group: добавить оба VyOS инстанса
# 3. Health Check: HTTPS :443 path /
# 4. Listener: публичный IP
```

### VK Cloud

Интеграция HA в VK Cloud (Mail.ru Cloud Solutions):

**Архитектура для VK Cloud**:
```bash
# Router 1
set interfaces ethernet eth0 address 10.0.1.10/24
set interfaces ethernet eth1 address 192.168.1.2/24

# VRRP на внутренних интерфейсах
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 192.168.1.1/24
set high-availability vrrp group LAN priority 200

# Health check для VK Cloud
set high-availability vrrp group LAN health-check script '/config/scripts/check-vk-cloud.sh'
set high-availability vrrp group LAN health-check interval 10

commit
```

**Health Check для VK Cloud**:
```bash
#!/bin/bash
# /config/scripts/check-vk-cloud.sh

# Check VK Cloud metadata service
curl -f -m 2 http://169.254.169.254/latest/meta-data/ > /dev/null 2>&1
META=$?

# Check internet connectivity
ping -c 1 -W 2 8.8.8.8 > /dev/null 2>&1
PING=$?

# Success if both work
if [ $META -eq 0 ] && [ $PING -eq 0 ]; then
    exit 0
else
    exit 1
fi
```

**Floating IP управление через VK Cloud API**:
```bash
# Transition script для переключения Floating IP
# /config/scripts/vk-floating-ip.sh

#!/bin/bash

FLOATING_IP="203.0.113.100"
NEW_PORT_ID="port-uuid-of-new-master"
VK_CLOUD_TOKEN="your-auth-token"

# Reassign floating IP to new master
curl -X PUT "https://infra.mail.ru:9696/v2.0/floatingips/${FLOATING_IP}" \
  -H "X-Auth-Token: ${VK_CLOUD_TOKEN}" \
  -H "Content-Type: application/json" \
  -d "{\"floatingip\": {\"port_id\": \"${NEW_PORT_ID}\"}}"
```

## Troubleshooting

### VRRP группа в состоянии BACKUP на обоих роутерах

**Причины**:

1. **Разный VRID**:
   ```bash
   show configuration commands | grep vrid
   ```

2. **Multicast заблокирован**:
   Проверьте switch настройки (IGMP snooping может блокировать).

3. **Firewall блокирует VRRP**:
   ```bash
   set firewall ipv4 input filter rule 20 action accept
   set firewall ipv4 input filter rule 20 protocol vrrp
   commit
   ```

4. **Authentication не совпадает**:
   Проверьте пароли на обоих роутерах.

### VRRP группа постоянно переключается (flapping)

**Решения**:

1. **Отключить preemption**:
   ```bash
   set high-availability vrrp group LAN no-preempt
   commit
   ```

2. **Добавить preempt-delay**:
   ```bash
   set high-availability vrrp group LAN preempt-delay 300
   commit
   ```

3. **Проверить сетевую стабильность**:
   ```bash
   monitor interfaces ethernet eth1
   ```

### Conntrack sync не работает

Проверьте:

1. **Sync interface доступен**:
   ```bash
   show interfaces ethernet eth2
   ```

2. **Multicast группа одинаковая** на обоих роутерах

3. **Sync traffic не блокируется**:
   ```bash
   set firewall ipv4 input filter rule 30 action accept
   set firewall ipv4 input filter rule 30 destination address 225.0.0.50
   set firewall ipv4 input filter rule 30 protocol udp
   commit
   ```

4. **Статистика sync**:
   ```bash
   run show conntrack-sync statistics
   ```

### Клиенты теряют соединения при failover

**Решение** - Conntrack Sync:

Настройте conntrack-sync для сохранения состояния соединений.

См. пример выше "HA с Conntrack Sync".

## Лучшие практики

1. **Используйте sync-group** для координации множественных VRRP групп

2. **no-preempt** для production - предотвращает flapping

3. **Dedicated interface** для conntrack-sync

4. **Health check scripts** для проверки реальной доступности (не только interface state)

5. **Authentication** - используйте AH для безопасности

6. **Transition scripts** - логируйте события failover:
   ```bash
   logger "VRRP $VRRP_GROUP_NAME became $VRRP_STATE"
   ```

7. **Тестируйте failover** регулярно - выполняйте плановые переключения

8. **Мониторинг** - отслеживайте VRRP state changes

9. **Документация** - записывайте назначение каждой VRRP группы

10. **Identical configuration** - NAT, firewall, routing должны быть идентичны на обоих роутерах

## Безопасность

### Рекомендации

1. **Authentication**:
   ```bash
   set high-availability vrrp group LAN authentication type ah
   set high-availability vrrp group LAN authentication password 'StrongPassword!'
   ```

2. **Firewall** для VRRP:
   ```bash
   set firewall ipv4 input filter rule 20 action accept
   set firewall ipv4 input filter rule 20 source address 192.168.1.0/24
   set firewall ipv4 input filter rule 20 protocol vrrp
   ```

3. **Dedicated VLAN** для HA трафика (VRRP, conntrack-sync)

4. **Logging** transition events

5. **Secure transition scripts** - проверяйте права доступа

## Производительность

### Optimization

1. **Dedicated interface** для conntrack-sync - не используйте production интерфейсы

2. **Health check interval** - баланс между скоростью обнаружения и overhead:
   ```bash
   set high-availability vrrp group LAN health-check interval 10
   ```

3. **Conntrack sync protocols** - синхронизируйте только необходимые:
   ```bash
   set service conntrack-sync accept-protocol tcp
   # Не синхронизируйте UDP если не критично
   ```

4. **VRRP advertisement interval** - по умолчанию 1 секунда (достаточно для большинства)

## Ограничения

- VRRP требует L2 connectivity между роутерами (broadcast domain)
- Conntrack sync увеличивает network overhead
- Не все протоколы поддерживают stateful failover
- Health check scripts должны быть быстрыми (не блокировать VRRP)

## Дополнительные ресурсы

- [VyOS VRRP Documentation](https://docs.vyos.io/en/latest/configuration/highavailability/)
- [RFC 5798 - VRRP](https://datatracker.ietf.org/doc/html/rfc5798)
- [Keepalived Documentation](https://www.keepalived.org/)

## Следующие шаги

- [OSPF](/docs/vyos/routing/vyos-ospf/) - динамическая маршрутизация в HA
- [BGP](/docs/vyos/routing/vyos-bgp/) - ISP connectivity в HA
- [Firewall](/docs/vyos/firewall/) - защита HA инфраструктуры
- [NAT](/docs/vyos/nat/) - NAT в HA архитектуре

