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: - --failover-manager {efm, repmgr, patroni}- --enable-efm - --enable-repmgr- --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構成の詳細#

クラスター構成 で説明されるオプションを指定することもできます。