Using Failover Manager with Virtual IP Addresses

Failover Manager efm_address スクリプトを使用して、仮想IPアドレスを割り当てまたは解放します。

Please note: 仮想IPアドレスは、多くのクラウドプロバイダーでサポートされていません。これらの環境では、別のメカニズム(AWSのElasticIPアドレスなど)を使用する必要があります。これは、フェンシングまたはプロモーション後のスクリプトで必要に応じて変更できます。

デフォルトでは、スクリプトは次の場所にあります。

/usr/edb/efm-4.1/bin/efm_address

フェールオーバーマネージャーは、次のコマンドバリエーションを使用して、IPv4またはIPv6IPアドレスを割り当てまたは解放します。

仮想IPv4IPアドレスを割り当てるには:

# efm_address add4 <interface_name> <IPv4_addr>/<prefix>

仮想IPv6IPアドレスを割り当てるには:

# 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アドレスを記述するプロパティの詳細については、 クラスタープロパティファイル を参照してください。

rootユーザーとして efm_address スクリプトを呼び出す必要があります。 efm ユーザーはインストール中に作成され、 efm_address スクリプトを実行するためのsudoersファイル内の特権が付与されます。sudoersファイルの詳細については、 フェイルオーバーマネージャーのアクセス許可の拡張 を参照してください。

Please note: :VIPアドレス(または bind.address 以外のアドレス)がノードに割り当てられている場合、オペレーティングシステムはデータベースに接続するときに使用されるソースアドレスを選択できます。すべての監視対象データベースの pg_hba.conf ファイルを変更して、レプリケーションシナリオ内のすべてのアドレスからの連絡を許可してください。

Testing the VIP

|Failover Managerで仮想IP(VIP)アドレスを使用する場合、フェールオーバーマネージャーを起動する前にVIP機能を手動でテストすることが重要です。これにより、実際のフェイルオーバー中に問題が発生する前に、ネットワーク関連の問題をキャッチします。VIPのテスト中に、FailoverManagerが実行されていないことを確認してください。

次の手順では、|Failover Managerのアクションをテストしますかかります。この例では、次のプロパティ値を使用します。

virtual.ip=172.24.38.239
virtual.ip.interface=eth0
virtual.ip.prefix=24
ping.server.command=/bin/ping -q -c3 -w5

Please note: :virtual.ip.prefix は、仮想IPアドレスの有効ビット数を指定します。

ノードからVIPをpingするように指示されたら、 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

パケット損失は見られないはずです。

4. Use the efm_address del command to release the address on the primary node and confirm the node has been released with ip address:

# 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をpingして、使用中であることを確認できます。

# 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
...

上記のテスト手順の後、|Failover Managerを開始する前に、非プライマリノードからVIPを解放します。

Please note: :VIPに使用されるネットワークインターフェイスは、|Failover Managerに使用されるインターフェイスと同じである必要はありません。エージェントの bind.address 値。プライマリエージェントは、フェイルオーバー中に必要に応じてVIPをドロップし、|Failover Managerスタンバイを昇格する前に、VIPが利用できないことを確認します。バインドアドレスネットワークに障害が発生すると、プライマリ分離とフェールオーバーが発生します。

VIPが別のインターフェイスを使用する場合、プライマリエージェントがドロップする前に、クラスタの残りが到達可能なVIPをチェックするタイミング条件が発生する場合があります。この場合、EFMは node.timeout プロパティで指定された秒数の間VIPチェックを再試行して、フェイルオーバーが期待どおりに行われるようにします。