GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

zalando

patroni – ZooKeeper、etcd、またはConsulを使用したPostgreSQLハイアベイラビリティのテンプレート

投稿日:

ZooKeeper、etcd、またはConsulを使用したPostgreSQLハイアベイラビリティのテンプレート

Patroni:ZooKeeper、etcdまたはConsulを使用したPostgreSQL HAのテンプレート

検索可能で、 patroni.readthedocs.ioでナビゲートするのが簡単なこのドキュメントのバージョンを見つけることができます。

PostgreSQLを使用して高可用性を実現する方法はたくさんあります。 リストについては、 PostgreSQLのマニュアルを参照してください。

Patroniは、Pythonと最大限のアクセシビリティのために、 ZooKeeperetcdConsulまたはKubernetesのような分散設定ストアを使用して、独自のカスタマイズされた高可用性ソリューションを作成するためのテンプレートです。 HAのPostgreSQLをデータセンターや他の場所に素早く展開しようとしているデータベースエンジニア、DBA、DevOpsのエンジニア、SREは、うまくいけば役に立つと思っています。

パトローニは、サイズの合った、またはプラグアンドプレイの複製システムではないため、「Patroni」を「テンプレート」と呼んでいます。 それはそれ自身の注意書きを持っています。 賢明に使う。

Kubernetesユーザーへの注意 :PatroniはKubernetesの上でネイティブに実行できます。 PatroniのドキュメントのKubernetesの章を見てください。

パトロニイの仕組み

PatroniはComposeのプロジェクトであるGovernorのフォークとして発足しました。 それにはたくさんの新機能が含まれています。

Patroniによる Dockerベースの配置の例については、 Zalandoで現在使用されているSpiloを参照してください。

追加の背景情報については、以下を参照してください。

開発状況

パトロニは積極的に発展しており、寄付を受け入れています。 詳細については、下記の寄稿セクションをご覧ください。

新しいリリースの情報をここで報告します

コミュニティ

patroniコミュニティに接続するにはgithub 、IssueとPRを介して、 PostgreSQL Slackの #patroniチャンネルで接続する場所が2つあります パトローニを使用している場合、または関心のある方のみご参加ください。

技術要件/インストール

Mac OSの事前要件

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

brew install postgresql etcd haproxy libyaml python

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

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

pip install patroni[dependencies]

依存関係は空でも、次のうちの1つ以上で構成されていてもかまいません。

etcd
DCSとしてEtcdを使用するためにpython-etcdモジュール
領事
ConsulをDCSとして使用するためにPython-Consulモジュール
飼い猫
ZookeeperをDCSとして使用するためのkazooモジュール
出展者
DCSとして出展者を使用するためにkazooモジュール(Zookeeperと同じ依存関係)
キュベリネズ
パトローニでDCSとしてKubernetesを使用するためにkubernetesモジュール
aws
AWSコールバックを使用するためのboto

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

pip install patroni[etcd,aws]

レプリカ作成スクリプトまたはカスタムブートストラップスクリプト(WAL-E)を呼び出すための外部ツールはPatroniとは別にインストールする必要があります。

実行と設定

始めに、さまざまな端末から次の操作を行います。

> etcd --data-dir=data/etcd
> ./patroni.py postgres0.yml
> ./patroni.py postgres1.yml

高可用性クラスタの起動が表示されます。 YAMLファイルのさまざまな設定をテストして、クラスタの動作がどのように変化するかを確認します。 システムの動作を確認するには、コンポーネントの一部を停止します。

postgres*.ymlファイルをさらに追加して、さらに大きなクラスタを作成します。

PatroniはHAProxy構成を提供します。これにより、アプリケーションはクラスタのリーダーに接続するための単一のエンドポイントを提供します。 設定するには:

> haproxy -f haproxy.cfg
> psql --host 127.0.0.1 --port 5000 postgres

YAML設定

etcd、consul、ZooKeeperの設定に関する包括的な情報については、 ここを参照してください。 例えば、 postgres0.ymlを参照してください。

環境設定

環境変数による設定の構成(オーバーライド)に関する包括的な情報については、 ここを参照してください。

レプリケーションの選択

patroniはデフォルトでは非同期のPostgresのストリーミングレプリケーションを使用します。 Patroniの非同期レプリケーション構成では、 maximum_lag_on_failover設定が可能です。 この設定は、フォロワーがリーダーの後ろの特定のバイト数を超える場合、フェイルオーバーが発生しないようにします。 この設定は、ビジネス要件に基づいて増減する必要があります。 同期レプリケーションを使用して耐久性を保証することも可能です。 詳細については、 レプリケーションモードのドキュメントを参照してください。

アプリケーションでスーパーユーザーを使用しないでください。

アプリケーションから接続するときは、常に非スーパーユーザーを使用してください。 Patroniは、データベースに正しくアクセスする必要があります。 アプリケーションのスーパーユーザーを使用すると、 superuser_reserved_connections用に予約された接続を含む接続プール全体を、 superuser_reserved_connections設定で使用することができsuperuser_reserved_connections 接続プールがいっぱいになってPatroniがプライマリにアクセスできない場合、動作は望ましくありません。







-zalando
-, , , , , , , ,

執筆者: