インストール

Mac OSの前提条件

Macに要件をインストールするには、次を実行します。

brew install postgresql etcd haproxy libyaml python

Psycopg

psycopg2-2.8`_から、 psycopg2のバイナリバージョンはデフォルトでインストールされなくなります。ソースコードからインストールするには、Cコンパイラーとpostgres+python devパッケージが必要です。 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. pipでPatroniをインストールする場合、 list of dependencies で`psycopg`、psycopg2、または`psycopg2-binary`のいずれかを指定します。

pipの一般的なインストール

Patroniはpipでインストールできます。

pip install patroni[dependencies]

dependencies は空であるか、次の1つ以上で構成されます。

etcdまたはetcd3

Etcdを分散構成ストアDCSとして使用するための`python-etcd`モジュール

領事

ConsulをDCSとして使用するための`py-consul`モジュール

飼育員

ZookeeperをDCSとして使用するための`kazoo`モジュール

出展者

出展者をDCSとして使用するための`kazoo`モジュール Zookeeperと同じ依存関係

kubernetes

PatroniでDCSとしてKubernetesを使用するための`kubernetes`モジュール

raft

`pysyncobj`モジュールDCSとしてPython Raft実装を使用するため

aws

boto3 AWSコールバックを使用するため

jsonlogger

json形式の logging を有効にするための`python-json-logger`モジュール

systemd

systemd-python sd_notify統合を使用するため

すべて

上記のすべて psycopgファミリーを除く

psycopg3

`psycopg[binary]>=3.0.0`モジュール

psycopg2

`psycopg2>=2.5.4`モジュール

psycopg2-binary

`psycopg2-binary`モジュール

たとえば、 psycopg3、DCSとしてのEtcdの依存関係、およびAWSコールバックとともにPatroniをインストールするためのコマンドは次のとおりです。

pip install patroni[psycopg3,etcd3,aws]

レプリカの作成またはカスタムブートストラップスクリプトつまりWAL-Eを呼び出す外部ツールは、パトロニとは無関係にインストールする必要があることに注意してください。

Linuxでのパッケージのインストール

Patroniパッケージは、次のPostgresコミュニティが作成したオペレーティングシステムで利用できる場合があります。

  • RHEL、RockyLinux、AlmaLinux。

  • DebianとUbuntu。

  • SUSE Enterprise Linux。

公式オペレーティングシステムリポジトリでは使用できない可能性があるPythonモジュールなど、Patroniの直接依存関係のパッケージを見つけることもできます。

詳細については、`PGDGリポジトリ`_ドキュメントを参照してください。

RedHat Enterprise Linux派生オペレーティングシステムを使用している場合、EPELからのパッケージが必要になる場合があります。`EPELリポジトリ`_ドキュメントを参照してください。

OSのPGDGリポジトリをインストールしたら、patroniをインストールできます。

注釈

Patroniパッケージは、Patroni開発者ではなく、Postgresコミュニティによってメンテナンスされています。サポートが必要な場合は、最初に`Postgres stable`_に接続してみてください。

Debian派生製品へのインストール

PGDGリポジトリがインストールされたら、 above を参照し、apt runを介してPatroniをインストールします。

apt-get install patroni

RedHat派生製品へのインストール

PGDGリポジトリがインストールされたら、 above を参照して、RHEL 9および派生製品にdnfを介してetcd DCSでpatroniをインストールします。実行します。

dnf install patroni patroni-etcd

RedHat派生ディストリビューションがパッケージを提供していない場合は、PGDGからetcdをインストールできます。 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`_ドキュメントを参照してください。

PGDGリポジトリがインストールされたSLES 15の場合、 above を参照してください。次を使用してpatroniをインストールできます。

zypper install patroni patroni-etcd

SUSE PackageHubリポジトリを有効にすると、etcdをインストールすることもできます。

SUSEConnect -p PackageHub/15.5/x86_64
zypper install etcd

アップグレード

patroniのアップグレードは非常に簡単なプロセスで、ソフトウェアインストールを更新し、クラスター内の各ノードでPatroniデーモンを再起動するだけです。

ただし、Patroniデーモンを再起動すると、Postgresデータベースが再起動します。状況によっては、これにより、クラスター内のプライマリノードのフェールオーバーが発生する可能性があるため、Patroniデーモンの再起動が完了するまで、クラスターをメンテナンスモードにすることをお勧めします。

クラスターをメンテナンスモードにするには、パトロニノードの1つで次のコマンドを実行します。

patronictl pause --wait

次に、クラスター内の各ノードで、OSに必要なパッケージのアップグレードを実行します。

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

各ノードでpatroniデーモンプロセスを再起動します。

systemctl restart patroni

次に、最後にpatroniを使用してPostgresのモニタリングを再開して、メンテナンスモードを解除します。

patronictl resume --wait

クラスターは、Patroniの新しいバージョンで完全に動作します。