4.4. 查看虚拟 IP 地址

每个 IPaddr2 资源设置虚拟 IP 地址,客户端使用它来请求访问服务。如果 IP 地址的 Controller 节点失败,IPaddr2 资源会将 IP 地址重新分配给不同的 Controller 节点。

显示所有虚拟 IP 地址

使用 --full 选项运行 pcs resource show 命令来显示使用 VirtualIP 类型的所有资源:

$ sudo pcs resource show --full

以下示例输出显示当前设置为侦听特定虚拟 IP 地址的每个 Controller 节点:

 ip-10.200.0.6	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-1
 ip-192.168.1.150	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-0
 ip-172.16.0.10	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-1
 ip-172.16.0.11	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-0
 ip-172.18.0.10	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-2
 ip-172.19.0.10	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-2

每个 IP 地址最初附加到特定的 Controller 节点。例如,overcloud-controller-0 上启动 192.168.1.150。但是,如果该 Controller 节点失败,IP 地址会重新分配给集群中的其他 Controller 节点。

下表描述了示例输出中的 IP 地址,并显示了每个 IP 地址的原始分配。

表 4.1. IP 地址描述和分配源

IP 地址描述分配自

192.168.1.150

公共 IP 地址

network-environment.yaml 文件中的 ExternalAllocationPools 属性

10.200.0.6

控制器虚拟 IP 地址

undercloud.conf 文件中的 dhcp_startdhcp_end 范围部分设置为 10.200.0.5-10.200.0.24

172.16.0.10

提供对 Controller 节点上的 OpenStack API 服务的访问

network-environment.yaml 文件中的 InternalApiAllocationPools

172.18.0.10

存储虚拟 IP 地址,提供对 Glance API 和 Swift 代理服务的访问

network-environment.yaml 文件中的 StorageAllocationPools 属性

172.16.0.11

提供对 Controller 节点上的 Redis 服务的访问

network-environment.yaml 文件中的 InternalApiAllocationPools

172.19.0.10

提供对存储管理的访问

network-environment.yaml 文件中的 StorageMgmtAlloctionPools

查看特定 IP 地址

运行 pcs resource show 命令。

$ sudo pcs resource show ip-192.168.1.150

输出示例:

 Resource: ip-192.168.1.150 (class=ocf provider=heartbeat type=IPaddr2)
  Attributes: ip=192.168.1.150 cidr_netmask=32
  Operations: start interval=0s timeout=20s (ip-192.168.1.150-start-timeout-20s)
              stop interval=0s timeout=20s (ip-192.168.1.150-stop-timeout-20s)
              monitor interval=10s timeout=20s (ip-192.168.1.150-monitor-interval-10s)

查看特定 IP 地址的网络信息

  1. 登录到分配给您要查看的 IP 地址的 Controller 节点。
  2. 运行 ip addr show 命令来查看网络接口信息。

    $ ip addr show vlan100

    输出示例:

      9: vlan100: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
        link/ether be:ab:aa:37:34:e7 brd ff:ff:ff:ff:ff:ff
        inet *192.168.1.151/24* brd 192.168.1.255 scope global vlan100
           valid_lft forever preferred_lft forever
        inet *192.168.1.150/32* brd 192.168.1.255 scope global vlan100
           valid_lft forever preferred_lft forever
  3. 运行 netstat 命令,以显示侦听 IP 地址的所有进程。

    $ sudo netstat -tupln | grep "192.168.1.150.haproxy"

    输出示例:

    tcp        0      0 192.168.1.150:8778          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8042          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:9292          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8080          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:80            0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8977          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:6080          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:9696          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8000          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8004          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8774          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:5000          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8776          0.0.0.0:*               LISTEN      61029/haproxy
    tcp        0      0 192.168.1.150:8041          0.0.0.0:*               LISTEN      61029/haproxy
    注意

    侦听所有本地地址的进程(如 0.0.0.0 )也可以通过 192.168.1.150 获取。这些进程包括 sshdmysqlddhclientntpd

查看端口号分配

打开 /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg 文件,以查看默认端口号分配。

以下示例显示了端口号及其侦听的服务:

  • TCP 端口 6080: nova_ ever
  • TCP 端口 9696: neutron
  • TCP 端口 8000: heat_cfn
  • TCP 端口 80: horizon
  • TCP 端口 8776: cinder

在本例中,在 haproxy.cfg 文件中定义的大多数服务都侦听所有三个 Controller 节点上的 192.168.1.150 IP 地址。但是,只有 controller-0 节点在外部侦听 192.168.1.150 IP 地址。

因此,如果 controller-0 节点失败,HAProxy只需要将 192.168.1.150 重新分配给另一个 Controller 节点,所有其他服务则已在回退 Controller 节点上运行。