4.11. 在 AWS 中设置 IP 地址资源
为确保使用 IP 地址访问由集群管理的、在发生故障转移时通过网络访问资源的客户端,集群必须包含 IP 地址资源 (使用特定网络资源代理)。
RHEL HA Add-On 提供了一组资源代理,它创建 IP 地址资源来管理 AWS 上的各种 IP 地址。要确定要配置哪些资源代理,请考虑您希望 HA 集群管理的 AWS IP 地址的类型:
-
如果您需要管理互联网公开的 IP 地址,请使用
awseip
network 资源。 -
如果您需要管理仅限于单个 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 节点,请配置 AWS Secondary Elastic IP Address (awseip
)资源以使用弹性 IP 地址。
先决条件
- 已安装了之前配置的集群。
- 您的集群节点必须有权访问 RHEL HA 软件仓库。如需更多信息,请参阅 安装高可用性软件包和代理。
- 您已设置 AWS CLI。具体步骤请参阅安装 AWS CLI。
流程
安装
resource-agents-cloud
软件包。# dnf install resource-agents-cloud
使用 AWS 命令行界面(CLI),创建一个弹性 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
创建 Secondary Elastic IP 地址资源,它使用之前使用 AWS CLI 指定分配的 IP 地址。另外,创建二级 Elastic IP 地址将属于的资源组。
# pcs resource create <resource-id> awseip elastic_ip=<Elastic-IP-Address> allocation_id=<Elastic-IP-Association-ID> --group networking-group
Example:
# 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
从本地工作站启动 SSH 会话到之前创建的弹性 IP 地址。
$ ssh -l <user-name> -i ~/.ssh/<KeyName>.pem <elastic-IP>
Example:
$ ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122
- 验证您通过 SSH 连接的主机是否与创建的弹性资源关联。
4.11.2. 创建 IP 地址资源来管理私有 IP 地址,仅限于单个 AWS 可用区
为确保 AWS 上的高可用性(HA)客户端可以访问使用私有 IP 地址且只能在单个 AWS 可用区(AZ)中移动的 RHEL 9 节点,请配置 AWS Secondary Private IP Address (awsvip
)资源以使用虚拟 IP 地址。
您可以在集群中的任何节点上完成以下步骤。
先决条件
- 已安装了之前配置的集群。
- 您的集群节点可以访问 RHEL HA 软件仓库。如需更多信息,请参阅 安装高可用性软件包和代理。
- 您已设置 AWS CLI。具体步骤请参阅安装 AWS CLI。
流程
安装
resource-agents-cloud
软件包。# dnf install resource-agents-cloud
可选:查看
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. 创建 IP 地址资源来管理可在多个 AWS 可用区间移动的 IP 地址
为确保 AWS 上的高可用性(HA)客户端可以访问可在同一 AWS 区域中的多个 AWS 可用区移动的 RHEL 9 节点,请配置一个 aws-vpc-move-ip
资源以使用弹性 IP 地址。
先决条件
- 已安装了之前配置的集群。
- 您的集群节点可以访问 RHEL HA 软件仓库。如需更多信息,请参阅 安装高可用性软件包和代理。
- 您已设置 AWS CLI。具体步骤请参阅安装 AWS CLI。
在集群中配置了 Identity and Access Management (IAM)用户,并具有以下权限:
- 修改路由表
- 创建安全组
- 创建 IAM 策略和角色
步骤
安装
resource-agents-cloud
软件包。# dnf install resource-agents-cloud
可选:查看
aws-vpc-move-ip
描述。这显示了这个代理的选项和默认操作。# pcs resource describe aws-vpc-move-ip
为 IAM 用户设置
OverlayIPAgent
IAM 策略。-
在 AWS 控制台中,导航到 Services
IAM Policies Create OverlayIPAgent
Policy 输入以下配置,并更改 < region>、& lt ;account-id> 和 & lt;ClusterRouteTableID& gt; 值,使其与您的集群对应。
{ "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。 为集群创建路由表。要做到这一点,请在集群的一个节点中使用以下命令:
# aws ec2 create-route --route-table-id <ClusterRouteTableID> --destination-cidr-block <NewCIDRblockIP/NetMask> --instance-id <ClusterNodeID>
在命令中,按如下所示替换值:
-
ClusterRouteTableID
:现有集群 VPC 路由表 ID。 -
NewCIDRblockIP/NetMask
: VPC 类间路由(CIDR)块之外的新 IP 地址和子网掩码。例如,如果 VPC CIDR 块是172.31.0.0/16
,新的 IP 地址/子网掩码可以是192.168.0.15/32
。 -
ClusterNodeID
:集群中另一节点的实例 ID。
-
在集群的一个节点上,创建一个
aws-vpc-move-ip
资源,该资源使用客户端可访问的可用 IP 地址。以下示例创建一个名为vpcip
的资源,该资源使用 IP192.168.0.15
。# 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
其他资源