4.11. AWS での IP アドレスリソースの設定
フェイルオーバーが発生した場合でも、ネットワーク経由でクラスターに管理されるリソースに IP アドレスを使用してアクセスするクライアントがリソースにアクセスできるようにするには、特定のネットワークリソースエージェントを使用する IP アドレスリソース をクラスターに含める必要があります。
RHEL HA アドオンは、AWS 上のさまざまな種類の IP アドレスを管理するための IP アドレスリソースを作成するリソースエージェントのセットを提供します。どのリソースエージェントを設定するかを決定するには、HA クラスターで管理する AWS IP アドレスのタイプを考慮してください。
-
インターネットに公開されている IP アドレスを管理する必要がある場合は、
awseip
ネットワークリソースを使用 します。 -
単一の AWS アベイラビリティーゾーン (AZ) に制限されたプライベート IP アドレスを管理する必要がある場合は、
awsvip
およびIPaddr2
ネットワークリソースを使用します。 -
同じ AWS リージョン内の複数の AWS AZ 間で移動できる IP アドレスを管理する必要がある場合は、
aws-vpc-move-ip
ネットワークリソースを使用 します。
HA クラスターが IP アドレスを管理しない場合は、AWS 上の仮想 IP アドレスを管理するためのリソースエージェントは必要ありません。特定のデプロイメントに関する詳細なガイダンスが必要な場合は、AWS プロバイダーにご相談ください。
4.11.1. インターネットに公開されている IP アドレスを管理するための IP アドレスリソースの作成
高可用性 (HA) クライアントがパブリックインターネット接続を使用する RHEL 9 ノードにアクセスできるようにするには、Elastic IP アドレスを使用するように AWS セカンダリー Elastic IP アドレス (awseip
) リソースを設定します。
前提条件
- 以前に設定されたクラスターがある。
- クラスターノードが RHEL HA リポジトリーにアクセスできる。詳細は、高可用性パッケージとエージェントのインストール を参照してください。
- AWS CLI を設定している。手順については、Installing the AWS CLI を参照してください。
手順
resource-agents
パッケージをインストールします。# yum install resource-agents
AWS コマンドラインインターフェイス (CLI) を使用して、Elastic IP アドレスを作成します。
[root@ip-10-0-0-48 ~]# aws ec2 allocate-address --domain vpc --output text eipalloc-4c4a2c45 vpc 35.169.153.122
オプション:
awseip
の説明を表示します。これは、このエージェントのオプションとデフォルトの操作を示しています。# pcs resource describe awseip
AWS CLI を使用して以前に指定した割り当て済み IP アドレスを使用するセカンダリー Elastic IP アドレスリソースを作成します。さらに、セカンダリー Elastic IP アドレスが属するリソースグループを作成します。
# pcs resource create <resource-id> awseip elastic_ip=<Elastic-IP-Address> allocation_id=<Elastic-IP-Association-ID> --group networking-group
以下に例を示します。
# pcs resource create elastic awseip elastic_ip=35.169.153.122 allocation_id=eipalloc-4c4a2c45 --group networking-group
検証
クラスターのステータスを表示して、必要なリソースが実行していることを確認します。
# pcs status
次の出力は、
vip
リソースおよびelastic
リソースがnetworking-group
リソースグループの一部として起動されている実行中のクラスターの例を示しています。[root@ip-10-0-0-58 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-58 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Mon Mar 5 16:27:55 2018 Last change: Mon Mar 5 15:57:51 2018 by root via cibadmin on ip-10-0-0-46 3 nodes configured 4 resources configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Resource Group: networking-group vip (ocf::heartbeat:IPaddr2): Started ip-10-0-0-48 elastic (ocf::heartbeat:awseip): Started ip-10-0-0-48 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
ローカルワークステーションから、上で作成した Elastic IP アドレスへの SSH セッションを開始します。
$ ssh -l <user-name> -i ~/.ssh/<KeyName>.pem <elastic-IP>
以下に例を示します。
$ ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122
- SSH 経由で接続したホストが、作成された elastic リソースに関連付けられているホストであることを確認します。
4.11.2. 単一の AWS アベイラビリティーゾーンに限定されたプライベート IP アドレスを管理するための IP アドレスリソースの作成
AWS 上の高可用性 (HA) クライアントが、単一の AWS アベイラビリティーゾーン (AZ) 内でのみ移動できるプライベート IP アドレスを使用する RHEL 9 ノードにアクセスできるようにするには、仮想 IP アドレスを使用するように AWS セカンダリープライベート IP アドレス (awsvip
) リソースを設定します。
クラスター内の任意のノードで次の手順を実行できます。
前提条件
- 以前に設定されたクラスターがある。
- クラスターノードが RHEL HA リポジトリーにアクセスできる。詳細は、高可用性パッケージとエージェントのインストール を参照してください。
- AWS CLI を設定している。手順については、Installing the AWS CLI を参照してください。
手順
resource-agents
パッケージをインストールします。# yum install resource-agents
オプション:
awsvip
の説明を表示します。これは、このエージェントのオプションとデフォルトの操作を示しています。# pcs resource describe awsvip
VPC CIDR
ブロック内の未使用のプライベート IP アドレスを使用して、セカンダリープライベート IP アドレスを作成します。さらに、セカンダリープライベート IP アドレスが属するリソースグループを作成します。# pcs resource create <resource-id> awsvip secondary_private_ip=<Unused-IP-Address> --group <group-name>
以下に例を示します。
[root@ip-10-0-0-48 ~]# pcs resource create privip awsvip secondary_private_ip=10.0.0.68 --group networking-group
仮想 IP リソースを作成します。これは、フェンシングされたノードからフェイルオーバーノードに即時に再マッピングできる VPC IP アドレスで、サブネット内のフェンスされたノードの失敗をマスクします。仮想 IP が、前の手順で作成したセカンダリープライベート IP アドレスと同じリソースグループに属していることを確認します。
# pcs resource create <resource-id> IPaddr2 ip=<secondary-private-IP> --group <group-name>
以下に例を示します。
root@ip-10-0-0-48 ~]# pcs resource create vip IPaddr2 ip=10.0.0.68 --group networking-group
検証
クラスターのステータスを表示して、必要なリソースが実行していることを確認します。
# pcs status
次の出力は、
vip
およびprivip
リソースがnetworking-group
リソースグループの一部として起動している実行中のクラスターの例を示しています。[root@ip-10-0-0-48 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-46 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Mar 2 22:34:24 2018 Last change: Fri Mar 2 22:14:58 2018 by root via cibadmin on ip-10-0-0-46 3 nodes configured 3 resources configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Resource Group: networking-group privip (ocf::heartbeat:awsvip): Started ip-10-0-0-48 vip (ocf::heartbeat:IPaddr2): Started ip-10-0-0-58 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
4.11.3. 複数の AWS アベイラビリティーゾーン間で移動できる IP アドレスを管理するための IP アドレスリソースの作成
AWS 上の高可用性 (HA) クライアントが、同じ AWS リージョン内の複数の AWS アベイラビリティーゾーン間で移動できる RHEL 9 ノードにアクセスできるようにするには、aws-vpc-move-ip
リソースを設定して、Elastic IP アドレスを使用します。
前提条件
- 以前に設定されたクラスターがある。
- クラスターノードが RHEL HA リポジトリーにアクセスできる。詳細は、高可用性パッケージとエージェントのインストール を参照してください。
- AWS CLI を設定している。手順については、Installing the AWS CLI を参照してください。
アイデンティティーおよびアクセス管理 (IAM) ユーザーがクラスターに設定されており、次の権限を持ちます。
- ルーティングテーブルを変更する
- セキュリティーグループを作成する
- IAM ポリシーとロールを作成する
手順
resource-agents
パッケージをインストールします。# yum install resource-agents
オプション:
aws-vpc-move-ip
の説明を表示します。これは、このエージェントのオプションとデフォルトの操作を示しています。# pcs resource describe aws-vpc-move-ip
IAM ユーザーに対して
OverlayIPAgent
IAM ポリシーを設定します。-
AWS コンソールで、Services
IAM Policies Create OverlayIPAgent
Policy に移動します。 次の設定を入力し、<region>、<account-id>、および <ClusterRouteTableID> の値をクラスターに合わせて変更します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1424870324000", "Effect": "Allow", "Action": "ec2:DescribeRouteTables", "Resource": "*" }, { "Sid": "Stmt1424860166260", "Action": [ "ec2:CreateRoute", "ec2:ReplaceRoute" ], "Effect": "Allow", "Resource": "arn:aws:ec2:<region>:<account-id>:route-table/<ClusterRouteTableID>" } ] }
-
AWS コンソールで、Services
AWS コンソールで、クラスター内のすべてのノードの
Source/Destination Check
機能を無効にします。これを行うには、各ノードを右クリックして、Networking
Change Source/Destination Checks を選択します。表示されるポップアップメッセージで、Yes, Disable をクリックします。 クラスターのルートテーブルを作成します。これを行うには、クラスター内の 1 つのノードで次のコマンドを使用します。
# aws ec2 create-route --route-table-id <ClusterRouteTableID> --destination-cidr-block <NewCIDRblockIP/NetMask> --instance-id <ClusterNodeID>
コマンドでは、値を次のように置き換えます。
-
ClusterRouteTableID
: 既存のクラスター VPC ルートテーブルのルートテーブル ID。 -
NewCIDRblockIP/NetMask
: VPC Classless Inter-Domain Routing (CIDR) ブロック外の新しい IP アドレスとネットマスク。たとえば、VPC CIDR ブロックが172.31.0.0/16
の場合、新しい IP アドレス/ネットマスクは192.168.0.15/32
になります。 -
ClusterNodeID
: クラスター内の別のノードのインスタンス ID。
-
クラスター内のノードの 1 つで、クライアントがアクセスできる空き IP アドレスを使用する
aws-vpc-move-ip
リソースを作成します。次の例では、IP192.168.0.15
を使用するvpcip
という名前のリソースを作成します。# pcs resource create vpcip aws-vpc-move-ip ip=192.168.0.15 interface=eth0 routing_table=<ClusterRouteTableID>
クラスター内のすべてのノードで、
/etc/hosts/
ファイルを編集し、新しく作成されたリソースの IP アドレスを含む行を追加します。以下に例を示します。192.168.0.15 vpcip
検証
新しい
aws-vpc-move-ip
リソースのフェイルオーバー機能をテストします。# pcs resource move vpcip
フェイルオーバーが成功した場合は、
vpcip
リソースの移動後に自動的に作成された制約を削除します。# pcs resource clear vpcip
関連情報