解決策 1:
高可用性のために keepalived を使用することを好みます。ハートビートと会社よりもセットアップ (1 つのデーモンと構成) の方が簡単だと思います。私が遭遇する唯一の欠点は、keepalived にはデフォルトでユニキャスト オプションがなく、通信に VRRP のみを使用することです (ただし、HAProxy の作成者は keepalived のユニキャスト パッチを作成しています)。
解決策 2:
私は実際にあなたが説明したものと非常によく似たもの (EC2 上のフェールオーバー クラスター) に取り組んでおり、Heartbeat を試した後、メッセージング レイヤーとして Corosync に落ち着きました。 Corosync は複数のサーバーで実行され、バージョン 1.3.0 (2010 年 11 月以降) でユニキャスト (UDPU) をサポートします。 Amazon の EC2 クラウド (Amazon の Linux AMI を使用) で Corosync をセットアップしてテストしましたが、問題なく動作することを確認できます。
サンプルの udpu ファイルが /etc/corosync にインストールされます。
各ノードのインターフェイス セクションにメンバー ブロックを 1 つ追加し、トランスポートを updu として指定します。 (以下の例ではハートビートと同じポートを使用していますが、必要に応じて変更できます)。
例:
totem {
version: 2
secauth: off
interface {
member {
memberaddr: 10.xxx.xxx.xxx
}
member {
memberaddr: 10.xxx.xxx.xxx
}
ringnumber: 0
bindnetaddr: 10.xxx.xxx.xxx
mcastport: 694
}
transport: udpu
}
(Heartbeat は、バージョン 1.2.3 以降で 3 つ以上のノード クラスターをサポートすることになっていますが、個人的に試したことはなく、Unicast で動作するかどうかもわかりません)。
解決策 3:
申し訳ありませんが、Pacemaker に関する部分は正しくありません。Pacemaker のリグレッション テストとリリース テストでは、自動化が広範囲に使用されています。
アクティブなクラスターなしで構成するには、すべてのコマンドの前に CIB_file=/var/lib/heartbeat/crm/cib.xml
を付けます または、環境に設定します。クラスターを開始する前に、必ず .sig ファイルを削除してください。
クォーラムのないクラスターの場合、すべてではないにしてもほとんどのツールが -f
をサポートする必要があります または --force
とにかく変更を受け入れるようにクラスターに指示します。そうでないツールを見つけた場合は、バグを報告してください。
解決策 4:
オープン ソースの世界には、RedHat Cluster Suite があります。 RHCS を実装してから数年が経ちましたので、今日は関連することはあまりありません。
商業的には、Veritas Cluster Server があります。経験はありません。
はるかにシンプルでオープン ソースの HA ツールは UCARP です。 UCARP は、Heartbeat/Pacemaker/CoroSync とほぼ同じ種類の「インフラストラクチャ」を提供しませんが、その周りに HA ソリューションを構築できます。
仮想化テクノロジを使用して可用性の高いインフラストラクチャを構築することもできますが、これらのソリューションは、アプリケーション レベルの可用性ではなく、ホスト レベルの可用性に重点を置く傾向があります。