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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user