unified: Phantom Protocol 2025 complete archive integration
This commit is contained in:
465
release/docker-compose.tld-infrastructure.yml
Normal file
465
release/docker-compose.tld-infrastructure.yml
Normal file
@@ -0,0 +1,465 @@
|
||||
# Phantom TLD Infrastructure - Полная децентрализованная система доменов
|
||||
# Поддерживает миллиарды доменов с высокой доступностью и производительностью
|
||||
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Основные TLD узлы
|
||||
tld-node-1:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile.tld-system
|
||||
container_name: phantom-tld-node-1
|
||||
hostname: tld-node-1
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "53:53/udp" # DNS
|
||||
- "53:53/tcp" # DNS TCP
|
||||
- "8053:8053" # TLD System API
|
||||
- "8054:8054" # Consensus
|
||||
- "8055:8055" # Metrics
|
||||
- "8056:8056" # Health Check
|
||||
volumes:
|
||||
- tld-node-1-data:/var/lib/phantom
|
||||
- tld-node-1-logs:/opt/phantom/logs
|
||||
- ./config/tld-node-1.conf:/opt/phantom/config/tld-system.conf:ro
|
||||
environment:
|
||||
- PHANTOM_NODE_ID=tld-node-1
|
||||
- PHANTOM_NODE_TYPE=primary
|
||||
- PHANTOM_CONSENSUS_ROLE=validator
|
||||
- PHANTOM_DNS_ENABLED=true
|
||||
- PHANTOM_BOOTSTRAP_NODES=tld-node-2:8054,tld-node-3:8054
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.10
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8056/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.0'
|
||||
memory: 4G
|
||||
reservations:
|
||||
cpus: '1.0'
|
||||
memory: 2G
|
||||
|
||||
tld-node-2:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile.tld-system
|
||||
container_name: phantom-tld-node-2
|
||||
hostname: tld-node-2
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8153:53/udp" # DNS (альтернативный порт)
|
||||
- "8153:53/tcp" # DNS TCP
|
||||
- "8063:8053" # TLD System API
|
||||
- "8064:8054" # Consensus
|
||||
- "8065:8055" # Metrics
|
||||
- "8066:8056" # Health Check
|
||||
volumes:
|
||||
- tld-node-2-data:/var/lib/phantom
|
||||
- tld-node-2-logs:/opt/phantom/logs
|
||||
- ./config/tld-node-2.conf:/opt/phantom/config/tld-system.conf:ro
|
||||
environment:
|
||||
- PHANTOM_NODE_ID=tld-node-2
|
||||
- PHANTOM_NODE_TYPE=secondary
|
||||
- PHANTOM_CONSENSUS_ROLE=validator
|
||||
- PHANTOM_DNS_ENABLED=true
|
||||
- PHANTOM_BOOTSTRAP_NODES=tld-node-1:8054,tld-node-3:8054
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.11
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8056/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.0'
|
||||
memory: 4G
|
||||
reservations:
|
||||
cpus: '1.0'
|
||||
memory: 2G
|
||||
|
||||
tld-node-3:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile.tld-system
|
||||
container_name: phantom-tld-node-3
|
||||
hostname: tld-node-3
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8253:53/udp" # DNS (альтернативный порт)
|
||||
- "8253:53/tcp" # DNS TCP
|
||||
- "8073:8053" # TLD System API
|
||||
- "8074:8054" # Consensus
|
||||
- "8075:8055" # Metrics
|
||||
- "8076:8056" # Health Check
|
||||
volumes:
|
||||
- tld-node-3-data:/var/lib/phantom
|
||||
- tld-node-3-logs:/opt/phantom/logs
|
||||
- ./config/tld-node-3.conf:/opt/phantom/config/tld-system.conf:ro
|
||||
environment:
|
||||
- PHANTOM_NODE_ID=tld-node-3
|
||||
- PHANTOM_NODE_TYPE=secondary
|
||||
- PHANTOM_CONSENSUS_ROLE=validator
|
||||
- PHANTOM_DNS_ENABLED=true
|
||||
- PHANTOM_BOOTSTRAP_NODES=tld-node-1:8054,tld-node-2:8054
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.12
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
- tld-node-2
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8056/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.0'
|
||||
memory: 4G
|
||||
reservations:
|
||||
cpus: '1.0'
|
||||
memory: 2G
|
||||
|
||||
# Дополнительные DNS узлы для масштабирования
|
||||
dns-resolver-1:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile.tld-system
|
||||
container_name: phantom-dns-resolver-1
|
||||
hostname: dns-resolver-1
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8353:53/udp" # DNS
|
||||
- "8353:53/tcp" # DNS TCP
|
||||
- "8083:8055" # Metrics
|
||||
- "8086:8056" # Health Check
|
||||
volumes:
|
||||
- dns-resolver-1-logs:/opt/phantom/logs
|
||||
- ./config/dns-resolver-1.conf:/opt/phantom/config/tld-system.conf:ro
|
||||
environment:
|
||||
- PHANTOM_NODE_ID=dns-resolver-1
|
||||
- PHANTOM_NODE_TYPE=dns-only
|
||||
- PHANTOM_CONSENSUS_ROLE=observer
|
||||
- PHANTOM_DNS_ENABLED=true
|
||||
- PHANTOM_TLD_NODES=tld-node-1:8053,tld-node-2:8063,tld-node-3:8073
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.20
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
- tld-node-2
|
||||
- tld-node-3
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8056/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 2G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
|
||||
dns-resolver-2:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile.tld-system
|
||||
container_name: phantom-dns-resolver-2
|
||||
hostname: dns-resolver-2
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8453:53/udp" # DNS
|
||||
- "8453:53/tcp" # DNS TCP
|
||||
- "8093:8055" # Metrics
|
||||
- "8096:8056" # Health Check
|
||||
volumes:
|
||||
- dns-resolver-2-logs:/opt/phantom/logs
|
||||
- ./config/dns-resolver-2.conf:/opt/phantom/config/tld-system.conf:ro
|
||||
environment:
|
||||
- PHANTOM_NODE_ID=dns-resolver-2
|
||||
- PHANTOM_NODE_TYPE=dns-only
|
||||
- PHANTOM_CONSENSUS_ROLE=observer
|
||||
- PHANTOM_DNS_ENABLED=true
|
||||
- PHANTOM_TLD_NODES=tld-node-1:8053,tld-node-2:8063,tld-node-3:8073
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.21
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
- tld-node-2
|
||||
- tld-node-3
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8056/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 2G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
|
||||
# Балансировщик нагрузки DNS
|
||||
dns-load-balancer:
|
||||
image: nginx:alpine
|
||||
container_name: phantom-dns-lb
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5353:53/udp" # Основной DNS порт для клиентов
|
||||
volumes:
|
||||
- ./config/nginx-dns.conf:/etc/nginx/nginx.conf:ro
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.30
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
- tld-node-2
|
||||
- tld-node-3
|
||||
- dns-resolver-1
|
||||
- dns-resolver-2
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.5'
|
||||
memory: 512M
|
||||
reservations:
|
||||
cpus: '0.2'
|
||||
memory: 256M
|
||||
|
||||
# Система мониторинга
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: phantom-prometheus
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- prometheus-data:/prometheus
|
||||
command:
|
||||
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||
- '--storage.tsdb.path=/prometheus'
|
||||
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
||||
- '--web.console.templates=/etc/prometheus/consoles'
|
||||
- '--storage.tsdb.retention.time=30d'
|
||||
- '--web.enable-lifecycle'
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.40
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
- tld-node-2
|
||||
- tld-node-3
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 2G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
container_name: phantom-grafana
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
- ./config/grafana/dashboards:/etc/grafana/provisioning/dashboards:ro
|
||||
- ./config/grafana/datasources:/etc/grafana/provisioning/datasources:ro
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_PASSWORD=phantom123
|
||||
- GF_USERS_ALLOW_SIGN_UP=false
|
||||
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.41
|
||||
depends_on:
|
||||
- prometheus
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.2'
|
||||
memory: 512M
|
||||
|
||||
# Центральный мониторинг TLD системы
|
||||
tld-monitor:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile.tld-system
|
||||
container_name: phantom-tld-monitor
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080" # Веб-интерфейс мониторинга
|
||||
volumes:
|
||||
- ./config/monitor.conf:/opt/phantom/config/monitor.conf:ro
|
||||
environment:
|
||||
- PHANTOM_MONITOR_MODE=true
|
||||
- PHANTOM_TLD_NODES=tld-node-1:8055,tld-node-2:8065,tld-node-3:8075
|
||||
- PHANTOM_DNS_NODES=dns-resolver-1:8083,dns-resolver-2:8093
|
||||
command: ["python3", "/opt/phantom/scripts/monitor.py"]
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.50
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
- tld-node-2
|
||||
- tld-node-3
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.2'
|
||||
memory: 512M
|
||||
|
||||
# Тестовый клиент для нагрузочного тестирования
|
||||
load-tester:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile.tld-system
|
||||
container_name: phantom-load-tester
|
||||
restart: "no"
|
||||
volumes:
|
||||
- ./test-results:/opt/phantom/test-results
|
||||
environment:
|
||||
- PHANTOM_TEST_MODE=true
|
||||
- PHANTOM_DNS_SERVERS=172.20.0.10:53,172.20.0.11:53,172.20.0.12:53
|
||||
- PHANTOM_TLD_APIS=172.20.0.10:8053,172.20.0.11:8063,172.20.0.12:8073
|
||||
command: ["sleep", "infinity"] # Запускается вручную для тестов
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.60
|
||||
depends_on:
|
||||
- tld-node-1
|
||||
- tld-node-2
|
||||
- tld-node-3
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 512M
|
||||
|
||||
# Redis для кэширования и координации
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: phantom-redis
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
- ./config/redis.conf:/usr/local/etc/redis/redis.conf:ro
|
||||
command: redis-server /usr/local/etc/redis/redis.conf
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.70
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.2'
|
||||
memory: 512M
|
||||
|
||||
# PostgreSQL для аналитики и отчетности
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
container_name: phantom-postgres
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
- ./config/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro
|
||||
environment:
|
||||
- POSTGRES_DB=phantom_tld
|
||||
- POSTGRES_USER=phantom
|
||||
- POSTGRES_PASSWORD=phantom123
|
||||
networks:
|
||||
phantom-tld:
|
||||
ipv4_address: 172.20.0.80
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 2G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
|
||||
networks:
|
||||
phantom-tld:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.0.0/16
|
||||
gateway: 172.20.0.1
|
||||
|
||||
volumes:
|
||||
# Данные TLD узлов
|
||||
tld-node-1-data:
|
||||
driver: local
|
||||
tld-node-2-data:
|
||||
driver: local
|
||||
tld-node-3-data:
|
||||
driver: local
|
||||
|
||||
# Логи
|
||||
tld-node-1-logs:
|
||||
driver: local
|
||||
tld-node-2-logs:
|
||||
driver: local
|
||||
tld-node-3-logs:
|
||||
driver: local
|
||||
dns-resolver-1-logs:
|
||||
driver: local
|
||||
dns-resolver-2-logs:
|
||||
driver: local
|
||||
|
||||
# Мониторинг
|
||||
prometheus-data:
|
||||
driver: local
|
||||
grafana-data:
|
||||
driver: local
|
||||
|
||||
# Базы данных
|
||||
redis-data:
|
||||
driver: local
|
||||
postgres-data:
|
||||
driver: local
|
||||
|
||||
Reference in New Issue
Block a user