88 lines
3.4 KiB
Markdown
88 lines
3.4 KiB
Markdown
# Magos
|
|
|
|
Программа для автоматизированного управления конфигурациями Angie, PTAF Nginx, SolidWall Nginx и Docker Compose.
|
|
|
|
## Описание
|
|
|
|
Программа выполняет следующие задачи:
|
|
|
|
1. Подключается к PostgreSQL БД (primary/secondary fallback)
|
|
2. Определяет instances текущего хоста по hostname
|
|
3. Для каждого клиента определяет WAF-вендор (PTAF или SolidWall)
|
|
4. **Для PTAF-клиентов:**
|
|
- Проверяет наличие Docker-образа, при необходимости скачивает
|
|
- Выделяет свободные порты для контейнеров
|
|
- Генерирует конфигурационные файлы Angie и Nginx
|
|
- Создаёт docker-compose.yml и запускает контейнеры
|
|
- Управляет graceful drain при масштабировании и миграции
|
|
5. **Для SolidWall-клиентов:**
|
|
- Генерирует конфигурационные файлы solidwall-nginx
|
|
- Выполняет reload solidwall-nginx при изменениях
|
|
6. Поддерживает идемпотентность — повторный запуск без изменений в БД не вносит изменений
|
|
|
|
## Конфигурация
|
|
|
|
Конфигурационный файл: `/etc/magos/magos.env`
|
|
|
|
```bash
|
|
# База данных
|
|
DB_USER=login
|
|
DB_PASSWORD=password
|
|
DB_NAME=waf_info
|
|
DB_PORT=5432
|
|
PRIMARY_DB_HOST=10.100.10.8
|
|
SECONDARY_DB_HOST=10.100.13.5
|
|
|
|
# Docker-образ PTAF (глобальный)
|
|
DOCKER_IMAGE=ptaf-core-nginx-agent:release-4.3.1.431839-debian-bullseye-nginx-1.28.0
|
|
DOCKER_IMAGE_URL=https://example.com/image.tar
|
|
|
|
# Параметры Nginx
|
|
WORKER_PROCESSES=4
|
|
WORKER_CONNECTIONS=64000
|
|
```
|
|
|
|
## Требования к хосту
|
|
|
|
Для корректной работы на PTAF-хостах необходимо зарезервировать диапазон портов:
|
|
|
|
```bash
|
|
# Добавить в /etc/sysctl.conf
|
|
net.ipv4.ip_local_reserved_ports=18000-23999
|
|
|
|
# Применить немедленно
|
|
sysctl -w net.ipv4.ip_local_reserved_ports=18000-23999
|
|
```
|
|
|
|
## Подробности
|
|
|
|
Изучить как работает программа можно в файле **ARCHITECTURE.md**.
|
|
|
|
Посмотреть зависимость работы программы от БД в файле **DATABASE_SCHEMA.md**.
|
|
|
|
## Диагностика
|
|
|
|
### Lock-файл завис
|
|
|
|
```bash
|
|
# Просмотреть PID
|
|
cat /var/lock/ptaf-main.lock
|
|
|
|
# Если процесс не существует — magos удалит lock автоматически при следующем запуске
|
|
# Если процесс завис — завершить вручную
|
|
kill {PID} && rm /var/lock/ptaf-main.lock
|
|
```
|
|
|
|
### Переназначить порты контейнера
|
|
|
|
```bash
|
|
rm /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent*/.ports.json
|
|
# При следующем запуске magos порты будут перевыделены
|
|
```
|
|
|
|
### Принудительно пересоздать контейнер
|
|
|
|
```bash
|
|
# Удалить контейнер — magos создаст новый при следующем запуске
|
|
docker-compose -f /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent001/docker-compose.yml down
|
|
```
|