Using Failover Manager with virtual IP addresses¶
</ div>
フェールオーバーマネージャーは、efm_addressスクリプトを使用して、仮想IPアドレスの割り当てまたはリリースを行います。
!!! Note * 仮想IPアドレスは、多くのクラウドプロバイダーでサポートされていません。これらの環境では、AWSのElastic IPアドレスなどの別のメカニズムを使用します。これは、フェンシングまたはポストプロモーションスクリプトで必要に応じて変更できます。
デフォルトでは、スクリプトは次の場所にあります。
/usr/edb/efm-4.<x>/bin/efm_address
フェールオーバーマネージャーは、次のコマンドバリエーションを使用して、IPv4またはIPv6 IPアドレスを割り当てまたはリリースします。
仮想IPv4 IPアドレスを割り当てるには:
# efm_address add4 <interface_name> <IPv4_addr>/<prefix>
仮想IPv6 IPアドレスを割り当てるには:
# efm_address add6 <interface_name> <IPv6_addr>/<prefix>
仮想アドレスをリリースするには:
# efm_address del <interface_name> <IP_address/prefix>
どこで:
<interface_name>は、クラスタープロパティファイルのvirtual.ip.interfaceプロパティで指定された名前と一致します。
<IPv4_addr>または<IPv6_addr>は、クラスタープロパティファイルのvirtual.ipプロパティで指定された値と一致します。
prefixは、クラスタープロパティファイルのvirtual.ip.prefixプロパティで指定された値と一致します。
仮想IPアドレスを記述するプロパティの詳細については、The cluster properties fileを参照してください。
ルートユーザとしてefm_addressスクリプトを呼び出します。
efmユーザはインストール中に作成され、efm_addressスクリプトを実行するためのsudoersファイルで特権が付与されます。
sudoersファイルの詳細については、Extending Failover Manager
permissionsを参照してください。
!!! Note *
VIPアドレスまたはbind.address以外のアドレスがノードに割り当てられている場合、オペレーティングシステムはデータベースに接続するときに使用されるソースアドレスを選択できます。すべての監視対象データベースのpg_hba.confファイルを変更して、レプリケーションシナリオ内のすべてのアドレスからの連絡を許可してください。
VIPのテスト¶
フェールオーバーマネージャーで仮想IP(VIP)アドレスを使用する場合、フェールオーバーマネージャーを起動する前にVIP機能を手動でテストすることが重要です。これにより、実際のフェイルオーバー中に問題が発生する前に、ネットワーク関連の問題をキャッチします。 VIPのテスト中に、Failover Managerが実行されていないことを確認してください。
次の手順では、フェールオーバーマネージャーが実行するアクションをテストします。この例では、次のプロパティ値を使用します。
virtual.ip=172.24.38.239
virtual.ip.interface=eth0
virtual.ip.prefix=24
ping.server.command=/bin/ping -q -c3 -w5
!!! Note *
virtual.ip.prefixは、仮想IPアドレスの有効ビット数を指定します。
ノードからVIPをピングするように指示されたら、ping.server.commandプロパティで定義されたコマンドを使用します。
1.すべてのノードからVIPにpingを実行して、アドレスがまだ使用されていないことを確認します。
# /bin/ping -q -c3 -w5 172.24.38.239
PING 172.24.38.239 (172.24.38.239) 56(84) bytes of data.
--- 172.24.38.239 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss,
time 3000ms
100%のパケット損失が見られます。
2.プライマリノードでefm_address add4コマンドを実行してVIPを割り当て、IPアドレスで確認します。
# efm_address add4 eth0 172.24.38.239/24
# ip address
<output truncated>
eth0 Link encap:Ethernet HWaddr 36:AA:A4:F4:1C:40
inet addr:172.24.38.239 Bcast:172.24.38.255
...
3.他のノードからVIPをpingして、VIPに到達できることを確認します。
# /bin/ping -q -c3 -w5 172.24.38.239
PING 172.24.38.239 (172.24.38.239) 56(84) bytes of data.
--- 172.24.38.239 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.023/0.025/0.029/0.006 ms
パケット損失は発生しません。
efm_address delコマンドを使用してプライマリノードのアドレスをリリースし、ノードがIPアドレスで解放されたことを確認します。
# efm_address del eth0 172.24.38.239/24
# ip address
eth0 Link encap:Ethernet HWaddr 22:00:0A:89:02:8E
inet addr:10.137.2.142 Bcast:10.137.2.191
...
このステップの出力には、eth0インタフェースは表示されません。
5.ステップ3を繰り返します。今回は、使用中のVIPがスタンバイとミラーリング監視サーバーに表示されないことを確認します。
# /bin/ping -q -c3 -w5 172.24.38.239
PING 172.24.38.239 (172.24.38.239) 56(84) bytes of data.
--- 172.24.38.239 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss,
time 3000ms
100%のパケット損失が発生します。すべてのノードでこの手順を繰り返します。
6.すべてのスタンバイノードで手順2を繰り返し、VIPをすべてのノードに割り当てます。任意のノードからVIPをピングして、使用中であることを確認できます。
# efm_address add4 eth0 172.24.38.239/24
# ip address
<output truncated>
eth0 Link encap:Ethernet HWaddr 36:AA:A4:F4:1C:40
inet addr:172.24.38.239 Bcast:172.24.38.255
...
上記のテスト手順の後、フェールオーバーマネージャーをスタート前に、非プライマリノードからVIPをリリースします。
!!! Note * VIPに使用されるネットワークインタフェースは、Failover
Managerエージェントのbind.address値に使用されるインタフェースと同じである必要はありません。プライマリエージェントは、フェイルオーバー中に必要に応じてVIPをドロップし、フェールオーバーマネージャーは、スタンバイを昇格する前にVIPが利用できないことを確認します。バインドアドレスネットワークの障害は、プライマリ分離とフェイルオーバーにつながります。
VIPが別のインタフェースを使用する場合、プライマリエージェントがドロップする前に、クラスタの残りが到達可能なVIPをチェックするタイミング条件が発生する可能性があります。この場合、フェールオーバーマネージャーは、 ヘルププロパティで指定された秒数のVIPチェックを再試行して、フェイルオーバーが期待どおりに行われる保証にします。