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

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

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

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

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

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のテスト

|variable_prod_name|で仮想IP(VIP)アドレスを使用する場合、フェイルオーバーマネージャーを起動する前にVIP機能を手動でテストすることが重要です。これにより、実際のフェイルオーバー中に問題が発生する前に、ネットワーク関連の問題が検出されます。次の手順では、|variable_prod_name|を実行するアクションをテストしますとる。この例では、次のプロパティ値を使用しています。

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 master 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して、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
...

上記のテスト手順の後、|variable_prod_name|を開始する前に、マスター以外のノードからVIPを解放します。

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

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