添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
搜索

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

download PDF

为确保使用 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 8 节点,请配置 AWS Secondary Elastic IP Address ( awseip )资源以使用弹性 IP 地址。 已安装了之前配置的集群。 您的集群节点必须有权访问 RHEL HA 软件仓库。如需更多信息,请参阅 安装高可用性软件包和代理 。 您已设置 AWS CLI。具体步骤请参阅 安装 AWS CLI 。 安装 resource-agents 软件包。

# yum install resource-agents
  • 使用 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

    # pcs resource create elastic awseip elastic_ip=35.169.153.122 allocation_id=eipalloc-4c4a2c45 --group networking-group
  • 验证

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

      # 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
    2. 从本地工作站启动 SSH 会话到之前创建的弹性 IP 地址。

      $ ssh -l <user-name> -i ~/.ssh/<KeyName>.pem <elastic-IP>

      $ 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 8 节点,请配置 AWS Secondary Private IP Address ( awsvip )资源以使用虚拟 IP 地址。 您可以在集群中的任何节点上完成以下步骤。 已安装了之前配置的集群。 您的集群节点可以访问 RHEL HA 软件仓库。如需更多信息,请参阅 安装高可用性软件包和代理 。 您已设置 AWS CLI。具体步骤请参阅 安装 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. 创建 IP 地址资源来管理可在多个 AWS 可用区间移动的 IP 地址

    为确保 AWS 上的高可用性(HA)客户端可以访问可在同一 AWS 区域中的多个 AWS 可用区移动的 RHEL 8 节点,请配置一个 aws-vpc-move-ip 资源以使用弹性 IP 地址。 已安装了之前配置的集群。 您的集群节点可以访问 RHEL HA 软件仓库。如需更多信息,请参阅 安装高可用性软件包和代理 。 您已设置 AWS CLI。具体步骤请参阅 安装 AWS CLI 。 在集群中配置了 Identity and Access Management (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>、& 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>" 在 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 的资源,该资源使用 IP 192.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
  • 验证

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

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

      # pcs resource clear vpcip

    其他资源

    4.11.4. 其他资源