Установка PostgreSQL для кластера
Цель
Развертывание базы данных PostgreSQL для кластерной конфигурации ПринтМенеджера.
Предусловия
- Подготовлен сервер для базы данных (
DB_NFS). - Определено количество серверов ПринтМенеджер для расчёта
max_connections.
Расчёт максимального количества подключений к БД
Для обеспечения достаточного количества соединений с базой данных настройте параметр max_connections в конфигурационном файле PostgreSQL.
Используйте следующую формулу:
max_connections = (3*N+70)*T
где:
N: количество процессорных ядер на одном сервере ПринтМенеджера (ПринтМенеджер).T: количество серверов ПринтМенеджер в системе.
Пример: Для 3 серверов ПринтМенеджер с 6 ядрами каждый:
max_connections = (3 х 6 + 70) х 3 = 264.
Шаги установки
Шаг 1. Установите Docker и Docker Compose
Для Ubuntu, Astra Linux и ALT Linux:
sudo apt install docker.io -y
sudo apt install docker-compose -y
sudo systemctl enable docker --now
sudo systemctl status docker
Для РЕД ОС и Red Hat Enterprise Linux:
sudo dnf install -y docker-ce docker-ce-cli
sudo dnf install -y docker-compose
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
Шаг 2. Создайте файл docker-compose.yml
Выполните команду для создания файла:
touch docker-compose.yml
Затем отредактируйте файл:
nano docker-compose.yml
Вставьте следующую конфигурацию:
version: "3.7"
services:
postgres:
image: postgres:15.15-alpine
volumes:
- postgres15:/var/lib/postgresql/data
command: postgres -N 300
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: printmanager
PGDATA: /var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
ports:
- "5432:5432"
restart: always
volumes:
postgres15:
Важно: Параметры
POSTGRES_USERиPOSTGRES_PASSWORDизмените на свои значения. Эти данные потребуются для настройки системы.В строке
command: postgres -N 300вместо300укажите значение максимального количества подключений к БД, исходя из количества используемых ПринтМенеджеров.
Шаг 3. Создайте директорию для PostgreSQL
Переместите файл docker-compose.yml в новую директорию:
sudo mkdir /opt/postgres15
sudo mv docker-compose.yml /opt/postgres15
cd /opt/postgres15
Шаг 4. Запустите PostgreSQL через Docker Compose
Выполните команду:
sudo docker-compose up -d
Это запустит контейнер с PostgreSQL и выполнит его настройку.
Возможные ошибки
В Astra Linux может появиться ошибка:
docker.errors.DockerException: Error while fetching server API version: Not supported URL scheme http+docker
Причина: установлен устаревший пакет docker-compose.
Решение: выполните команды:
sudo apt purge docker-compose
sudo apt install docker-compose-v2
Как проверить установку
Убедитесь, что контейнер запущен и база данных доступна:
sudo docker ps
Проверьте работоспособность базы, используя ID её контейнера из предыдущей команды:
sudo docker logs <container_id>
Параметры для дальнейшей настройки
Используйте указанные параметры POSTGRES_USER, POSTGRES_PASSWORD и POSTGRES_DB при настройке на этапе Установка балансировщика HAProxy.
Следующие шаги
Ожидаемый результат
- Контейнер PostgreSQL запущен (
sudo docker psпоказывает статусUp). - База данных доступна; подготовлены параметры
DB_HOST,POSTGRES_LOGIN,POSTGRES_PASSWORDдля указания при установке ПринтМенеджеров.
Типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
django.db.utils.OperationalError: FATAL: sorry, too many clients already |
Превышено максимальное количество подключений к PostgreSQL после добавления новых узлов. | Увеличить max_connections в конфигурации PostgreSQL: max_connections = (3×N + 70) × Tгде N — количество ядер CPU, T — итоговое число серверов ПринтМенеджер в кластере |