PacemakerおよびiPadr(アクティブ/アクティブクラスター)による負荷分散







負荷を分散する別の方法について説明したいと思います。 PacemakerとIPaddr(リソースエージェント)およびアクティブ/パッシブクラスター用の設定については、すでに多くの情報がありますが、このモジュールを使用した本格的なアクティブ/アクティブクラスターの編成に関する情報はほとんど見つかりませんでした。 この状況を修正しようとします。







まず、このようなバランス調整方法がどのように優れているかについて詳しく説明します。









入力データ



記事の冒頭の写真を見てみましょう。次のデバイスが表示されます。









クライアントはゲートウェイの外部アドレスに連絡し、すべての要求をクラスターの3つのノードすべてで構成される仮想IP 192.168.100.100にリダイレクトします。







準備する



まず、すべてのノードが単一のホスト名を使用して相互にアクセスできることを確認する必要があります。信頼性のために、ノードのアドレスを/etc/hosts



にすぐに追加することをお勧めし/etc/hosts









 192.168.100.101 hostA 192.168.100.102 hostB 192.168.100.103 hostC
      
      





必要なすべてのパッケージをインストールします。







 yum install pcs pacemaker corosync #CentOS, RHEL apt-get install pcs pacemaker corosync #Ubuntu, Debian
      
      





pcsがhacluster



と、 hacluster



ユーザーが作成hacluster



ます。パスワードを設定してみましょう。







 echo CHANGEME | passwd --stdin hacluster
      
      





1つのノードでさらに操作が実行されます。

認証を構成します。







 pcs cluster auth HostA HostB HostC -u hacluster -p CHANGEME --force
      
      





3つのノードの「クラスター」クラスターを作成して起動します。







 pcs cluster setup --force --name Cluster hostA hostB hostC pcs cluster start --all
      
      





結果を見てみましょう:







 pcs cluster status
      
      





おわりに
 Cluster Status: Last updated: Thu Jan 19 12:11:49 2017 Last change: Tue Jan 17 21:19:05 2017 by hacluster via crmd on hostA Stack: corosync Current DC: hostA (version 1.1.14-70404b0) - partition with quorum 3 nodes and 0 resources configured Online: [ hostA hostB hostC ] PCSD Status: hostA: Online hostB: Online hostC: Online
      
      





彼のおかげで、いくつかのステップはLelik13aから取られました。







特定のケースでは、クォーラムもストニスもクラスタに必要ないため、両方を安全に無効にできます。







 pcs property set no-quorum-policy=ignore pcs property set stonith-enabled=false
      
      





将来、必要なリソースがある場合は、 Silvarの 記事を参照できます。







MACアドレスについて一言



開始する前に、すべてのノードが要求に応じて同じIPと同じMACアドレスで構成され、それらに交互に回答することを理解する必要があります。







問題は、各スイッチが、動作中に各MACアドレスが特定の物理ポートに関連付けられている独自のスイッチングテーブルをコンパイルするように機能することです。 スイッチングテーブルは自動的にコンパイルされ、「不要な」L2パケットからネットワークをオフロードします。







そのため、mac-addressがスイッチングテーブルにある場合、パケットは1つのポートにのみ送信され、このmac-addressはそれに割り当てられます。







残念ながら、これは私たちには適していないため、クラスター内のすべてのホストがこれらすべてのパケットを同時に「見る」ようにする必要があります。 そうしないと、この回路は機能しません。







まず、使用するMACアドレスがマルチキャストアドレスであることを確認する必要があります。 つまり、範囲は01:00:5E:00:00:00



01:00:5E:7F:FF:FF



です。 このようなアドレスのパケットを受信すると、スイッチは送信元ポートを除く他のすべてのポートにパケットを送信します。 さらに、一部の管理スイッチでは、特定のMACアドレスに対して複数のポートを構成および定義できます。







また、スイッチでサポートされている場合、ホストからのarp応答をブロックする可能性があるため、 ダイナミックARPインスペクション機能を無効にする必要があります。







iPadリソースの構成



だから、私たちは最も興味深いことになりました。







現在、クローン作成をサポートするiPadには2つのバージョンがあります。









IPaadr3をインストールするには、各ホストで次のコマンドを実行します。







 curl --create-dirs -o /usr/lib/ocf/resource.d/percona/IPaddr3 \ https://raw.githubusercontent.com/percona/percona-pacemaker-agents/master/agents/IPaddr3 chmod u+x /usr/lib/ocf/resource.d/percona/IPaddr
      
      





1つのノードでさらに操作が実行されます。







仮想IPアドレスのリソースを作成します。







 pcs resource create ClusterIP ocf:percona:IPaddr3 \ params ip="192.168.100.100" cidr_netmask="24" nic="eth0" clusterip_hash="sourceip-sourceport" \ op monitor interval="10s"
      
      





clusterip_hash-ここでは、要求の配信の希望するタイプを指定する必要があります。

次の3つのオプションがあります。









IPaddr2には、マルチキャスト範囲のMACアドレスでパラメーターmac=01:00:5E:XX:XX:XX



を指定する必要があります。 IPadr3は自動的にインストールします。







次に、リソースのクローンを作成します。







 pcs resource clone ClusterIP \ meta clone-max=3 clone-node-max=3 globally-unique=true
      
      





このアクションにより、 iptables



次のルールが作成されます。







ルール
 Chain INPUT (policy ACCEPT) target prot opt source destination all -- anywhere 192.168.100.100 CLUSTERIP hashmode=sourceip-sourceport clustermac=01:00:5E:21:E3:0B total_nodes=3 local_node=1 hash_init=0
      
      





ご覧のとおり、ここではCLUSTERIP



モジュールが使用されています。







次のように機能します。







すべてのパケットは3つのノードに到着しますが、3つのLinuxカーネルはすべて、パケットを受信するノードの数を知っており、3つのカーネルはすべて単一のルールに従って受信したパケットに番号を付け、合計ノードとそのノード番号の数を知って、各サーバーはパケットの一部のみ、残りのパケットを処理しますサーバーによって無視されます-それらは他のサーバーによって処理されます。







詳細については、この記事をご覧ください







もう一度クラスターを見てみましょう。







 pcs cluster status
      
      





おわりに
 Cluster Status: Cluster name: cluster Last updated: Tue Jan 24 19:38:41 2017 Last change: Tue Jan 24 19:25:44 2017 by hacluster via crmd on hostA Stack: corosync Current DC: hostA (version 1.1.14-70404b0) - partition with quorum 3 nodes and 0 resources configured Online: [ hostA hostB hostC ] Full list of resources: Clone Set: ClusterIP-clone [ClusterIP-test] (unique) ClusterIP:0 (ocf:percona:IPaddr3): Started hostA ClusterIP:1 (ocf:percona:IPaddr3): Started hostB ClusterIP:2 (ocf:percona:IPaddr3): Started hostC PCSD Status: hostA: Online hostB: Online hostC: Online
      
      





IPアドレスが正常に開始されました。 外部から連絡を取ります。

すべてが正常に機能する場合、この設定では完了と見なすことができます。







参照資料






All Articles