Установка
Эта страница переведена при помощи нейросети GigaChat.
Предварительные требования для Mac OS
Для установки зависимостей на Mac выполните следующее:
brew install postgresql etcd haproxy libyaml python
Psycopg
Начиная с psycopg2-2.8 бинарная версия psycopg2 больше не будет устанавливаться по умолчанию. Установка из исходного кода требует наличия C-компилятора и пакетов разработки postgres+python. Поскольку в мире Python невозможно указать зависимость как psycopg2 OR psycopg2-binary, потребуется решить, как именно ее устанавливать.
Доступно несколько вариантов:
-
Использовать менеджер пакетов вашего дистрибутива
sudo apt-get install python3-psycopg2 # установить модуль psycopg2 на Debian/Ubuntu
sudo yum install python3-psycopg2 # установить psycopg2 на RedHat/Fedora/CentOS -
Указать одну из зависимостей
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 |
aws | boto3 для использования callback 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 и 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.