インストール¶
MacOSの前提条件¶
Macに要件をインストールするには、次のコマンドを実行します。
brew install postgresql etcd haproxy libyaml python
サイコプグ¶
psycopg2-2.8`_以降、バイナリバージョンのpsycopg2はデフォルトでインストールされなくなります。ソースコードからインストールするには、Cコンパイラーとpostgres+pythondevパッケージが必要です。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
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派生製品へのインストール¶
PGDGリポジトリがインストールされたら、 above を参照し、aptrunでPatroniをインストールします。
apt-get install patroni
RedHat派生製品へのインストール¶
PGDGリポジトリがインストールされたら、 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」ドキュメントを参照してください。
PGDGリポジトリがインストールされている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で完全に動作できるようになります。