本文へ移動

インストール

サポート対象プラットフォームにおけるPatroniのインストールとアップグレードの手順。


Mac OSの前提条件

Macに必要なソフトウェアをインストールするには、次を実行します。

brew install postgresql etcd haproxy libyaml python


Psycopg

psycopg2-2.8 以降、psycopg2のバイナリー版はデフォルトではインストールされなくなりました。ソースコードからインストールするには、Cコンパイラーとpostgresおよびpythonの開発用パッケージが必要です。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をインストールするときに、依存関係の一覧 にpsycopg、psycopg2、psycopg2-binaryのいずれかを指定する。


pipによる一般的なインストール

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

pip install patroni[dependencies]

ここでdependenciesは空にするか、次のうち一つ以上を指定します。

etcdまたはetcd3
DCS(分散構成ストア)としてetcdを使用するためのpython-etcdモジュール

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

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

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

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

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

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

jsonlogger
JSON形式のログ出力 を有効にするためのpython-json-loggerモジュール

systemd
sd_notify連携を使用するためのsystemd-python

all
上記のすべて(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など)は、Patroniとは別にインストールすることを推奨します。


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 Slack で相談してください。

Debian派生システムへのインストール

上記 のとおりPGDGリポジトリをインストールしたら、次を実行してaptでPatroniをインストールします。

apt-get install patroni

RedHat派生システムへのインストール

上記 のとおりPGDGリポジトリをインストールしたら、RHEL 9とその派生システムで次を実行し、dnfを使用してetcd DCS付きのPatroniをインストールします。

dnf install patroni patroni-etcd

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

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データベースも再起動します。状況によってはクラスターのプライマリーノードでフェイルオーバーが発生する可能性があるため、Patroniデーモンの再起動が完了するまでクラスターをメンテナンスモードにすることを推奨します。

クラスターをメンテナンスモードにするには、Patroniノードのいずれかで次のコマンドを実行します。

patronictl pause --wait

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

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

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

systemctl restart patroni

最後に、PatroniによるPostgresの監視を再開して、メンテナンスモードを終了します。

patronictl resume --wait

これでクラスターは、新しいバージョンのPatroniで完全に稼働する状態になります。