M1#
単一のプライマリノードと、バックアップとフェールオーバー管理を含む多数のスタンバイノードへの物理レプリケーションを備えたPostgresクラスター。
このアーキテクチャは、運用に適していますが、そのシンプルさと独自のコンポーネントなしで構成できる機能により、テスト、デモンストレーション、学習にも適しています。
このアーキテクチャでサブスクリプション専用のEDBソフトウェアを選択した場合、EDB Repos 2.0からソースされ、 Configuring EDB Repos 2.0 repositories が必要です。
フェイルオーバー管理#
M1アーキテクチャには、常にフェールオーバーマネージャーが含まれます。サポートされているオプションはrepmgr、EDB Failover ManagerEFM、およびPatroniです。すべての場合、フェールオーバーマネージャーはデフォルトで構成され、プライマリが使用できなくなった場合にレプリカがプライマリに代わって昇格します。
アプリケーションのフェイルオーバー#
M1アーキテクチャは、通常、アプリケーショントラフィックをプライマリに再ルーティングする自動機能を提供しません。この機能をクラスターに追加するには、いくつかの方法があります。
TPAで
フェールオーバーマネージャーとしてrepmgrを選択し、PgBouncerを有効にすると、
config.ymlのcluster_varsの下にrepmgr_redirect_pgbouncer: trueハッシュを含めることができます。これにより、repmgrはPgBouncerを自動的に再構成して、フェールオーバー時にトラフィックを新しいプライマリにルーティングします。フェールオーバーマネージャーとしてPatroniを選択し、PgBouncerを有効にすると、Patroniはフェールオーバー時にトラフィックを新しいプライマリにルーティングするようにPgBouncerを自動的に再構成します。
フェールオーバーマネージャーとしてEFMを選択した場合、
config.ymlのcluster_varsの下のefm_conf_settingsハッシュを使用できますconfig.ymlから configure EFM to use a virtual IP address (VIP) 。これは、常にプライマリノードにルーティングされる追加のIPアドレスです。クラスターとアプリケーションの間に適切なプロキシまたはロードバランサーを配置し、 TPA hooks を使用して、選択したフェールオーバーマネージャーをフェールオーバー時に新しいプライマリへのルートで更新するように構成します。
マルチホスト接続文字列を使用するなど、アプリケーション自分自身でフェールオーバーを処理します。
バックアップフェイルオーバー#
TPAは、いかなる種類の「バックアップフェイルオーバー」も構成しません。バックアップしているPostgresノードがダウンしている場合、ノードがオンラインに戻るまでバックアップは単に停止します。バックアップを新しいプライマリに手動で接続するには、
config.yml を編集してbackup
ハッシュを新しいプライマリインスタンスに追加し、tpaexec deploy
を再実行します。
クラスター構成#
構成オプションの概要#
このアーキテクチャのtpaexec configure
の呼び出し例を以下に示します。
tpaexec configure ~/clusters/m1 \
--architecture M1 \
--platform aws --region eu-west-1 --instance-type t3.micro \
--distribution Debian \
--postgresql 14 \
--failover-manager repmgr \
--data-nodes-per-location 3
helpコマンドを使用して、使用可能なすべてのオプションをリストできます。
tpaexec configure --architecture M1 --help
以下の表では、M1の必須オプションと追加の重要なオプションについて説明します。オプションの詳細については、次のセクションで説明します。
必須オプション#
Parameter |
Description |
|---|---|
--architecture (-a) |
`M1`に設定する必要があります。 |
Postgres flavour and version (e.g. --postgresql 15) |
有効な Postgresのフレーバーとバージョン 。 |
One of: <br /> - --failover-manager {efm, repmgr, patroni}`<br />- `--enable-efm`<br /> - `--enable-repmgr`<br />- `--enable-patroni |
Configuring EFM 、 Repmgrリダイレクトpgbouncer 、および Patroni cluster management commands からフェイルオーバーマネージャーを選択します。 |
追加オプション#
Parameter |
Description |
Behaviour if omitted |
|---|---|---|
--platform |
aws、docker、`bare`のいずれか。 |
Defaults to aws. |
--location-names |
場所名のスペース区切りのリスト。場所の数は、指定された名前の数と同じです。 |
A single location called "main" is used. |
--primary-location |
プライマリサーバーが置かれる場所。 `location-names`のメンバーである必要があります。 |
The first listed location is used. |
--data-nodes-per-location |
1以上の数字。各場所では、1つのノードがクラスターのプライマリノードから直接ストリーミングするように構成され、他のノードが存在する場合はそのノードからストリーミングします。 |
Defaults to 2. |
--witness-only-location |
ロケーション名は、`location-names`のメンバーである必要があります。この場所には、単一の監視ノードのみが設定されます。 |
No witness-only location is added. |
--single-node-location |
ロケーション名は、`location-names`のメンバーである必要があります。 この場所には、単一のデータノードのみが設定されます。 |
No single-node location is added. |
--enable-haproxy |
2つの追加ノードがロードバランサーレイヤーとして追加されます。フェールオーバーマネージャーとしてPatroniでのみサポートされています。 |
HAproxy nodes will not be added to the cluster. |
--enable-pgbouncer |
PgBouncerは、プライマリの接続をプールするようにPostgresノードで構成されます。 |
PgBouncer will not be configured in the cluster. |
--patroni-dcs |
patroniの分散構成ストアバックエンドを選択します。現時点では、オプションは`etcd`のみです。 フェールオーバーマネージャーとしてPatroniでのみサポートされています。 |
Defaults to etcd. |
--efm-bind-by-hostname |
efmがIPアドレスの代わりにホスト名を使用してクラスター`bind.address`を構成するようにします。 |
Defaults to use IP addresses |
M1構成の詳細#
クラスター構成 で説明されるオプションを指定することもできます。