Установка и настройка

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

Рекомендуется предварительно ознакомиться с разделом Быстрый старт.

Установка в средах с усиленными мерами безопасности

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

При выполнении команд, приведённых в этом разделе, обратите внимание на следующие особенности:

  • Приведены команды для операционной системы Debian Linux. При использовании другой версии операционной системы используйте соответствующие команды.
  • В командах указаны стандартные имена для объектов, например ppem для базы данных репозитория. При необходимости можно указать другие имена.

Процесс установки состоит из следующих этапов:

  1. Убедитесь, что выполнены предварительные требования.
  2. Создайте пользователей операционной системы.
  3. Настройте менеджер.
  4. Настройте агенты.

PPEM будет установлен. Вы можете обновить страницу браузера с веб-приложением и начать работу.

Предварительные требования

Перед началом установки прочитайте следующую информацию и выполните необходимые действия:

  1. Подготовьте серверы, на которых будет установлен PPEM, в соответствии с аппаратными и программными требованиями. Потребуется как минимум один сервер.
  2. Установите экземпляр СУБД Postgres Pro как минимум на одном из серверов. За подробной информацией по установке обратитесь к официальной документации Postgres Pro.

Создайте пользователей операционной системы

Создайте отдельных пользователей операционной системы на всех серверах:

# useradd ppem

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

Настройте менеджер

Чтобы настроить менеджер, выполните следующие действия на сервере с СУБД Postgres Pro:

  1. Установите репозиторий:

    # wget https://repo.postgrespro.ru/ppem/ppem/keys/pgpro-repo-add.sh
    # sh pgpro-repo-add.sh
    # apt update
  2. Установите менеджер:

    # apt install ppem ppem-gui

    На ваше локальное устройство скачается конфигурационный файл менеджера /etc/ppem-manager.yml.

  3. Создайте базу данных репозитория:

    # sudo -u postgres createdb -O ppem ppem
  4. Создайте пользователя СУБД, от имени которого менеджер будет подключаться к базе данных репозитория:

    # sudo -u postgres createuser --pwprompt ppem

    При выполнении команды укажите пароль для пользователя СУБД.

  5. Убедитесь, что пользователь СУБД может подключиться к базе данных:

    # psql -h localhost -U ppem -d ppem

    При возникновении проблем с подключением убедитесь, что в конфигурационный файл pg_hba.conf добавлено HBA-правило, разрешающее пользователю СУБД подключаться к базе данных, а также указан метод авторизации. За более подробной информацией обратитесь к официальной документации Postgres Pro по конфигурационному файлу pg_hba.conf.

  6. В конфигурационном файле менеджера /etc/ppem-manager.yml выполните следующие действия:

    • Укажите имя базы данных репозитория с помощью параметра repo.name:

      repo:
        name: "ppem"
    • Укажите имя и пароль пользователя СУБД с помощью параметров repo.user и repo.password:

      repo:
        user: "ppem"
        password: "<пароль_пользователя_СУБД>"
    • Укажите URL для подключения менеджера к базе данных репозитория с помощью параметра repo.url:

      repo:
        url: "postgres://ppem:<пароль_пользователя_СУБД>@localhost/ppem"

      За подробной информацией о формате URL обратитесь к официальной документации Postgres Pro по строкам параметров подключения.

  7. Настройте запуск службы менеджера от имени созданного пользователя операционной системы, выполнив следующие действия:

    1. Начните редактирование юнита systemd:

      # systemctd edit ppem
    2. В разделе [Service] укажите имя пользователя операционной системы:

      [Service]
      User=ppem
    3. Убедитесь, что пользователь операционной системы имеет право чтения конфигурационного файла менеджера /etc/ppem-manager.yml. Если право отсутствует, выполните следующие команды:

       # chown ppem:ppem /etc/ppem-manager.yml
       # chmod 400 /etc/ppem-manager.yml
    4. Сохраните параметры юнита systemd, после чего перезагрузите его:

       # systemctl daemon-reload
  8. Запустите службу менеджера и добавьте её в автозагрузку:

    # systemctl start ppem
    # systemctl enable ppem

На сервере будет развёрнуто веб-приложение.

Настройте агенты

Чтобы настроить агенты, выполните следующие действия на всех серверах:

  1. Установите агент:

    # apt install ppem-agent

    На ваше локальное устройство скачается конфигурационный файл агента /etc/ppem-agent.yml.

  2. Создайте пользователя СУБД, от имени которого агент будет подключаться к базе данных репозитория:

    # sudo -u postgres createuser --pwprompt ppem_agent

    При выполнении команды укажите пароль для пользователя СУБД.

  3. Назначьте пользователю СУБД права на чтение системного каталога и запуск функций. Рекомендуется назначить следующие права:

    GRANT pg_monitor, pg_maintain, pg_signal_backend, pg_read_all_settings TO ppem_agent;

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

    GRANT EXECUTE ON FUNCTION pg_catalog.pg_stat_file(TEXT) TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_stat_file(TEXT, BOOLEAN) TO ppem_agent;
    GRANT SELECT ON pg_catalog.pg_statistic TO ppem_agent;
    GRANT SELECT ON pg_catalog.pg_config TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_config() TO ppem_agent;
    GRANT SELECT ON pg_catalog.pg_file_settings TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_show_all_file_settings() TO ppem_agent;
    GRANT SELECT ON pg_catalog.pg_authid TO ppem_agent;

    Для резервного копирования с помощью pg_probackup необходимо назначить право REPLICATION и другие права:

    ALTER ROLE ppem_agent WITH REPLICATION;
    
    GRANT USAGE ON SCHEMA pg_catalog TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_backup_start(text, boolean) TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_backup_stop(boolean) TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO ppem_agent;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_checkpoint() TO ppem_agent;

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

  4. Убедитесь, что пользователь СУБД может подключиться к базе данных репозитория:

    # psql -h localhost -U ppem_agent -d ppem

    При возникновении проблем с подключением убедитесь, что в конфигурационный файл pg_hba.conf добавлено HBA-правило, разрешающее пользователю СУБД подключаться к базе данных, а также указан метод авторизации. За более подробной информацией обратитесь к официальной документации Postgres Pro по конфигурационному файлу pg_hba.conf.

  5. Получите API-ключ для настройки агента, выполнив следующие действия:

    1. Войдите в веб-приложение.
    2. Скопируйте API-ключ из отобразившейся инструкции по установке агентов и сохраните его.
  6. Укажите параметры агента в конфигурационном файле /etc/ppem-agent.yml:

    • agent.name: уникальное имя агента.
    • agent.manager.url: URL для подключения агента к менеджеру в формате <схема>://<веб-адрес_менеджера>/<путь_к_версии_API>.
    • agent.manager.api_key: ранее полученный API-ключ для подключения агента к менеджеру.
    • agent.instance.connection_defaults.user и agent.instance.connection_defaults.password: имя и пароль пользователя СУБД.
    • http.server.address и http.server.port: IP-адрес сервера и номер порта для входящих сетевых подключений. Чтобы включить прослушивание всех IP-адресов и портов, не указывайте значения для этих параметров.

    Пример конфигурационного файла /etc/ppem-agent.yml:

    agent:
      name: "local"
      manager:
        url: "https://ppem.example.org/v1"
        api_key: "741c5c39-3ac9-402f-aeba-e2fa05bd3037"
      instance:
        connection_defaults:
          user: "ppem_agent"
          password: "<пароль пользователя СУБД>"
    http:
      server:
        address: "192.0.2.1"
        port: "80"
  7. Назначьте созданному пользователю операционной системы права суперпользователя на работу с целевыми каталогами с помощью команд chown и chmod. Для запуска, остановки и перезапуска экземпляров СУБД пользователю операционной системы также рекомендуется назначить следующие права:

    Cmnd_Alias PG_SYS = \
        /usr/bin/systemctl status postgresql*.service, \
        /usr/bin/systemctl stop postgresql*.service, \
        /usr/bin/systemctl start postgresql*.service, \
        /usr/bin/systemctl restart postgresql*.service, \
        /usr/bin/systemctl reload postgresql*.service
    
    Cmnd_Alias PG_CTL = \
        /usr/lib/postgresql/17/bin/pg_ctl, \
        /usr/lib/postgresql/16/bin/pg_ctl
    
    ppem ALL = (root) NOPASSWD: PG_SYS
    ppem ALL = (postgres) NOPASSWD: PG_CTL
  8. Настройте запуск службы агента от имени пользователя операционной системы, выполнив следующие действия:

    1. Начните редактирование юнита systemd:

      # systemctd edit ppem-agent
    2. В разделе Service укажите пользователя операционной системы:

      [Service]
      User=ppem
    3. Убедитесь, что пользователь операционной системы имеет право чтения конфигурационного файла агента /etc/ppem-agent.yml. Если право отсутствует, выполните следующие команды:

       # chown ppem:ppem /etc/ppem-agent.yml
       # chmod 400 /etc/ppem-agent.yml
    4. Сохраните параметры юнита systemd, после чего перезагрузите его:

       # systemctl daemon-reload
  9. Запустите службу агента и добавьте её в автозагрузку:

    # systemctl start ppem-agent
    # systemctl enable ppem-agent

Установка и настройка средств резервного копирования и восстановления

Резервное копирование осуществляется в PPEM посредством pg_probackup. Вам нужно установить pg_probackup вручную на всех серверах. Версия pg_probackup должна соответствовать версии экземпляров СУБД.

Существуют две редакции pg_probackup — для Postgres Pro Standard, а также для Postgres Pro Enterprise. Доступные в PPEM возможности резервного копирования зависят от установленной редакции pg_probackup.

За подробной информацией об установке обратитесь к официальной документации Postgres Pro по pg_probackup для Postgres Pro Standard или Postgres Pro Enterprise.

Также рекомендуется ознакомиться с примером установки pg_probackup с помощью пакетного менеджера APT (для Debian-совместимых операционных систем).

После установки pg_probackup агент автоматически найдёт его и сообщит об этом менеджеру. Затем на сервере станет доступно резервное копирование.

Установленный pg_probackup рекомендуется настроить. Процесс настройки состоит из следующих этапов:

  1. Настройте пользователей СУБД.
  2. Настройте потоковое резервное копирование.
  3. Настройте непрерывное архивирование WAL.

Настройте пользователей СУБД

Создайте отдельных пользователей СУБД на всех серверах и назначьте им права для резервного копирования с помощью pg_probackup. За подробной информацией обратитесь к официальной документации Postgres Pro по настройке кластера баз данных для Postgres Pro Standard или Postgres Pro Enterprise.

Настройте потоковое резервное копирование

Настройте потоковое резервное копирование на всех серверах. За подробной информацией обратитесь к официальной документации Postgres Pro по настройке потокового резервного копирования для Postgres Pro Standard или Postgres Pro Enterprise.

Настройте непрерывное архивирование WAL

Настройте непрерывное архивирование WAL на всех серверах для обеспечения восстановления на определённый момент времени (PITR). Это можно сделать одним из следующих способов:

Пример установки pg_probackup с помощью APT

В этом разделе приведён пример установки pg_probackup на сервере с экземпляром СУБД и PPEM. Рекомендуется предварительно ознакомиться с разделом Установка и настройка средств резервного копирования и восстановления.

Процесс установки состоит из следующих этапов:

  1. Запустите новый сеанс от имени суперпользователя:

    $ sudo -s
  2. Добавьте ключ GPG для репозитория pg_probackup. Для этого может потребоваться установка дополнительных утилит:

    # apt install gpg wget
    # wget -qO - https://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG-PROBACKUP | \
    # tee /etc/apt/trusted.gpg.d/pg_probackup.asc
  3. Настройте репозиторий пакетов:

    # . /etc/os-release
    # echo "deb [arch=amd64] https://repo.postgrespro.ru/pg_probackup/deb $VERSION_CODENAME  main-$VERSION_CODENAME " | tee /etc/apt/sources.list.d/pg_probackup.list
  4. Обновите метаданные менеджера пакетов, чтобы пакеты pg_probackup были доступны для просмотра и установки:

    # apt update
    # apt search pg_probackup
  5. Установите pg_probackup:

    # apt install pg-probackup-16

    Версия pg_probackup должна соответствовать версии экземпляра СУБД. В этом примере используется версия 16.

После установки pg_probackup агент автоматически найдёт его и сообщит об этом менеджеру. Затем на сервере станет доступно резервное копирование.

Установка и настройка средств журналирования и мониторинга

Журналирование экземпляров СУБД и работа с их метриками осуществляется в PPEM посредством pgpro-otel-collector. Вам нужно установить pgpro-otel-collector вручную на всех серверах. За подробной информацией обратитесь к официальной документации Postgres Pro по установке pgpro-otel-collector.

Установленный pgpro-otel-collector необходимо настроить. Процесс настройки состоит из следующих этапов:

  1. Настройте журналирование экземпляров СУБД.
  2. Настройте сбор журналов и метрик в pgpro-otel-collector.
  3. Настройте отправку журналов и метрик в PPEM или внешнее хранилище.

Настройте журналирование экземпляров СУБД

Настройте журналирование экземпляров СУБД. За подробной информацией обратитесь к официальной документации Postgres Pro по конфигурации сервера для Postgres Pro Standard или Postgres Pro Enterprise. Необходимо убедиться, что указаны значения для следующих параметров:

  • logging_collector
  • log_destination
  • log_directory
  • log_filename

Журналирование экземпляров СУБД должно вестись в формате CSV или JSON.

Настройте сбор журналов и метрик в pgpro-otel-collector

Настройте pgpro-otel-collector на сбор журналов и метрик экземпляров СУБД. За подробной информацией обратитесь к официальной документации Postgres Pro по настройке работы с журналами, а также настройке работы с метриками для pgpro-otel-collector.

Настройте отправку журналов и метрик в PPEM или внешнее хранилище

Настройте pgpro-otel-collector на отправку журналов и метрик экземпляров СУБД в PPEM или внешнее хранилище. За подробной информацией обратитесь к официальной документации Postgres Pro по интеграции pgpro-otel-collector c PPEM.

Примечание

Встроенное хранилище предназначено для ознакомления c PPEM. В эксплуатационной среде с большим количеством экземпляров СУБД и производимых метрик рекомендуется использовать отдельные внешние хранилища.