Expand README.md with a comprehensive architecture overview for Moscow servers as a unified OSPF cluster. Added detailed configuration steps for MSK-VPSVILLE, MSK-IHOR, SWE-HIPHOST, and HOME, including GRE tunnel setups, OSPF configurations, failover logic, and monitoring/testing procedures. Enhanced clarity on failover advantages and scalability.

This commit is contained in:
2025-07-11 00:03:35 +07:00
parent 5ffa42ec22
commit 43b1804731
+223
View File
@@ -1435,6 +1435,229 @@ set [ find where interfaces=gre-MSK-VPSVILLE-MTS ] area=msk-area
/routing ospf neighbor print
```
---
## Архитектура: Московские серверы как единый OSPF кластер
### Концепция
Все московские серверы (MSK-VPSVILLE, MSK-IHOR) объединены в единый OSPF кластер. Если на одном из них падает GRE туннель к SWE-HIPHOST, весь трафик автоматически идет через другой сервер.
### Схема архитектуры
```mermaid
graph TB
subgraph "Москва - OSPF кластер"
VPSVILLE[MSK-VPSVILLE<br/>msk.vpsville.rt.shx.su]
IHOR[MSK-IHOR<br/>msk.ihor.rt.shx.su]
end
subgraph "Швеция"
HIPHOST[SWE-HIPHOST<br/>swe.hiphost.rt.shx.su]
end
subgraph "Домашний шлюз"
HOME[HOME<br/>home.rt.shx.su]
end
%% GRE туннели от HOME к московским серверам
HOME -- "GRE MSK-VPSVILLE-RTK<br/>10.100.2.0/30" --> VPSVILLE
HOME -- "GRE MSK-VPSVILLE-MTS<br/>10.100.1.0/30" --> VPSVILLE
HOME -- "GRE MSK-IHOR-RTK<br/>10.100.4.0/30" --> IHOR
HOME -- "GRE MSK-IHOR-MTS<br/>10.100.3.0/30" --> IHOR
%% GRE туннели от московских серверов к SWE-HIPHOST
VPSVILLE -- "GRE SWE-HIPHOST<br/>10.100.5.0/30" --> HIPHOST
IHOR -- "GRE SWE-HIPHOST<br/>10.100.6.0/30" --> HIPHOST
%% OSPF связи между московскими серверами
VPSVILLE -. "OSPF" .- IHOR
%% HOME получает маршруты от московских серверов
VPSVILLE -. "OSPF маршруты" .- HOME
IHOR -. "OSPF маршруты" .- HOME
style VPSVILLE fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff
style IHOR fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff
style HIPHOST fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
style HOME fill:#e0e0e0,stroke:#9e9e9e,stroke-width:2px,color:#000
```
### Конфигурация на московских серверах
#### На MSK-VPSVILLE (msk.vpsville.rt.shx.su):
```shell
# 1. GRE туннель к SWE-HIPHOST
/interface gre add name=gre-SWE-HIPHOST remote-address=<SWE-HIPHOST_WAN_IP> local-address=<VPSVILLE_WAN_IP>
/ip address add address=10.100.5.1/30 interface=gre-SWE-HIPHOST
# 2. GRE туннель к MSK-IHOR (для OSPF)
/interface gre add name=gre-MSK-VPSVILLE-IHOR remote-address=<IHOR_WAN_IP> local-address=<VPSVILLE_WAN_IP>
/ip address add address=10.200.0.1/30 interface=gre-MSK-VPSVILLE-IHOR
# 3. OSPF конфигурация
/routing ospf area
add name=backbone instance=default area-id=0.0.0.0
# 4. Добавить все интерфейсы в OSPF
/routing ospf interface-template
# Интерфейсы к HOME
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone
# Интерфейс к SWE-HIPHOST
add interfaces=gre-SWE-HIPHOST cost=10 area=backbone
# Интерфейс к MSK-IHOR
add interfaces=gre-MSK-VPSVILLE-IHOR cost=5 area=backbone
# 5. Анонсировать маршрут 0.0.0.0/0 через SWE-HIPHOST
/ip route add dst-address=0.0.0.0/0 gateway=10.100.5.2 distance=1
# 6. OSPF redistribute
/routing ospf instance
set [ find default=yes ] router-id=10.100.0.2 redistribute=connected,static
```
#### На MSK-IHOR (msk.ihor.rt.shx.su):
```shell
# 1. GRE туннель к SWE-HIPHOST
/interface gre add name=gre-SWE-HIPHOST remote-address=<SWE-HIPHOST_WAN_IP> local-address=<IHOR_WAN_IP>
/ip address add address=10.100.6.1/30 interface=gre-SWE-HIPHOST
# 2. GRE туннель к MSK-VPSVILLE (для OSPF)
/interface gre add name=gre-MSK-IHOR-VPSVILLE remote-address=<VPSVILLE_WAN_IP> local-address=<IHOR_WAN_IP>
/ip address add address=10.200.0.2/30 interface=gre-MSK-IHOR-VPSVILLE
# 3. OSPF конфигурация
/routing ospf area
add name=backbone instance=default area-id=0.0.0.0
# 4. Добавить все интерфейсы в OSPF
/routing ospf interface-template
# Интерфейсы к HOME
add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone
add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone
# Интерфейс к SWE-HIPHOST
add interfaces=gre-SWE-HIPHOST cost=10 area=backbone
# Интерфейс к MSK-VPSVILLE
add interfaces=gre-MSK-IHOR-VPSVILLE cost=5 area=backbone
# 5. Анонсировать маршрут 0.0.0.0/0 через SWE-HIPHOST
/ip route add dst-address=0.0.0.0/0 gateway=10.100.6.2 distance=1
# 6. OSPF redistribute
/routing ospf instance
set [ find default=yes ] router-id=10.100.0.3 redistribute=connected,static
```
### Конфигурация на SWE-HIPHOST (swe.hiphost.rt.shx.su):
```shell
# 1. GRE туннели от московских серверов
/interface gre add name=gre-SWE-HIPHOST-VPSVILLE remote-address=<VPSVILLE_WAN_IP> local-address=<SWE-HIPHOST_WAN_IP>
/ip address add address=10.100.5.2/30 interface=gre-SWE-HIPHOST-VPSVILLE
/interface gre add name=gre-SWE-HIPHOST-IHOR remote-address=<IHOR_WAN_IP> local-address=<SWE-HIPHOST_WAN_IP>
/ip address add address=10.100.6.2/30 interface=gre-SWE-HIPHOST-IHOR
# 2. OSPF конфигурация
/routing ospf area
add name=backbone instance=default area-id=0.0.0.0
# 3. Добавить интерфейсы в OSPF
/routing ospf interface-template
add interfaces=gre-SWE-HIPHOST-VPSVILLE cost=10 area=backbone
add interfaces=gre-SWE-HIPHOST-IHOR cost=10 area=backbone
# 4. OSPF redistribute (маршрут 0.0.0.0/0 получен через DHCP)
/routing ospf instance
set [ find default=yes ] router-id=10.100.0.5 redistribute=connected
```
### Конфигурация на HOME (home.rt.shx.su):
```shell
# 1. OSPF конфигурация
/routing ospf area
add name=backbone instance=default area-id=0.0.0.0
# 2. Добавить интерфейсы к московским серверам в OSPF
/routing ospf interface-template
# Ростелеком (основной провайдер) - низкий cost
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone
# МТС (резервный провайдер) - высокий cost
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone
add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone
# 3. Policy routing для выбора сервера
/routing rule
add src-address=192.168.111.0/24 action=lookup table=MTS # HomeLab → МТС
add src-address=192.168.222.0/24 action=lookup table=MSK # Основной трафик → Ростелеком
```
### Логика работы failover
1. **Нормальная работа**:
- HOME получает маршрут 0.0.0.0/0 от MSK-VPSVILLE через OSPF
- MSK-VPSVILLE имеет GRE туннель к SWE-HIPHOST
2. **Отказ GRE туннеля MSK-VPSVILLE → SWE-HIPHOST**:
- MSK-VPSVILLE больше не может достичь SWE-HIPHOST
- MSK-VPSVILLE убирает маршрут 0.0.0.0/0 из OSPF
- HOME получает маршрут 0.0.0.0/0 от MSK-IHOR через OSPF
- Весь трафик идет через MSK-IHOR → SWE-HIPHOST
3. **Автоматическое восстановление**:
- Когда GRE туннель MSK-VPSVILLE → SWE-HIPHOST восстанавливается
- MSK-VPSVILLE снова анонсирует маршрут 0.0.0.0/0
- OSPF выбирает оптимальный путь (обычно через MSK-VPSVILLE)
### Преимущества этой архитектуры
1. **Полная отказоустойчивость**: Если один московский сервер теряет связь с SWE-HIPHOST, трафик идет через другой
2. **Автоматический failover**: OSPF автоматически переключает маршруты
3. **Быстрое восстановление**: При восстановлении связи автоматически возвращается к оптимальному маршруту
4. **Масштабируемость**: Легко добавить третий московский сервер
### Мониторинг failover
```shell
# Проверить OSPF маршруты
/routing ospf route print
# Проверить активные маршруты
/ip route print where active=yes
# Проверить состояние GRE туннелей
/interface gre print
# Проверить OSPF соседей
/routing ospf neighbor print
```
### Тестирование failover
```shell
# На MSK-VPSVILLE отключить GRE туннель к SWE-HIPHOST
/interface gre disable [ find where name=gre-SWE-HIPHOST ]
# Проверить что маршрут исчез из OSPF
/routing ospf route print
# На HOME проверить что маршрут изменился
/ip route print where dst-address=0.0.0.0/0
# Включить туннель обратно
/interface gre enable [ find where name=gre-SWE-HIPHOST ]
```
### Проверка работы cost:
```shell