Heartbeat、Pacemaker、CoroSyncの代替品ですか?


26

典型的なHeartbeat / Pacemaker / CoroSyncの組み合わせ以外に、Linuxでの自動フェイルオーバーの主要な代替手段はありますか?特に、ユニキャストのみをサポートし、マルチキャストもブロードキャストもサポートしないEC2インスタンスでフェイルオーバーを設定しています。特に、自動フェールオーバーがなく、マルチマスター環境をサポートしていないソフトウェアをいくつか処理しようとしています。これには、HAProxyやSolrなどのツールが含まれます。

Heartbeat + Pacemakerを使用していますが、私は興奮していません。ここに私の問題のいくつかがあります:

  • ハートビート-単独で、2つのノードに制限されます。3+が欲しいです。
  • Pacemaker-自動的に構成することはできません。クラスタはクォーラムで実行する必要がありますが、それでも手動構成が必要です。
  • CoroSync-ユニキャストをサポートしません。

Pacemakerは非常にうまく機能しますが、そのパワーによりセットアップが難しくなります。Pacemakerの本当の問題は、構成を自動化する簡単な方法がないことです。私は本当にEC2インスタンスを起動し、Chef / Puppetをインストールし、私の介入なしにクラスター全体を起動したいと思っています。

回答:


17

高可用性のためにkeepalivedを使用することを好みます。ハートビートや会社よりもセットアップが簡単です(1つのデーモンと構成)。唯一の欠点は、keepalivedにはデフォルトでユニキャストオプションがなく、通信にVRRPのみを使用することです(ただし、HAProxyの作成者はkeepalivedのユニキャストパッチを作成しました)


ユニキャストは必須ですが、パッチを見ていきます。
organicveggie

4
+1私は、haproxyの作者による間違った(または少なくとも非効率的な)理由について投稿(どこか)を読むまで、すべての「フェールオーバー」状況でハートビートを使用することに慣れていましたが、代わりにkeepalivedを使用する必要があります。重要なことは、ネットワークパスのフェールオーバー(たとえば、IPを別のサーバーに移動する-keepalived)か、リソースへの単一アクセスのみを確保する必要があるか(たとえば、SAN接続-ハートビート)に依存します。
コープス

5
これは、私は信じて@Coopsが参照しているメールであるformilux.org/archives/haproxy/1003/3259.html
ヘンリック

4
リリース1.2.8(2013-08-05)以降、KeepalivedはUnicast(keepalived.org/changelog.html)をサポートしています。
ダイノム14


14

私は実際にあなたが説明したもの(EC2のフェールオーバークラスター)と非常によく似たものに取り組んでおり、Heartbeatを試した後、メッセージングレイヤーとしてCorosyncに決めました。Corosyncは複数のサーバーで実行され、バージョン1.3.0からはユニキャスト(UDPU)をサポートしています(2010年11月以降)。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で動作するかどうかわかりません)。


私はudpuを使用して3台のマシンのクラスターをセットアップしましたが、それはうまくいきました。メンバーブロックを追加し続けるだけです。
devicenull

11

申し訳ありませんが、Pacemakerに関する部分は正しくありません。Pacemakerの回帰テストとリリーステストでは、自動化を幅広く活用しています。

アクティブなクラスターなしで構成するには、すべてのコマンドに接頭辞を付けるCIB_file=/var/lib/heartbeat/crm/cib.xmlか、環境内で設定します。クラスターを開始する前に、必ず.sigファイルを削除してください。

クォーラムのないクラスターでは、すべてではないにしても、ほとんどのツールがサポートする-f--force、いずれにしてもクラスターに変更を受け入れるよう指示します。そうでないツールを見つけたら-バグを報告してください。


申し訳ありませんが、私の意見は、Pacemakerメーリングリストから得たフィードバックに基づいています。あなたの提案を試してみましょう。
organicveggie

3

オープンソースの世界には、RedHat Cluster Suiteがあります。RHCSを実装してから数年が経っているので、今日、それについて言及することはあまりありません。

商業的には、Veritas Cluster Serverがあります。経験なし。

より簡単でオープンソースのHAツールはUCARPです。UCARPは、Heartbeat / Pacemaker / CoroSyncが提供するのとほぼ同じ種類の「インフラストラクチャ」を提供しませんが、HAソリューションを構築できます。

仮想化テクノロジを使用して可用性の高いインフラストラクチャを構築することもできますが、これらのソリューションは、アプリケーションレベルの可用性ではなく、ホストレベルの可用性に重点を置く傾向があります。


ありがとう。RHcS、VCS、およびUCARPを見ていきます。Amazon EC2を使用しているという事実を反映するように質問を更新しました。そのため、ホストレベルの可用性は、私があまり制御できるものではありません。
organicveggie

1

Oracle Unbreakable Linux用のOracle Clusterwareがありますが、使用していません。


1

すでにEC2を使用している場合、Elastic Load Balancingを使用してみませんか?フェールオーバーを自分で構成することなく、アプリケーションレベルの可用性を実現できます。


ELBが適合しない理由はいくつかあります。まず、ELBはパブリックインターネットからのリクエストに対してのみ機能します。ELBのパブリックアドレスにリクエストをルーティングしてからすべてのトラフィックの料金を支払わない限り、内部リクエストには使用できません。第二に、ELBは非常にシンプルなバランサーです。ルールやパターンをその動作に適用することはできず、スタンバイサーバーを使用することもできません。たとえば、2つの別個のHAProxyインスタンスが同じWebサーバーをアクティブに指しているのは望ましくありません。ターゲットWebサーバーの実際の負荷がわからないからです。
organicveggie

1

Veritas Clusterは(Linux-Heartbeat、AIX-hacmp、HP-Serviceguard、およびSunクラスターと比較して)優れていますが、多大な費用がかかります。私が最後にそれを見たとき、その価格はクラスターのCPUコアに基づいていました。現在のベンダーはシマンテックです...



0

opensvc(https://www.opensvc.com)は複数のハートビートドライバーをサポートします。

  • ユニキャスト
  • マルチキャスト
  • 共有ディスク
  • 3番目のサイトリレー

また、スプリットブレインの場合には定足数メカニズムを持っています。

2つのgoogleクラウドインスタンス+ 2つのAmazonインスタンスとterraform + ansibleで構成される4ノードクラスターを自動的にセットアップできました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.