Перейти к содержанию

Установка

Инструкции по установке и обновлению Patroni на поддерживаемых платформах.


Предварительные требования для 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  # install psycopg2 module on Debian/Ubuntu
sudo yum install python3-psycopg2      # install psycopg2 on RedHat/Fedora/CentOS
  1. При установке Patroni через pip указать psycopg, psycopg2 или psycopg2-binary в списке зависимостей .


Общая установка через 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 для использования реализации Raft на Python как DCS

aws
boto3 для использования обратных вызовов AWS

jsonlogger
модуль python-json-logger для включения ведения журнала в формате json

systemd
systemd-python для интеграции с sd_notify

all
всё перечисленное выше, кроме семейства psycopg

psycopg3
модуль psycopg\[binary\]\>=3.0.0

psycopg2
модуль psycopg2\>=2.5.4

psycopg2-binary
модуль psycopg2-binary

Например, для установки Patroni вместе с psycopg3, зависимостями Etcd как DCS и обратными вызовами 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. Если нужна поддержка, сначала обратитесь в Postgres Slack .

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

После подключения репозитория PGDG, как описано выше , установите Patroni через apt:

apt-get install patroni

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

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

dnf install patroni patroni-etcd

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

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

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

Установка в 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. В некоторых ситуациях это может вызвать переключение первичного узла при отказе, поэтому до завершения перезапуска демона рекомендуется перевести кластер в режим обслуживания.

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

patronictl pause --wait

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

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

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

systemctl restart patroni

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

patronictl resume --wait

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