仮想IPアドレスでのフェールオーバーマネージャーの使用

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

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

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

/usr/edb/efm-4.0/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アドレスを記述するプロパティの詳細については、 :ref:`クラスタープロパティファイル<virtual.iP>`を参照してください。

You must invoke the efm_address script as the root user. The efm user is created during the installation, and is granted privileges in the sudoers file to run the efm_address script. For more information about the sudoers file, see Extending Failover Manager Permissions.

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

VIPのテスト

Failover Managerで仮想IP(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

注意: :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を解放します。

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

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