Перейти к содержанию

Серверы

Сводная таблица

Сервер IP CPU RAM Disk Роль
lb-1 10.10.19.10 (ext: 188.130.238.189) 2 vCPU 4 GB 40 GB Load Balancer Primary
lb-2 10.10.19.11 (ext: 92.47.181.152) 2 vCPU 2 GB 20 GB Load Balancer Secondary
web-1 10.10.19.21 4 vCPU 8 GB 59 GB App Server
web-2 10.10.19.22 4 vCPU 8 GB 59 GB App Server
db-1 10.10.19.31 4 vCPU 16 GB 196 GB PostgreSQL Primary
db-2 10.10.19.32 4 vCPU 16 GB 157 GB PostgreSQL Replica
redis-1 10.10.19.40 2 vCPU 4 GB 20 GB Redis + Sentinel
voip-1 10.10.19.51 8 vCPU 16 GB 57 GB Asterisk PBX
voip-2 10.10.19.52 8 vCPU 16 GB 25 GB Asterisk PBX
mon-1 10.10.19.60 2 vCPU 4 GB 59 GB Monitoring + Ansible + Docs

ОС на всех серверах: Ubuntu 24.04.3 LTS.

lb-1 / lb-2 (Load Balancers)

Назначение: балансировка HTTP/HTTPS трафика, PostgreSQL proxy, SIP NAT, VIP failover.

ПО: nginx 1.24.0, keepalived 2.2.8, HAProxy 2.8.16, node_exporter.

nginx: reverse proxy к web-1/web-2. Upstream-ы (least_conn): - api_backend → web-1:8000, web-2:8000 - shared_backend → web-1:8002, web-2:8002 - suo_backend → web-1:8001, web-2:8001 - suo_frontend → web-1:3001, web-2:3001

HAProxy: PostgreSQL Patroni proxy. - Порт 5432: TCP proxy к текущему Patroni leader (db-1 или db-2) - Порт 8404: HAProxy stats - Автоматическое переключение при Patroni failover

keepalived: VIP 10.10.19.100 (MASTER на lb-1, BACKUP на lb-2).

iptables NAT: SIP (5060/udp) и RTP (10000-20000/udp) к voip-1.

Дополнительно на lb-1: - Git origin: /opt/git/ (callbox.git, shared-admin.git, suo.git, ansible.git) - Deploy script: /opt/scripts/deploy-callbox.sh

Домены: b2g.kz, callbox.kz, mon.b2g.kz, docs.b2g.kz — через nginx.

web-1 / web-2 (Application Servers)

Назначение: Docker-хосты для backend и frontend всех приложений.

Docker: Docker 29.1.5, Docker Compose v5.0.1.

Контейнеры (на каждом — 5 штук):

Контейнер Порт Приложение
callbox-backend 8000→8000 CallBox API (FastAPI)
callbox-frontend 3000→80 CallBox UI (React/nginx)
shared-backend 8002→8002 Shared Admin API (FastAPI)
suo-backend 8001→8001 SUO API (FastAPI)
suo-frontend 3001→80 SUO UI (React/nginx)

Примечание: контейнер shared-admin-frontend отсутствует. Shared Admin frontend обслуживается через callbox-frontend или отдельным способом.

Redis Sentinel: запущен на каждом web-сервере (порт 26379).

db-1 / db-2 (Database Servers)

Назначение: PostgreSQL 16.11 с Patroni HA кластером.

Текущие роли (проверено 2026-02-12): db-1 = PRIMARY (leader), db-2 = REPLICA.

Базы данных: asterisk, callbox, shared.

Кластерные сервисы: Patroni, etcd (db-1, db-2, mon-1), streaming replication db-1 → db-2.

redis-1 (Redis)

Назначение: кэширование и сессии.

ПО: Redis 7.0.15.

Порты: Redis server (6379 — слушает на 127.0.0.1 и 10.10.19.40), Sentinel (26379).

AUTH: включена.

Sentinel кластер: redis-1, web-1, web-2. Master name: callbox-redis.

voip-1 / voip-2 (Asterisk PBX)

Назначение: обработка SIP/RTP трафика, управление очередями.

ПО: Asterisk 20.17.0.

Внешние IP: voip-1 (92.46.186.107), voip-2 (92.46.186.108).

ODBC: подключение к PostgreSQL на db-1 (через HAProxy на lb). DSN: asterisk.

AMI: на voip-1 (порт 5038).

Записи звонков: /var/spool/asterisk/monitor/

ВАЖНО — разные dialplan engines: - voip-1: загружены pbx_lua и pbx_ael - voip-2: загружены pbx_lua и pbx_ael - При failover поведение маршрутизации может отличаться. Планируется унификация.

mon-1 (Monitoring + Ops)

Назначение: мониторинг, Ansible, документация.

Сервисы systemd (НЕ Docker): - Prometheus: порт 9090 (prometheus.service) - Grafana 12.3.1: порт 3000 (grafana-server.service) - etcd: участник кластера (db-1, db-2, mon-1) - node_exporter: порт 9100

Docker контейнеры: - callbox-docs (nginx:alpine): порт 8080 — документация MkDocs

Ansible: /opt/ansible/callbox-ansible/

История изменений

  • 2026-02-12: Первичное наполнение документации, аудит и исправление по реальным данным.