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

CallBox Production Infrastructure Overview

Дата: 2026-01-23 Проект: CallBox — веб-интерфейс управления колл-центром на базе Asterisk


Серверы

Сервер Внутренний IP Внешний IP CPU RAM Storage ОС Роль
lb-1 10.10.19.10 188.130.238.189 2 4 GB 44 GB Ubuntu 24.04.3 LTS Load Balancer Primary
lb-2 10.10.19.11 92.47.181.152 2 2 GB 22 GB Ubuntu 24.04.3 LTS Load Balancer Secondary
web-1 10.10.19.21 4 8 GB 68 GB Ubuntu 24.04.3 LTS Application Server
web-2 10.10.19.22 4 8 GB 68 GB Ubuntu 24.04.3 LTS Application Server
db-1 10.10.19.31 4 16 GB 216 GB Ubuntu 24.04.3 LTS PostgreSQL Primary
db-2 10.10.19.32 4 16 GB 176 GB Ubuntu 24.04.3 LTS PostgreSQL Replica
redis-1 10.10.19.40 2 4 GB 24 GB Ubuntu 24.04.3 LTS Redis Master
voip-1 10.10.19.51 8 16 GB 74 GB Ubuntu 24.04.3 LTS Asterisk Primary
voip-2 10.10.19.52 8 16 GB 41 GB Ubuntu 24.04.3 LTS Asterisk Secondary
mon-1 10.10.19.60 2 4 GB 104 GB Ubuntu 24.04.3 LTS Monitoring

Установленное ПО

Сервер ПО и версии
lb-1, lb-2 nginx 1.24.0, node_exporter, iptables
web-1, web-2 Docker 29.1.5, Redis Sentinel 7.x, node_exporter
db-1, db-2 PostgreSQL 16.11, Patroni 4.1.0, etcd 3.x, node_exporter
redis-1 Redis 7.0.15, Redis Sentinel 7.0.15, node_exporter
voip-1, voip-2 Asterisk 20.17.0, ODBC PostgreSQL, node_exporter
mon-1 Prometheus (Docker), Grafana 12.3.1, etcd 3.x, Docker 29.1.5, node_exporter

Сетевая схема

                              INTERNET
                                  │
              ┌───────────────────┴───────────────────┐
              │                                       │
    ┌─────────▼─────────┐               ┌─────────────▼─────────┐
    │       lb-1        │               │         lb-2          │
    │ 188.130.238.189   │               │    92.47.181.152      │
    │ nginx + SIP NAT   │               │   nginx + SIP NAT     │
    └─────────┬─────────┘               └─────────────┬─────────┘
              │ 10.10.19.10                           │ 10.10.19.11
              │                                       │
══════════════╪═══════════════════════════════════════╪═══════════════════
              │              10.10.19.0/24            │
══════════════╪═══════════════════════════════════════╪═══════════════════
              │                                       │
              └───────────────────┬───────────────────┘
                                  │
        ┌─────────────────────────┼─────────────────────────┐
        │                         │                         │
        ▼                         ▼                         ▼
   ┌─────────┐              ┌─────────┐              ┌─────────┐
   │ web-1/2 │              │ db-1/2  │              │ voip-1/2│
   │ .21/.22 │──────────────│ .31/.32 │──────────────│ .51/.52 │
   │ Docker  │              │PostgreSQL│             │Asterisk │
   └────┬────┘              └────┬────┘              └─────────┘
        │                        │
        │                        ▼
        │                   ┌─────────┐
        └──────────────────►│ redis-1 │
                            │   .40   │
                            └─────────┘

                            ┌─────────┐
                            │  mon-1  │
                            │   .60   │
                            │Prometheus│
                            │ Grafana │
                            └─────────┘

Кластеры и репликация

PostgreSQL (Patroni + etcd)

  • Primary: db-1 (10.10.19.31)
  • Replica: db-2 (10.10.19.32) — streaming replication
  • etcd: db-1, db-2, mon-1 (порт 2379)
  • Failover: автоматический через Patroni

Redis (Sentinel)

  • Master: redis-1 (10.10.19.40:6379)
  • Sentinel nodes: redis-1, web-1, web-2 (порт 26379)
  • Cluster name: callbox-redis

Порты и сервисы

Порт Протокол Сервис Серверы
22 TCP SSH Все
80/443 TCP HTTP/HTTPS lb-1, lb-2
3000 TCP Frontend / Grafana web-1/2, mon-1
5060 UDP SIP lb-1, lb-2 → voip-1
5038 TCP Asterisk AMI voip-1, voip-2
5432 TCP PostgreSQL db-1, db-2
6379 TCP Redis redis-1
8000 TCP Backend API web-1, web-2
9090 TCP Prometheus mon-1
9100 TCP node_exporter Все
10000-20000 UDP RTP lb-1, lb-2 → voip-1

SSH доступ

# Jump-host
ssh sysadmin@188.130.238.189   # lb-1

# Внутренние серверы (через lb-1)
ssh 10.10.19.21   # web-1
ssh 10.10.19.31   # db-1
# и т.д.

Ключевые пути

Сервер Путь Назначение
lb-1 /opt/scripts/deploy-callbox.sh Скрипт деплоя
lb-1 /opt/git/callbox.git Git origin
web-1/2 /opt/callbox/ Код приложения
voip-1/2 /etc/asterisk/ Конфигурация Asterisk
voip-1 /var/spool/asterisk/monitor/ Записи разговоров

Мониторинг

  • Grafana: https://mon.b2g.kz
  • Prometheus: http://10.10.19.60:9090 (внутренняя сеть)
  • node_exporter: порт 9100 на всех серверах

Деплой

АКТУАЛЬНО: Деплой выполняется через Ansible с mon-1. См. devops-summary.md. Скрипт deploy-callbox.sh — legacy.

Ansible (актуальный способ):

ssh sysadmin@188.130.238.189 "ssh 10.10.19.60 'cd /opt/ansible/callbox-ansible && ansible-playbook playbooks/deploy.yml'"

Legacy скрипт (если Ansible недоступен):

# На lb-1
/opt/scripts/deploy-callbox.sh
# Подтвердить: yes

Скрипт выполняет на web-1 и web-2: 1. git fetch && git reset --hard origin/master 2. docker compose down && build && up -d


Детальная документация

  • servers.md — подробное описание каждого сервера
  • network.md — сетевая архитектура, firewall-правила
  • services.md — описание всех сервисов
  • backup.md — резервное копирование
  • devops-summary.md — краткая справка для операций