Skip to main content

Установка PostgreSQL для кластера


Page Type: Installation Component: ПринтМенеджер Domain: Infrastructure Product Versions: 4.x OS: Linux Status: Draft Related Components: PostgreSQL, Docker

Установка 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 при настройке системы управления печатью:

  • DB_HOST — адрес сервера базы данных.
  • POSTGRES_LOGIN — логин учетной записи с правами доступа.
  • POSTGRES_PASSWORD — пароль учетной записи.

Next steps

  • Установка NFS-хранилища
  • Установка балансировщика 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 — число серверов ПМ

Связанные страницы

  • Подготовка к установке кластера Active-Active
  • Установка NFS-хранилища
  • Установка балансировщика HAProxy