M1
==

M1アーキテクチャは、プライマリとストリーミングレプリカ、1つのBarmanサーバー、および最初のレプリカからカスケードされた任意の数の追加レプリカを備えたPostgresクラスターです。このアーキテクチャは実稼働環境に適しています。また、そのシンプルさと独自のコンポーネントなしで構成できる機能のため、テスト、デモンストレーション、および学習にも適しています。

このアーキテクチャでサブスクリプション専用のEDBソフトウェアを選択した場合、EDB
Repos 2.0からソースされています。 :ref:`How TPA uses 2ndQuadrant and EDB repositories <How TPA uses 2ndQuadrant and EDB repositories>` を参照

詳細については。

デフォルトレイアウト
--------------------

デフォルトでは、プライマリには1つの読み取り専用レプリカが同じ場所に接続されています。一方、レプリカには、別の場所に接続された1つのカスケードレプリカがあります。そこで、
Barmanサーバーはプライマリからバックアップを取得するように構成されています。

.. figure:: /images/m1.png
   :width: 70% 
   :alt: Cluster with cascading replication

   Cluster with cascading replication

Postgresノードの数が偶数の場合、
Barmanノードも監視として構成されます。ノードの合計が奇数であると、自動フェイルオーバーの場合にコンセンサスを確立するのに役立ちます。

アプリケーションとバックアップのフェイルオーバー
------------------------------------------------

M1アーキテクチャは、プライマリが使用できなくなった場合に、プライマリの代わりにレプリカを昇格させるという点で、フェールオーバー管理を実装します。ただし、アプリケーショントラフィックをプライマリに再ルーティングする自動機能は提供しません。アプリケーショントラフィックの自動フェイルオーバーが必要な場合は、アプリケーションでこれを構成する必要がありますたとえば、マルチホスト接続を使用して、または適切なプロキシまたはロードバランサーと、選択したフェールオーバーマネージャーが提供する機能を使用して。

これは、バックアップノードとTPAによって作成されたプライマリ間の接続にも当てはまります。バックアップは、フェールオーバーが発生した場合に新しいプライマリをターゲットとするように自動的に調整されません。代わりに、元のプライマリに接続されたままです。手動フェイルオーバーを実行しており、バックアップを新しいプライマリに接続する場合は、
``tpaexec deploy``
を再実行できます。バックアップソースを自動的に変更する場合は、選択したフェールオーバーマネージャーを使用してこれを実装します。

クラスター構成
--------------

構成オプションの概要
^^^^^^^^^^^^^^^^^^^^

この例は、このアーキテクチャの\ ``tpaexec configure``
の呼び出しを示しています。

.. code:: shell

   tpaexec configure ~/clusters/m1 \
            --architecture M1 \
            --platform aws --region eu-west-1 --instance-type t3.micro \
            --distribution Debian \
            --postgresql 14 \
            --failover-manager repmgr

``help``
コマンドを使用して、使用可能なすべてのオプションをリストできます。

.. code:: shell

   tpaexec configure --architecture M1 --help

必須オプション
^^^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `--architecture` (`-a`),`M1`に設定する必要があります。
  Postgres flavour and version (e.g. `--postgresql 15`),有効な :ref:`Configuring lvm-direct for production <Cluster configuration>` 。
  "One of:  * `--failover-manager {efm, repmgr, patroni}` * `--enable-efm` * `--enable-repmgr` * `--enable-patroni`",:ref:`Configuring lvm-direct for production <Configuring EFM>` 、 :ref:`Configuring lvm-direct for production <Configuring repmgr>` 、および :ref:`Configuring lvm-direct for production <Patroni cluster management commands>` からフェイルオーバーマネージャーを選択します。

追加オプション
^^^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Description,Behavior if omitted
  :widths: 12,25,15
  :align: left
  :class: longtable

  `--platform`,`aws`、`docker`、`bare`のいずれか。,Defaults to `aws`.
  `--num-cascaded-replicas`,最初のレプリカからのカスケードレプリカの数。,Defaults to 1.
  `--enable-haproxy`,2つの追加ノードがロードバランサーレイヤーとして追加されます。フェールオーバーマネージャーとしてPatroniでのみサポートされています。,HAproxy nodes will not be added to the cluster.
  `--patroni-dcs`,patroniの分散構成ストアバックエンドを選択します。現時点では、オプションは`etcd`のみです。フェールオーバーマネージャーとしてPatroniでのみサポートされています。,Defaults to `etcd`.

M1構成の詳細
^^^^^^^^^^^^

オプションで\ ``--num-cascaded-replicas N``
を指定して、NのカスケードレプリカNoneの0を含む、デフォルト1を要求できます。

:ref:`tpaexec help configure-options <Cluster configuration>` で説明されるオプションを指定することもできます。
