Haproxyを使用して、複製されたmysqlマスターサーバーの負荷を分散しています。また、Webサーバーの高可用性のために2つのロードバランサーで2つの仮想IPを使用したアクティブ/アクティブIPフェイルオーバーにHeartbeatとPacemakerを使用しています。ペースメーカーの場所を使用して、各ロードバランサーにVIPを1つずつ配置し、VIPを指すラウンドロビンDNSドメインを使用して、ロードバランサーの負荷を分散しています。これまでのところすべてが順調に見えます!
| LB1:|ラウンドロビン-> | 1.2.3.4 |ハートビートペースメーカー| Haproxy | 192.168.1.1
| | | | |
| LB2:|ラウンドロビン-> | 5.6.7.8 |ハートビートペースメーカー| Haproxy | 192.168.1.2
crm configure show
node $id="394647e0-0a08-451f-a5bf-6c568854f8d1" lb1
node $id="9e95dc4f-8a9a-4727-af5a-40919ac902ba" lb2
primitive vip1 ocf:heartbeat:IPaddr2 \
params ip="1.2.3.4" cidr_netmask="255.255.255.0" nic="eth0:0" \
op monitor interval="40s" timeout="20s"
primitive vip2 ocf:heartbeat:IPaddr2 \
params ip="5.6.7.8" cidr_netmask="255.255.255.0" nic="eth0:1" \
op monitor interval="40s" timeout="20s"
location vip1_pref vip1 100: lb1
location vip2_pref vip2 100: lb2
property $id="cib-bootstrap-options" \
dc-version="1.0.8-042548a451fce8400660f6031f4da6f0223dd5dd" \
cluster-infrastructure="Heartbeat" \
stonith-enabled="false" \
no-quorum-policy="ignore" \
expected-quorum-votes="1"
ロードバランサーのHaproxyが破損した場合でも、別のlbでhaproxyを使用するか、両方のvipsを動作中のhaproxylbノードに移動するようにPacemakerを構成する方法。 mysqlリクエストに応答する両方のlbsでhaproxyを実行するため、アクティブ/パッシブではなくアクティブ/アクティブ構成が必要です。
ペースメーカーで行うことは可能ですか?誰か知ってる?
どんな助けでも大歓迎です!ありがとう!
これは、clone
を使用した@Arek B.
による素晴らしいヒントでした。ペースメーカーの構成に以下の行を追加しましたが、実際に必要なものを正確に取得できませんでした。両方のLBでhaproxy
を停止することを確認しましたが、ペースメーカーによって自動的に開始されますが、永続的に停止することを確認すると(/etc/defaults/haproxy, enabled=0
)、haproxyを開始できませんでした。その場合、haproxyを開始できませんでした。リソース(ipaddr2
)を別の実行中のhaproxy lbに移動したい。これ以上のヒントはありますか?
primitive mysql_proxy lsb:haproxy \
op monitor interval="10s"
clone clone_mysql_proxy mysql_proxy \
meta clone-max="2" clone-node-max="1"
location mysql_proxy_pref1 clone_mysql_proxy 100: lb1
location mysql_proxy_pref2 clone_mysql_proxy 50: lb2
アクティブ-アクティブ2 * virtIPクラスターがあります
CRM構成の場合:
2つの仮想IPをprimitive
IPaddr2サービスとして使用しています
および両方のノードで実行する必要があるサービスの場合:
clone any_name_of_the_clone your_primitive_service_id \
meta clone-max="2" clone-node-max="1"
order
を追加できます(クローンの開始後にvirt IPを開始するには-プリミティブではありません。クローンを作成した後は、その子のIDを使用しないでください)
それは機能しており、フェイルオーバーは機能しています(他のノードが失敗したときに1つのノードに2つのIPを割り当てます)。
しかし、colocation
の作成方法に問題があります-つまり、サービスを制限しているということです。 サブサービスが失敗したノードでvirtIPを使用できません。
サービスがダウンしていても問題ありません-クラスターはサービスを起動しますが、起動に失敗した場合(サービスの構成が壊れているなど)-クラスターはエラーを記録しますが、IPは起動します。
誰もが原因を知っていますか?
-それは悪い監視/開始/停止制御の問題ですか、それとも制約の構成の問題ですか?
編集:
'opstart'にPrimitive
オプションを追加しました:on-fail="standby"
。私のサービス(クローン内の唯一のプリミティブ)がノードを開始できない場合、virtIPも失われます
これで私の問題は解決したようです。