インストール
Mac OSの前提条件
Macに要件をインストールするには、次を実行します。
brew install postgresql etcd haproxy libyaml python
Psycopg
psycopg2-2.8`_から、 psycopg2のバイナリバージョンはデフォルトでインストールされなくなります。ソースコードからインストールするには、Cコンパイラーとpostgres+python devパッケージが必要です。 Pythonの世界では依存関係を ``psycopg2 OR psycopg2-binary` として指定することができないため、インストール方法を決定する必要があります。
使用可能なオプションがいくつかあります。
ディストリビューションのパッケージマネージャーを使用します
sudo apt-get install python3-psycopg2 # install psycopg2 module on Debian/Ubuntu
sudo yum install python3-psycopg2 # install psycopg2 on RedHat/Fedora/CentOS
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の新しいバージョンで完全に動作します。