搜索

4.11. 在 AWS 中设置 IP 地址资源

download PDF

为确保使用 IP 地址访问由集群管理的、在发生故障转移时通过网络访问资源的客户端,集群必须包含 IP 地址资源 (使用特定网络资源代理)。

RHEL HA Add-On 提供了一组资源代理,它创建 IP 地址资源来管理 AWS 上的各种 IP 地址。要确定要配置哪些资源代理,请考虑您希望 HA 集群管理的 AWS IP 地址的类型:

注意

如果 HA 集群不管理任何 IP 地址,则不需要在 AWS 上管理虚拟 IP 地址的资源代理。如果您需要对特定部署进行进一步指导,请参阅 AWS 供应商。

4.11.1. 创建 IP 地址资源来管理互联网公开的 IP 地址

为确保高可用性(HA)客户端可以访问使用面向公共的互联网连接的 RHEL 9 节点,请配置 AWS Secondary Elastic IP Address (awseip)资源以使用弹性 IP 地址。

先决条件

流程

  1. 安装 resource-agents-cloud 软件包。

    # dnf install resource-agents-cloud
  2. 使用 AWS 命令行界面(CLI),创建一个弹性 IP 地址。

    [root@ip-10-0-0-48 ~]# aws ec2 allocate-address --domain vpc --output text
    
    eipalloc-4c4a2c45   vpc 35.169.153.122
  3. 可选: 显示 awseip 的描述。这显示了这个代理的选项和默认操作。

    # pcs resource describe awseip
  4. 创建 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

验证

  1. 显示集群的状态,以验证所需资源是否正在运行。

    # pcs status

    以下输出显示了运行一个运行集群的示例,其中 vipelastic 资源已作为 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
  2. 从本地工作站启动 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
  3. 验证您通过 SSH 连接的主机是否与创建的弹性资源关联。

4.11.2. 创建 IP 地址资源来管理私有 IP 地址,仅限于单个 AWS 可用区

为确保 AWS 上的高可用性(HA)客户端可以访问使用私有 IP 地址且只能在单个 AWS 可用区(AZ)中移动的 RHEL 9 节点,请配置 AWS Secondary Private IP Address (awsvip)资源以使用虚拟 IP 地址。

您可以在集群中的任何节点上完成以下步骤。

先决条件

流程

  1. 安装 resource-agents-cloud 软件包。

    # dnf install resource-agents-cloud
  2. 可选: 查看 awsvip 描述。这显示了这个代理的选项和默认操作。

    # pcs resource describe awsvip
  3. 使用 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
  4. 创建虚拟 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

    以下输出显示了运行一个运行集群的示例,其中 vipprivip 资源已作为 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 策略和角色

步骤

  1. 安装 resource-agents-cloud 软件包。

    # dnf install resource-agents-cloud
  2. 可选: 查看 aws-vpc-move-ip 描述。这显示了这个代理的选项和默认操作。

    # pcs resource describe aws-vpc-move-ip
  3. 为 IAM 用户设置 OverlayIPAgent IAM 策略。

    1. 在 AWS 控制台中,导航到 Services IAM Policies Create OverlayIPAgent Policy
    2. 输入以下配置,并更改 < region>、& lt ;account-id&gt; 和 & 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>"
              }
          ]
      }
  4. 在 AWS 控制台中,在集群中的所有节点上禁用 Source/Destination Check 功能。

    为此,请右键单击每个节点 Networking Change Source/Destination Checks。在出现的弹出消息中,单击 Yes, Disable

  5. 为集群创建路由表。要做到这一点,请在集群的一个节点中使用以下命令:

    # 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。
  6. 在集群的一个节点上,创建一个 aws-vpc-move-ip 资源,该资源使用客户端可访问的可用 IP 地址。以下示例创建一个名为 vpcip 的资源,该资源使用 IP 192.168.0.15

    # pcs resource create vpcip aws-vpc-move-ip ip=192.168.0.15 interface=eth0 routing_table=<ClusterRouteTableID>
  7. 在集群的所有节点上,编辑 /etc/hosts/ 文件,并使用新创建的资源的 IP 地址添加一行。例如:

    192.168.0.15 vpcip

验证

  1. 测试新 aws-vpc-move-ip 资源的故障转移功能:

    # pcs resource move vpcip
  2. 如果故障转移成功,在 vpcip 资源移动后删除自动创建的约束:

    # pcs resource clear vpcip

其他资源

4.11.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.