Перейти к основному содержимому

Установка

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

Для установки зависимостей на Mac выполните следующее:

brew install postgresql etcd haproxy libyaml python

Psycopg

Начиная с psycopg2-2.8 бинарная версия psycopg2 больше не будет устанавливаться по умолчанию. Установка из исходного кода требует наличия C-компилятора и пакетов разработки postgres+python. Поскольку в мире Python невозможно указать зависимость как psycopg2 OR psycopg2-binary, потребуется решить, как именно ее устанавливать.

Доступно несколько вариантов:

  1. Использовать менеджер пакетов вашего дистрибутива

    sudo apt-get install python3-psycopg2  # установить модуль psycopg2 на Debian/Ubuntu
    sudo yum install python3-psycopg2 # установить psycopg2 на RedHat/Fedora/CentOS
  2. Указать одну из зависимостей psycopg, psycopg2 или psycopg2-binary в списке зависимостей при установке Patroni через pip.

Общая установка для pip

Patroni можно установить с помощью pip:

pip install patroni[dependencies]

где dependencies может быть пустым или состоять из одного или нескольких следующих элементов:

ЗависимостьОписание
etcd или etcd3модуль python-etcd для использования etcd в качестве распределенного хранилища конфигураций (DCS)
consulмодуль py-consul для использования Consul в качестве DCS
zookeeperмодуль kazoo для использования Zookeeper в качестве DCS
exhibitorмодуль kazoo для использования Exhibitor в качестве DCS (те же зависимости, что и для Zookeeper)
kubernetesмодуль kubernetes для использования Kubernetes в качестве DCS в Patroni
raftмодуль pysyncobj для использования реализации Python Raft в качестве DCS
awsboto3 для использования callback AWS
jsonloggerмодуль python-json-logger для включения логирования в формате JSON
systemdsystemd-python для использования интеграции sd_notify
allвсе вышеперечисленное (кроме семейства psycopg)
psycopgмодуль psycopg[binary]>=3.0.0
psycopg2модуль psycopg2>=2.5.4
psycopg2-binaryмодуль psycopg2-binary

Например, команда для установки Patroni вместе с psycopg3, зависимостями для etcd в качестве DCS и callback'ами AWS:

pip install patroni[psycopg3,etcd3,aws]

Обратите внимание: внешние инструменты, вызываемые в скриптах создания реплик или пользовательского бутстрапа (например, WAL-E), должны устанавливаться независимо от Patroni.

Установка пакета в Linux

Пакеты Patroni могут быть доступны для операционной системы, подготовленные сообществом Postgres для:

  • RHEL, RockyLinux, AlmaLinux;
  • Debian и Ubuntu;
  • SUSE Enterprise Linux.

Также можно найти пакеты для прямых зависимостей Patroni, например, модули Python, которые могут отсутствовать в официальных репозиториях операционной системы.

Дополнительную информацию смотрите в документации репозитория PGDG.

Если используется производная от RedHat Enterprise Linux операционная система, могут также потребоваться пакеты из EPEL — смотрите документацию репозитория EPEL.

После установки репозитория PGDG для ОС можно установить Patroni.

примечание

Пакеты Patroni поддерживаются не разработчиками Patroni, а сообществом Postgres. Если требуется поддержка, сначала следует обратиться в Slack Postgres.

Установка на производные от Debian

После установки репозитория PGDG (смотрите выше) установите Patroni через apt:

apt-get install patroni

Установка на производные от RedHat

После установки репозитория PGDG (смотрите выше) установите Patroni с DCS etcd через dnf на RHEL 9 (и производных):

dnf install patroni patroni-etcd

Установить etcd из PGDG можно, если дистрибутив на базе RedHat не предоставляет пакеты. На узлах, которые будут хостить DCS, выполните:

dnf install 'dnf-command(config-manager)'
dnf config-manager --enable pgdg-rhel9-extras
dnf install etcd

При необходимости можно заменить версию RHEL на 8 в репозитории, чтобы получить pgdg-rhel8-extras. Имя репозитория остается pgdg-rhelN-extras на RockyLinux, AlmaLinux, Oracle Linux и так далее

Установка на SUSE Enterprise Linux

Может потребоваться включить репозитории SUSE PackageHub для некоторых зависимостей — смотрите документацию SUSE PackageHub.

Для SLES 15 с установленным репозиторием PGDG (смотрите выше) можно установить Patroni с помощью:

zypper install patroni patroni-etcd

При включенном репозитории SUSE PackageHub также можно установить etcd:

SUSEConnect -p PackageHub/15.5/x86_64
zypper install etcd

Обновление

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

Однако перезапуск демона Patroni приведет к перезапуску базы данных Postgres. В некоторых ситуациях это может вызвать failover первичного узла в кластере, поэтому рекомендуется перевести кластер в режим обслуживания до завершения перезапуска демона Patroni.

Чтобы перевести кластер в режим обслуживания, выполните следующую команду на одном из узлов Patroni:

patronictl pause --wait

Затем на каждом узле кластера выполните обновление пакета, требуемое для ОС:

apt-get update && apt-get install patroni patroni-etcd

Перезапустите процесс демона Patroni на каждом узле:

systemctl restart patroni

Наконец, возобновите мониторинг Postgres с помощью Patroni, чтобы вывести кластер из режима обслуживания:

patronictl resume --wait

Теперь кластер будет полностью работоспособен с новой версией Patroni.