Failover Service
This commit is contained in:
@@ -8,7 +8,7 @@ services:
|
||||
- "--api.insecure=true" # дашборд (можно удалить в production)
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--providers.file.filename=/etc/traefik/dynamic_conf.yml" # самоподписанный сертификат и редирект
|
||||
- "--providers.file.filename=/etc/traefik/dynamic_conf.yml" # самоподписанный сертификат, редирект и failover
|
||||
- "--entrypoints.web.address=:80" # HTTP (для редиректа)
|
||||
- "--entrypoints.websecure.address=:443" # HTTPS/WSS
|
||||
# Метрики Prometheus
|
||||
@@ -29,6 +29,15 @@ services:
|
||||
- eventhub-net
|
||||
restart: unless-stopped
|
||||
|
||||
# ================== Сервис-заглушка для Failover ==================
|
||||
fallback:
|
||||
build:
|
||||
context: ./fallback
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- eventhub-net
|
||||
restart: unless-stopped
|
||||
|
||||
# ================== Кластер EventHub (3 ноды) ==================
|
||||
eventhub-node1:
|
||||
build:
|
||||
@@ -46,42 +55,6 @@ services:
|
||||
- eventhub-node1-data:/app/data
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# --- REST API пользователей ---
|
||||
- "traefik.http.routers.api.rule=Host(`api.eventhub.local`)"
|
||||
- "traefik.http.routers.api.entrypoints=web"
|
||||
- "traefik.http.routers.api.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.api-secure.rule=Host(`api.eventhub.local`)"
|
||||
- "traefik.http.routers.api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.api-secure.tls=true"
|
||||
- "traefik.http.routers.api-secure.service=api"
|
||||
- "traefik.http.services.api.loadbalancer.server.port=8080"
|
||||
# --- WebSocket пользователей (WSS через websecure) ---
|
||||
- "traefik.http.routers.ws.rule=Host(`ws.eventhub.local`)"
|
||||
- "traefik.http.routers.ws.entrypoints=web"
|
||||
- "traefik.http.routers.ws.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.ws-secure.rule=Host(`ws.eventhub.local`)"
|
||||
- "traefik.http.routers.ws-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.ws-secure.tls=true"
|
||||
- "traefik.http.routers.ws-secure.service=ws"
|
||||
- "traefik.http.services.ws.loadbalancer.server.port=8081"
|
||||
# --- Админский REST ---
|
||||
- "traefik.http.routers.admin-api.rule=Host(`admin.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-api.entrypoints=web"
|
||||
- "traefik.http.routers.admin-api.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.admin-api-secure.rule=Host(`admin.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.admin-api-secure.tls=true"
|
||||
- "traefik.http.routers.admin-api-secure.service=admin-api"
|
||||
- "traefik.http.services.admin-api.loadbalancer.server.port=8445"
|
||||
# --- Админский WebSocket (WSS) ---
|
||||
- "traefik.http.routers.admin-ws.rule=Host(`admin-ws.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-ws.entrypoints=web"
|
||||
- "traefik.http.routers.admin-ws.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.admin-ws-secure.rule=Host(`admin-ws.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-ws-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.admin-ws-secure.tls=true"
|
||||
- "traefik.http.routers.admin-ws-secure.service=admin-ws"
|
||||
- "traefik.http.services.admin-ws.loadbalancer.server.port=8446"
|
||||
restart: unless-stopped
|
||||
|
||||
eventhub-node2:
|
||||
@@ -100,38 +73,6 @@ services:
|
||||
- eventhub-node2-data:/app/data
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.api.rule=Host(`api.eventhub.local`)"
|
||||
- "traefik.http.routers.api.entrypoints=web"
|
||||
- "traefik.http.routers.api.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.api-secure.rule=Host(`api.eventhub.local`)"
|
||||
- "traefik.http.routers.api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.api-secure.tls=true"
|
||||
- "traefik.http.routers.api-secure.service=api"
|
||||
- "traefik.http.services.api.loadbalancer.server.port=8080"
|
||||
- "traefik.http.routers.ws.rule=Host(`ws.eventhub.local`)"
|
||||
- "traefik.http.routers.ws.entrypoints=web"
|
||||
- "traefik.http.routers.ws.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.ws-secure.rule=Host(`ws.eventhub.local`)"
|
||||
- "traefik.http.routers.ws-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.ws-secure.tls=true"
|
||||
- "traefik.http.routers.ws-secure.service=ws"
|
||||
- "traefik.http.services.ws.loadbalancer.server.port=8081"
|
||||
- "traefik.http.routers.admin-api.rule=Host(`admin.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-api.entrypoints=web"
|
||||
- "traefik.http.routers.admin-api.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.admin-api-secure.rule=Host(`admin.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.admin-api-secure.tls=true"
|
||||
- "traefik.http.routers.admin-api-secure.service=admin-api"
|
||||
- "traefik.http.services.admin-api.loadbalancer.server.port=8445"
|
||||
- "traefik.http.routers.admin-ws.rule=Host(`admin-ws.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-ws.entrypoints=web"
|
||||
- "traefik.http.routers.admin-ws.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.admin-ws-secure.rule=Host(`admin-ws.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-ws-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.admin-ws-secure.tls=true"
|
||||
- "traefik.http.routers.admin-ws-secure.service=admin-ws"
|
||||
- "traefik.http.services.admin-ws.loadbalancer.server.port=8446"
|
||||
restart: unless-stopped
|
||||
|
||||
eventhub-node3:
|
||||
@@ -150,38 +91,6 @@ services:
|
||||
- eventhub-node3-data:/app/data
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.api.rule=Host(`api.eventhub.local`)"
|
||||
- "traefik.http.routers.api.entrypoints=web"
|
||||
- "traefik.http.routers.api.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.api-secure.rule=Host(`api.eventhub.local`)"
|
||||
- "traefik.http.routers.api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.api-secure.tls=true"
|
||||
- "traefik.http.routers.api-secure.service=api"
|
||||
- "traefik.http.services.api.loadbalancer.server.port=8080"
|
||||
- "traefik.http.routers.ws.rule=Host(`ws.eventhub.local`)"
|
||||
- "traefik.http.routers.ws.entrypoints=web"
|
||||
- "traefik.http.routers.ws.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.ws-secure.rule=Host(`ws.eventhub.local`)"
|
||||
- "traefik.http.routers.ws-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.ws-secure.tls=true"
|
||||
- "traefik.http.routers.ws-secure.service=ws"
|
||||
- "traefik.http.services.ws.loadbalancer.server.port=8081"
|
||||
- "traefik.http.routers.admin-api.rule=Host(`admin.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-api.entrypoints=web"
|
||||
- "traefik.http.routers.admin-api.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.admin-api-secure.rule=Host(`admin.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.admin-api-secure.tls=true"
|
||||
- "traefik.http.routers.admin-api-secure.service=admin-api"
|
||||
- "traefik.http.services.admin-api.loadbalancer.server.port=8445"
|
||||
- "traefik.http.routers.admin-ws.rule=Host(`admin-ws.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-ws.entrypoints=web"
|
||||
- "traefik.http.routers.admin-ws.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.admin-ws-secure.rule=Host(`admin-ws.eventhub.local`)"
|
||||
- "traefik.http.routers.admin-ws-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.admin-ws-secure.tls=true"
|
||||
- "traefik.http.routers.admin-ws-secure.service=admin-ws"
|
||||
- "traefik.http.services.admin-ws.loadbalancer.server.port=8446"
|
||||
restart: unless-stopped
|
||||
|
||||
# ================== Мониторинг ==================
|
||||
|
||||
Reference in New Issue
Block a user