4.11. 安装网络资源代理

要使 HA 操作正常工作,集群使用 AWS 网络资源代理来启用故障切换功能。如果节点在一定时间内没有响应心跳检查,则该节点会被隔离,操作会切换到集群中的其它节点。需要配置网络资源代理才能正常工作。

将两个资源添加到 同一组 中,以强制 ordercolocation 约束。

创建二级私有 IP 资源及虚拟 IP 资源

完成以下步骤以添加二级专用 IP 地址并创建虚拟 IP。您可以从集群中的任何节点完成此步骤。

流程

  1. 查看 AWS Secondary Private IP Address 资源代理(awsvip)描述。这显示了这个代理的选项和默认操作。

    # pcs resource describe awsvip
  2. 使用 VPC CIDR 块中未使用的私有 IP 地址创建二级私有 IP 地址。

    # pcs resource create privip awsvip secondary_private_ip=Unused-IP-Address --group group-name

    Example:

    [root@ip-10-0-0-48 ~]# pcs resource create privip awsvip secondary_private_ip=10.0.0.68 --group networking-group
  3. 创建虚拟 IP 资源。这是一个 VPC IP 地址,可以从隔离的节点快速迁移到故障切换节点,从而使子网中隔离的节点失败。

    # pcs resource create vip IPaddr2 ip=secondary-private-IP --group group-name

    Example:

    root@ip-10-0-0-48 ~]# pcs resource create vip IPaddr2 ip=10.0.0.68 --group networking-group

验证

  • 验证资源是否正在运行。

    # pcs status

    例如:

    [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

创建弹性 IP 地址

弹性 IP 地址是一个公共 IP 地址,可以从隔离的节点快速重新映射到故障转移节点,从而屏蔽隔离节点的故障。

请注意,这与之前创建的虚拟 IP 资源不同。弹性 IP 地址用于面向公共的互联网连接,而不是子网连接。

  1. 将两个资源添加到之前创建的 同一组 中,以强制 ordercolocation 约束。
  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. 查看 AWS 二级弹性 IP 地址资源代理(awseip)描述。以下命令显示此代理的选项和默认操作。

    # pcs resource describe awseip
  4. 使用在第 1 步中创建的分配的 IP 地址创建二级弹性 IP 地址资源。

    # pcs resource create elastic 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 命令来验证资源是否正在运行。

    # pcs status

    例如:

    [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
         privip (ocf::heartbeat:awsvip):  Started ip-10-0-0-48
         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

测试弹性 IP 地址

输入以下命令来验证虚拟 IP(awsvip)和弹性 IP(awseip)资源是否正常工作。

流程

  1. 从本地工作站启动 SSH 会话到之前创建的弹性 IP 地址。

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

    例如:

    $ ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122
  2. 验证您通过 SSH 连接到的主机是否与创建的弹性资源关联。