インストール

MacOSの前提条件

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

brew install postgresql etcd haproxy libyaml python

サイコプグ

psycopg2-2.8`_以降、バイナリバージョンのpsycopg2はデフォルトでインストールされなくなります。ソースコードからインストールするには、Cコンパイラーとpostgres+pythondevパッケージが必要です。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

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

ZooKeeper

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

エキシビター

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

Kubernetes

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

raft

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

AWS

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

jsonlogger

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

全て

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

サイココップ

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

サイココップ2

`psycopg2>=2.5.4`モジュール

psycopg2-バイナリ

「psycopg2-binary」モジュール

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

pip install patroni[psycopg3,etcd3,aws]

レプリカ作成またはカスタムブートストラップスクリプト(つまりWAL-E)で呼び出す外部ツールは、Patroniとは別にインストールする必要があることに注意してください。

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

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

  • RHEL、RockyLinux、AlmaLinux。

  • DebianとUbuntu。

  • SUSEエンタープライズLinux。

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

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

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

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

注釈

PatroniパッケージはPatroni開発者ではなく、Postgresコミュニティによって保守されています。サポートが必要な場合は、まず「PostgresSlack」_に接続してみてください。

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

PGD​​Gリポジトリがインストールされたら、 above を参照し、aptrunでPatroniをインストールします。

apt-get install patroni

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

PGD​​Gリポジトリがインストールされたら、 above を参照し、RHEL9(および派生製品)上でdnf経由でetcdDCSを含む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、OracleLinuxなどではリポジ名は依然として「pgdg-rhelN-extras」です。

SUSEEnterpriseLinuxへのインストール

一部の依存関係については、SUSEPackageHubリポジトリを有効にする必要がある場合があります。「SUSEPackageHub」ドキュメントを参照してください。

PGD​​GリポジトリがインストールされているSLES15については、 above を参照してください。以下を使用してpatroniをインストールできます。

zypper install patroni patroni-etcd

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

SUSEConnect -p PackageHub/15.5/x86_64
zypper install etcd

アップグレード中

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

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

クラスターをメンテナンスモードにするには、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で完全に動作できるようになります。