migrate infra from single server to multi-server cluster
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
db:
|
||||
image: mongo:5.0.14-focal
|
||||
volumes:
|
||||
- "{{ data_dir }}/mongo:/data/db"
|
||||
networks:
|
||||
- internal
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 1
|
||||
# placement:
|
||||
# constraints: [node.role == worker] # DBs besser auf Workern lassen wenn möglich
|
||||
|
||||
otel-collector:
|
||||
image: "clickhouse/clickstack-otel-collector:2"
|
||||
environment:
|
||||
CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s'
|
||||
HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: "default"
|
||||
HYPERDX_LOG_LEVEL: "{{ hyperdx_log_level | default('info') }}"
|
||||
OPAMP_SERVER_URL: 'http://app:{{ hyperdx_opamp_port | default(4320) }}'
|
||||
# Ingestion Ports direkt via Swarm Mesh exponieren für Performance
|
||||
ports:
|
||||
- "4317:4317" # OTLP gRPC
|
||||
- "4318:4318" # OTLP HTTP
|
||||
# - "8888:8888" # Metrics (optional)
|
||||
networks:
|
||||
- internal
|
||||
- shared-observability
|
||||
- traefik_public
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 1
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=traefik_public"
|
||||
- "traefik.http.routers.otel-collector.rule=Host(`{{ otlp_domain }}`)"
|
||||
- "traefik.http.routers.otel-collector.entrypoints=https"
|
||||
- "traefik.http.routers.otel-collector.tls.certresolver=main"
|
||||
- "traefik.http.services.otel-collector.loadbalancer.server.port=4318"
|
||||
|
||||
app:
|
||||
image: "hyperdx/hyperdx:2"
|
||||
environment:
|
||||
# URLs anpassen für Traefik Erreichbarkeit
|
||||
FRONTEND_URL: "https://{{ hdx_domain }}"
|
||||
HYPERDX_APP_URL: "https://{{ hdx_domain }}"
|
||||
|
||||
HYPERDX_API_KEY: "{{ hyperdx_api_key }}"
|
||||
HYPERDX_API_PORT: "{{ hyperdx_api_port | default(8000) }}"
|
||||
HYPERDX_APP_PORT: "{{ hyperdx_app_port | default(8080) }}"
|
||||
HYPERDX_LOG_LEVEL: "{{ hyperdx_log_level | default('info') }}"
|
||||
MINER_API_URL: 'http://miner:5123' # Falls miner benötigt wird (in original compose nicht definiert?)
|
||||
MONGO_URI: 'mongodb://db:27017/hyperdx'
|
||||
SERVER_URL: "http://127.0.0.1:{{ hyperdx_api_port | default(8000) }}"
|
||||
OPAMP_PORT: "{{ hyperdx_opamp_port | default(4320) }}"
|
||||
OTEL_EXPORTER_OTLP_ENDPOINT: 'http://otel-collector:4318'
|
||||
OTEL_SERVICE_NAME: 'hdx-oss-app'
|
||||
USAGE_STATS_ENABLED: "{{ usage_stats_enabled | default('false') }}"
|
||||
# Clickhouse Connection String (Default User/Pass from Clickhouse Image)
|
||||
DEFAULT_CONNECTIONS: >-
|
||||
[{"name":"Local ClickHouse","host":"http://ch-server:8123","username":"default","password":""}]
|
||||
DEFAULT_SOURCES: '{{ hyperdx_default_sources | to_json }}'
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=traefik_public"
|
||||
- "traefik.http.routers.hyperdx.rule=Host(`{{ subdomain }}.{{ main_domain }}`)"
|
||||
- "traefik.http.routers.hyperdx.entrypoints=https"
|
||||
- "traefik.http.routers.hyperdx.tls.certresolver=main"
|
||||
- "traefik.http.services.hyperdx.loadbalancer.server.port={{ hyperdx_app_port | default(8080) }}"
|
||||
|
||||
ch-server:
|
||||
image: clickhouse/clickhouse-server:25.6-alpine
|
||||
environment:
|
||||
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
|
||||
volumes:
|
||||
- "{{ data_dir }}/clickhouse/config/config.xml:/etc/clickhouse-server/config.xml"
|
||||
- "{{ data_dir }}/clickhouse/config/users.xml:/etc/clickhouse-server/users.xml"
|
||||
- "{{ data_dir }}/clickhouse/data:/var/lib/clickhouse"
|
||||
- "{{ data_dir }}/clickhouse/logs:/var/log/clickhouse-server"
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 1
|
||||
# placement:
|
||||
# constraints: [node.role == worker]
|
||||
networks:
|
||||
- internal
|
||||
|
||||
networks:
|
||||
internal:
|
||||
driver: overlay
|
||||
traefik_public:
|
||||
external: true
|
||||
shared-observability:
|
||||
external: true
|
||||
Reference in New Issue
Block a user