Серверы
Сводная таблица
| Сервер | 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: Первичное наполнение документации, аудит и исправление по реальным данным.