MVP Single Node with Manual Config in Docker
This commit is contained in:
commit
8212699f23
27 files changed
+3818
No files matched your search
@@ -0,0 +1,140 @@
|
||||
name: hpnn-v2
|
||||
|
||||
services:
|
||||
# Контейнер 1: маршрутизатор и балансировщик нагрузки в одном лице.
|
||||
# Подключён ко всем трём сетям; весь форвардинг выполняет OVS (br-lb),
|
||||
# сетевой стек ядра контейнера в передаче трафика не участвует.
|
||||
lb-router:
|
||||
# Контекст — корень репозитория: в образ едет и демон health-check (hc/).
|
||||
build:
|
||||
context: .
|
||||
dockerfile: lb/Dockerfile
|
||||
container_name: hpnn-lb
|
||||
hostname: lb-router
|
||||
# privileged + /lib/modules: kernel datapath OVS в сетевом пространстве
|
||||
# имён контейнера (модуль openvswitch namespace-aware).
|
||||
privileged: true
|
||||
volumes:
|
||||
- /lib/modules:/lib/modules:ro
|
||||
environment:
|
||||
TZ: Europe/Moscow
|
||||
networks:
|
||||
pub:
|
||||
ipv4_address: 192.168.55.20
|
||||
mac_address: "02:42:c0:a8:05:14"
|
||||
priv2:
|
||||
ipv4_address: 10.20.0.1
|
||||
mac_address: "02:42:0a:14:00:01"
|
||||
priv3:
|
||||
ipv4_address: 10.30.0.1
|
||||
mac_address: "02:42:0a:1e:00:01"
|
||||
restart: unless-stopped
|
||||
|
||||
# Контейнер 2: бэкенд в приватном сегменте 2.
|
||||
be1:
|
||||
build: ./backend
|
||||
container_name: hpnn-be1
|
||||
hostname: be1
|
||||
cap_add: [NET_ADMIN]
|
||||
environment:
|
||||
TZ: Europe/Moscow
|
||||
LB_GW: 10.20.0.1
|
||||
VIA_LB_ROUTES: "192.168.5.0/24,10.30.0.0/24"
|
||||
networks:
|
||||
priv2:
|
||||
ipv4_address: 10.20.0.2
|
||||
mac_address: "02:42:0a:14:00:02"
|
||||
depends_on: [lb-router]
|
||||
restart: unless-stopped
|
||||
|
||||
# Контейнер 3: копия контейнера 2 в приватном сегменте 3.
|
||||
be2:
|
||||
build: ./backend
|
||||
container_name: hpnn-be2
|
||||
hostname: be2
|
||||
cap_add: [NET_ADMIN]
|
||||
environment:
|
||||
TZ: Europe/Moscow
|
||||
LB_GW: 10.30.0.1
|
||||
VIA_LB_ROUTES: "192.168.5.0/24,10.20.0.0/24"
|
||||
networks:
|
||||
priv3:
|
||||
ipv4_address: 10.30.0.2
|
||||
mac_address: "02:42:0a:1e:00:02"
|
||||
depends_on: [lb-router]
|
||||
restart: unless-stopped
|
||||
|
||||
# Второй бэкенд в приватном сегменте 2. Четыре члена пула вместо двух дают
|
||||
# содержательную проверку раскладки слотов: при выбытии одного члена его
|
||||
# слоты делятся между тремя оставшимися, а не достаются единственному.
|
||||
be3:
|
||||
build: ./backend
|
||||
container_name: hpnn-be3
|
||||
hostname: be3
|
||||
cap_add: [NET_ADMIN]
|
||||
environment:
|
||||
TZ: Europe/Moscow
|
||||
LB_GW: 10.20.0.1
|
||||
VIA_LB_ROUTES: "192.168.5.0/24,10.30.0.0/24"
|
||||
networks:
|
||||
priv2:
|
||||
ipv4_address: 10.20.0.3
|
||||
mac_address: "02:42:0a:14:00:03"
|
||||
depends_on: [lb-router]
|
||||
restart: unless-stopped
|
||||
|
||||
# Второй бэкенд в приватном сегменте 3.
|
||||
be4:
|
||||
build: ./backend
|
||||
container_name: hpnn-be4
|
||||
hostname: be4
|
||||
cap_add: [NET_ADMIN]
|
||||
environment:
|
||||
TZ: Europe/Moscow
|
||||
LB_GW: 10.30.0.1
|
||||
VIA_LB_ROUTES: "192.168.5.0/24,10.20.0.0/24"
|
||||
networks:
|
||||
priv3:
|
||||
ipv4_address: 10.30.0.3
|
||||
mac_address: "02:42:0a:1e:00:03"
|
||||
depends_on: [lb-router]
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
# Сеть 1 — публичный сегмент: macvlan поверх физического enp3s0, то есть
|
||||
# настоящий L2 клиентской сети 192.168.5.0/24.
|
||||
#
|
||||
# Объявленная здесь подсеть 192.168.55.0/24 намеренно фиктивная и служит
|
||||
# только Docker IPAM: адреса узла (192.168.5.20) и VIP (192.168.5.21)
|
||||
# существуют исключительно в правилах OpenFlow, а с интерфейса IP снимается
|
||||
# при старте. Реальная 192.168.5.0/24 здесь объявлена быть не может — её уже
|
||||
# занимает macvlan-сеть соседнего стенда router-functest, и Docker
|
||||
# отказывается регистрировать пересекающийся пул.
|
||||
pub:
|
||||
driver: macvlan
|
||||
driver_opts:
|
||||
parent: enp3s0
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.55.0/24
|
||||
|
||||
# Сеть 2 — приватный сегмент бэкенда be1. Шлюз Docker смещён на .254,
|
||||
# чтобы адрес .1 занял OVS-роутер и не конфликтовал с host-бриджем.
|
||||
priv2:
|
||||
driver: bridge
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: hpnn-p2
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 10.20.0.0/24
|
||||
gateway: 10.20.0.254
|
||||
|
||||
# Сеть 3 — дополнительный приватный сегмент бэкенда be2.
|
||||
priv3:
|
||||
driver: bridge
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: hpnn-p3
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 10.30.0.0/24
|
||||
gateway: 10.30.0.254
|
||||
Reference in new issue
Block a user