Инструкция по установке Postgres Pro Enterprise Manager

Postgres Pro © 2016–2024 — Общество с ограниченной ответственностью «Постгрес Профессиональный».

Инструкция содержит описание установки и удаления PostgresPro Enterprise Manager (далее PPEM).

Общее описание

PostgresPro Enterprise Manager (PPEM) состоит из следующих компонентов:

  • сервер PPEM - WEB-приложение, которое устанавливается на отдельный сервер и предоставляет центр управления инфраструктурой.
  • агенты PPEM - службы которые устанавливаются на сервера с СУБД, взаимодействуют с сервером PPEM, принимают команды, осуществляют контроль и управление экземплярами СУБД.

Номера версий

Номера версий РРЕМ состоят из номеров основной и дополнительной (минорной) версии, в версию также включен номер пакета исправлений.  
Например, для номера 1.2.1 число 1 обозначает основную версию, 2 - дополнительную, а 1 - версию пакета исправлений.

Системные требования

Для развертывания сервера PPEM требуется один сервер. Это может быть как физическая, так и виртуальная машина со следующей минимальной конфигурацией:

  • CPU: 2
  • Оперативная память: 4 GB
  • Дисковое пространство: 40 GB SSD

При увеличении количества одновременно работающих пользователей рекомендуется увеличить количество процессорных ядер. При увеличении количества агентов и обслуживаемых экземпляров СУБД рекомендуется увеличить объемы памяти и дискового пространства.

Развертывание агента PPEM выполняется на узле с экземпляром СУБД. Это может быть как физическая, так и виртуальная машина со следующей минимальной конфигурацией:

  • CPU: 1
  • Оперативная память: 1 GB
  • Дисковое пространство: 5 GB HDD

Программные требования:

  • ОС Linux:

Ubuntu 20.04, 22.04
RHEL 8, 9
RedOS 7.3
Debian 10, 11, 12
AstraLinux 1.7 (Smolensk)
AltLinux 8.2, 9, 10

  • Python >=3.7

Развертывание PPEM

Сводится к нескольким этапам:

  • установка репозиториев пакетного менеджера;
  • установка Postgres Pro для репозитория PPEM;
  • настройка аутентификации в PostgreSQL для PPEM;
  • установка и запуск сервера PPEM;
  • регистрация агентов PPEM;
  • установка и запуск агентов PPEM;
  • добавление экземпляров СУБД в PPEM.

Установка репозиториев пакетного менеджера

Установка репозиториев доступна в двух вариантах:

  1. установка из репозитория PostgresPro (подходит для систем имеющих доступ в Интернет)
  2. установка из самодостаточных пакетов (подходит для систем без доступа к Интернет)

Независимо от выбранного способа дальнейшая установка PPEM осуществляется с помощью системного пакетного менеджера Linux.

Примечание: Ниже приводятся примеры установки для Debian Linux. В зависимости от используемого дистрибутива и пакетного менеджера, команды, параметры и пути могут отличаться.

В случае установки с помощью репозитория PostgresPro, необходимо скачать установочный скрипт и подключить репозитории PostgresPro в которые будет включен и репозиторий PPEM:

wget https://repo.postgrespro.ru/ppem/ppem/keys/pgpro-repo-add.sh

chmod +x pgpro-repo-add.sh

sh pgpro-repo-add.sh

Для систем без доступа в Интернет репозиторий PPEM может быть установлен с помощью самодостаточных пакетов для ОС Linux. Пакеты включают в себя все необходимые зависимости.

Самодостаточное пакеты PPEM доступны для загрузки из открытого Git-репозитория PostgresPro: https://pubgit.postgrespro.ru/ppem/ppem/-/packages. Для загрузки, также, можно воспользоваться утилитами wget или curl.

После загрузки необходимо выдать права на исполнение и запустить установку:

$ chmod +x ppem-debian-12-<номер_версии_ррем>-amd64.run
$ sudo ./ppem-debian-12-<номер_версии_ррем>-amd64.run

Установка предполагает в себя распаковку служебных файлов и настройку локального репозитория пакетов.

Независимо от выбранного способа установки репозиториев следующим шагом нужно обновить служебные данные пакетного менджера:

$ sudo apt-get update

После обновления служебных данных, установка PPEM будет доступна из подключенного локального репозитория с помощью системного пакетного менеджера:

  •  pgpro-manager - сервер PPEM для установки на выделенный сервер;
  •  pgpro-manager-agent - агент PPEM для установки на целевые серверы с экземплярами СУБД.

Примечание: При развертывании PPEМ настоятельно рекомендуется устанавливать сервер и агентов одной версии!

Установка Postgres Pro для репозитория PPEM

Сервер PPEM хранит все служебные данные в репозитории на основе любой редакции СУБД Postgres Pro.

Перед запуском сервера PPEM следует установить сервер СУБД Postgres Pro (рекомендуется редакция Enterprise, актуальной версии на момент установки).  

Примечание:  Если сервер СУБД уже установлен, то этот шаг можно пропустить

ПримечаниеНиже приводится пример установки редакции Postgres Pro Enterprise 16

sudo apt-get install postgrespro-ent-16

После установки сервер СУБД будет запущен автоматически, для проверки работоспособности следует выполнить команду:

sudo systemctl status postgrespro-ent-16.service

Проверка статуса должна отображать состояние "active" и дерево процессов сервера СУБД.

Настройка аутентификации в PostgreSQL для PPEM

Для успешной работы сервера PPEM с репозиторием или агента с целевым экземпляром следует разрешить аутентификацию на стороне сервера СУБД.

Необходимо отредактировать файл аутентификации pg_hba.conf и в самом простом случае, включить метод "trust" в правилах для локальных UNIX и IPv4-подключений:

# "local" is for Unix domain socket connections only
local   all             all                                                  trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

Примечание: такой способ не рекомендуется в производственной эксплуатации из соображений безопасности. Более подробную информацию о настройке аутентификации можно получить в официальной документации к СУБД Postgres Pro.

Для вступления в силу новых правил следует выполнить перегрузку конфигурации СУБД:

$ sudo systemctl reload postgrespro-ent-16.service

Установка и запуск сервера PPEM

Установка сервера PPEM выполняется с помощью пакетного менеджера.

$ sudo apt-get install pgpro-manager

Перед запуском следует отредактировать файл /etc/pgpro-manager.conf:

  • в секции repository указать параметры для подключения к СУБД репозитория (можно использовать значения по-умолчанию);
  • в секции plugins в параметре enabled следует проверить список плагинов; рекомендуется включить плагины pg_stat_statements, pg_query_state, conf_preset, pgpro_pwr.

Используя конфигурацию сервера РРЕМ следует выполнить инициализацию базы репозитория.

Примечание:

  • Указанные пользователь и базы в секции репозитория будут созданы автоматически, создавать их предварительно НЕ нужно.
  • Для RedHat Linux и Oracle Linux следует добавить символическую ссылку командой: "ln -s /usr/share/pgpro-manager /usr/local/pgpro-manager"

Инициализация репозитория выполняется командой:

$ sudo init-pgpro-manager-repo --conf /etc/pgpro-manager.conf

После инициализации следует запустить сервис pgpro-manager:

$ sudo systemctl start pgpro-manager

$ sudo systemctl status pgpro-manager

Проверка статуса должна отображать состояние "active" и дерево процессов службы PPEM.

Web-интерфейс PPEM доступен по реквизитам указанным в секции web в pgpro-manager.conf (по-умолчанию: http://{IP-адрес сервера}:8877). Логин и пароль по-умолчанию: admin/admin.

Регистрация агентов PPEM

В веб-интерфейсе в разделе "Настройки" – "Настройки агентов", в правом верхнем углу следует нажать кнопку "Добавить агент". В открывшемся диалоговом окне заполните следующие поля:

Название - название сервера СУБД где будет установлен и запущен агент PPEM.
Хост - IP адрес или имя хоста.
Порт - порт агента PPEM, по-умолчанию 8899.
Протокол - http
Период опроса доступности, сек. - 10
Статус - Ок

Выбираем "Сохранить".

В списке агентов появится запись, в которой присутствует ключ аутентификации (поле auth), например: Z8RF0J4xmmcHTnZfYBka1ngDYgcvLlgQ

Установка и запуск агентов PPEM

Установка агента PPEM выполняется с помощью пакетного менеджера.

$ sudo apt-get install pgpro-manager-agent

Агент PPEM способен обслуживать любое количество экземпляров СУБД установленных на сервере. Перед запуском следует отредактировать файл /etc/pgpro-manager-agent.conf:

  • в секции networking в параметре manager_host указать IP-адрес или имя узла где установлен и работает сервер PPEM;
  • в секции networking в параметре manager_key указать ключ аутентификации полученный в интерфейсе PPEM (раздел "Настройки" – "Настройки агентов").

Если по каким-то причинам ключ аутентификации был изменен на стороне сервера PPEM, его следует также изменить и в конфигурации агента, с последующим перезапуском сервиса pgpro-manager-agent.

После установки пакета следует запустить сервис pgpro-manager-agent:

$ sudo systemctl start pgpro-manager-agent

$ sudo systemctl status pgpro-manager-agent

Проверка статуса должна отображать состояние "active" и дерево процессов службы PPEM.

Примечание: Сервер PPEM при работе с СУБД репозитория, автоматически выполняет роль агента, поэтому на сервер PPEM, дополнительно устанавливать пакет pgpro-manager-agent НЕ нужно.

Добавление экземпляров СУБД в PPEM

В веб-интерфейсе в разделе "Экземпляры", в правом верхнем углу следует нажать кнопку "Добавить экземпляр". В открывшемся диалоговом окне нужно выбрать способ добавления:

  • Добавление экземпляра вручную.
  • Добавление экземпляра с обнаружением.

Добавление экземпляра СУБД вручную.

  • Выбираем в "Поиск экземпляра" пункт "Добавление экземпляра вручную", а в "Тип инициализации" выбираем "Добавить существующий".
  • В следующем окне заполняем следующие данные:
    • Название - название сервера СУБД, где установлен агент PPEM.
    • Порт - порт на котором сервер СУБД принимает подключения, по умолчанию 5432.
    • Хост / Unix socket - Адрес для подключения к экземпляру. Это или сетевой (IPv4 или IPv6) адрес (значение listen_addresses конфигурации СУБД, обычно localhost), или путь к каталогу где размещается UNIX-сокет (значение unix_socket_directories конфигурации СУБД, обычно /tmp или /var/run/postgresql).
    • pgdata - путь к основному каталогу данных СУБД (так называемый PGDATA). Например "/var/lib/pgpro/ent-15/data".
    • Агент - выбирается ранее созданный агент (или "Локальный агент").
    • BINDIR - путь к исполняемым файлам СУБД. Например "/opt/pgpro/ent-15/bin".
    • Системный пользователь - пользователь операционный системы от имени которого запущена сервер СУБД. По-умолчанию postgres.
    • Супер-пользователь БД - пользователь СУБД с правами SUPERUSER. По-умолчанию postgres.
    • Пароль супер-пользователя БД - пароль выше указанного пользователя СУБД.
    • Конфигурационный файл - путь к основному конфигурационному файлу сервера СУБД. Например "/var/lib/pgpro/ent-15/data/postgresql.conf".
    • Период опроса экземпляра, сек. - интервал в течение которого агент PPEM будет опрашивать состояние экземпляра СУБД. По-умолчанию 3 секунды.
    • systemd unit - название службеного юнита systemd который используется для управления службой СУБД. Например "postgrespro-ent-15".
  • Для добавления следует нажать кнопку "Сохранить", в списке экземпляров добавится новый экземпляр СУБД.

Примечание: если целевой экземпляр СУБД работает на сервере  где работает сервер РРЕМ, то в поле "Агент" следует выбрать "Локальный агент"

Добавление экземпляра с обнаружением.

  • Выбираем в "Поиск экземпляра" пункт "Добавление экземпляра с обнаружением", а в "Тип инициализации" выбираем "Добавить существующий".
  • В следующем окне в списке Агент следует выбрать агента с помощью которого будет выполняться поиск. При необходимости можно указать директории в которых будет выполняться поиск на предмет основного каталога данных (так называемый PGDATA). Для поиска следует нажать кнопку "Начать поиск".
  • В случае успешно найденных экземпляров следует выбрать экземпляр и нажать кнопку "Далее".
  • В параметрах экземпляра проверяем правильность данных и заполняем следующие настройки:
    • Название - название экземпляра СУБД, где установлен агент PPEM.
    • Пароль супер-пользователя СУБД - пароль пользователя СУБД с правами SUPERUSER.
    • Период опроса экземпляра, сек. - интервал в течение которого агент PPEM будет опрашивать состояние экземпляра СУБД. По-умолчанию 3 секунды.
  • Для добавления следует нажать кнопку"Выполнить", в списке экземпляров добавится новый экземпляр СУБД.

Дополнительная настройка

Настройка HTTPS

Настройка HTTPS в web-интерфейсе сервера PPEM

Для включения HTTPS в системе должны быть ключ (private key) и сертификат (certificate), обычно они находятся в /etc/ssl/certs.

В конфигурации сервера PPEM (/etc/pgpro-manager.conf) в секции "web" нужно указать пути где расположены ключ и сертификат:

  • ssl_key - Путь к ключу сертификата.
  • ssl_cert - Путь к сертификату.

Например, если сертификат и ключ лежат в директории /etc/ssl/certs/pgpro-manager и называются pgpro-manager-web.crt и pgpro-manager-web.key соответственно, то секция "web" может выглядеть так: 

[web]
host = 0.0.0.0
port = 443
access_control_allow_origin = *
web_app = on
web_app_path = /usr/share/pgpro-manager/web-app
ssl_cert = /etc/ssl/certs/pgpro-manager/pgpro-manager-web.crt
ssl_key = /etc/ssl/certs/pgpro-manager/pgpro-manager-web.key

В случае если ключ и сертификат упакованы в PEM-файл, то путь к этому файлу указывается в обоих параметрах:

[web]
host = 0.0.0.0
port = 443
access_control_allow_origin = *
web_app = on
web_app_path = /usr/share/pgpro-manager/web-app
ssl_cert = /etc/ssl/certs/pgpro-manager/pgpro-manager-web.pem
ssl_key = /etc/ssl/certs/pgpro-manager/pgpro-manager-web.pem

Настройка HTTPS между сервером и агентами PPEM

Для включения HTTPS на стороне агента, в системе где запущен агент должны быть ключ (private key) и сертификат (certificate), обычно они находятся в /etc/ssl/certs.

В конфигурации агента PPEM (/etc/pgpro-manager-agent.conf) в секции "networking" нужно указать пути где расположены ключ и сертификат:

  • ssl_key - путь к ключу сертификата.
  • ssl_cert - путь к сертификату.

В настройках агента в РРЕМ необходимо указать, что данный агент использует протокол HTTPS.

Использование локального корневого сертификата:

Если используются сертификаты, которые подписаны центрами авторизации, корневые сертификаты которых не установлены в системе, то путь к корневому сертификату можно указать в секции "agent" в параметре ca_cert конфигурационного файла сервера РРЕМ.

На данный момент РРЕМ может использовать только один нестандартный корневой сертификат для общения со всеми агентами.

Настройка авторизации через LDAP

При настроенном типе авторизации через LDAP после ввода пользователем логина и пароля система конструирует DN (Distinguished Name) пользователя для каталога LDAP и делает BIND запрос. Если запрос проходит успешно, то про первом заходе пользователя LDAP каталога происходит создание записи
пользователя PPEM c сохранением DN в каталоге. После чего формируется авторизационный тикет как для обычного пользователя. Если же пользователь с так им DN уже есть репозитории PPEM, выдается тикет без изменений базы пользователей.

После каждого успешного BIND в каталоге запрашивается информация о группах авторизованного пользователя. Если группы из каталога имеют соответствие по DN с группами пользователей DN, то новый пользователь PPEM включается в эти группы. Если пользователь уже присутствует в репозитории, то ему назначаются группы, которых у него нет, а если у него назначены какие-то группы с указанным DN, но таких групп не присутствует в ответе каталога, то пользователь исключается из участия в этих группах.

Роли пользователей LDAP определяются ролями, которые назначены группам, в которых они участвуют.
При каждой успешной авторизации так же у пользователей будут обновлены метаданные такие как Имя, Фамилия, электронная почта.

Настройки доступа и схемы LDAP

Для использования авторизации по протоколу LDAP в конфигурационном файле PPEM /etc/pgpro-manager.conf в секции "plugins" в параметре "enabled=" необходимо заменить simple_auth на ldap_auth (при этом функциональность обычной авторизации сохраняется).

Список настроек секции "ldap":

  • host - адрес или имя LDAP сервера
  • port - порт LDAP сервера
  • use_ssl - использовать SSL для соединения
  • bind_username - имя пользователя с расширенными привилегиями bind_password - пароль пользователя с расширенными привилегиями. base_dn - основа строки для построения DN
  • prefix_user_dn - дополнение к строке base_dn, когда строится DN пользователя. base_user_dn = prefix_user_dn + "," + base_dn. prefix_group_dn - дополнение к строке base_dn, когда строится DN группы. base_group_dn = prefix_group_dn + "," + base_dn.
  • user_class - название класса объектов пользователя. Например, user.
  • user_name_attr - название атрибута, где хранится название аккаунта. Обычно cn или sAMAccountName для AD. user_first_name_attr - название атрибута, где хранится имя пользователя. Например, givenName. user_last_name_attr - название атрибута, где хранится фамилия пользователя. Например, sn.
  • base_dn - основа строки для построения DN / объект каталога, с которого начинается поиск
    (Пример:
    если base_dn = dc=ppem,dc=l,dc=mycompany,dc=ru
    и prefix_user_dn = ou=users
    То итоговый DN будет сформирован так: cn=viewer,ou=users,dc=ppem,dc=l,dc=mycompany,dc=ru
    где viewer - имя пользователя, которое вводится при логине)
  • user_display_name_attr - название атрибута, где хранится название пользователя для показа. Например, displayName. user_email_attr - название атрибута, где хранится адрес электронной почты пользователя. Например, email. group_class - название класса объектов группы. Например, group.
  • group_name_attr - название атрибута, где хранится название группы. Обычно, cn.
  • group_members_attr - название атрибута группы, где хранится список DN пользователей, входящих в эту группу.
  • user_membership_attr - название атрибута пользователя, где хранится список групп, в которые он входит.

Обновление РРЕМ

Для обновления основной или минорной версии РРЕМ необходимо обновить пакеты и обновить схему репозитория при помощи утилиты ppem-migration.

Обновление сервера РРЕМ:

   1) остановить службу сервера РРЕМ: sudo systemctl stop pgpro-manager                                                                                                 

   2) скачать/установить пакеты новой версии согласно инструкции по установке (п. "Установка и запуск сервера РРЕМ")                                                 

   3) выполнить обновление схемы репозитория: sudo ppem-migration -c /etc/pgpro-manager.conf upgrade                

   4) запустить службу сервера РРЕМ: sudo systemctl start pgpro-manager

Обновление агента PPEM:

  1) остановить службу агента PPEM: sudo systemctl stop pgpro-manager-agent

  2) скачать/установить пакеты новой версии согласно инструкции по установке (п. "Установка и запуск агентов РРЕМ")

  3) запустить службу агента PPEM: sudo systemctl start pgpro-manager-agent

Удаление PPEM

Удаление сервера РРЕМ

Для удаления сервера PPEM следует остановить соответствующие службы и средствами пакетного менеджера выполнить удаление и очистку пакетов PPEM из системы.

Примечание: удаление компонентов PPEM другими, не описанными инструкцией способами нежелательно, это может привести к неконсистентному состоянию системы!

$ sudo systemctl stop pgpro-manager

$ sudo apt-get remove pgpro-manager

$ sudo apt-get purge pgpro-manager

Объекты репозитория следует удалить отдельно (база данных репозитория, табличное пространство, пользователь БД) с помощью следующих SQL-комманд:

# DROP DATABASE IF EXISTS pgpro_manager_repo;

# DROP TABLESPACE IF EXISTS compressed_tbs;

# DROP USER IF EXISTS pgpro_manager;

На сервере где был размещен репозиторий СУБД также удалить каталог табличного пространства:

$ sudo rm -rf /var/lib/pgpro/ent-15/cfs_compressed

Удаление агента PPEM

Для удаления агента PPEM достаточно остановки службы и удаления пакетов (включая очистку).

$ sudo systemctl stop pgpro-manager-agent

$ sudo apt-get remove pgpro-manager-agent

$ sudo apt-get purge pgpro-manager-agent