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 地址 | 描述 | 分配自 |
---|---|---|
| 公共 IP 地址 |
|
| 控制器虚拟 IP 地址 |
|
| 提供对 Controller 节点上的 OpenStack API 服务的访问 |
|
| 存储虚拟 IP 地址,提供对 Glance API 和 Swift 代理服务的访问 |
|
| 提供对 Controller 节点上的 Redis 服务的访问 |
|
| 提供对存储管理的访问 |
|
查看特定 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 地址的网络信息
- 登录到分配给您要查看的 IP 地址的 Controller 节点。
运行
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
运行
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
获取。这些进程包括sshd
、mysqld
、dhclient
、ntpd
。
查看端口号分配
打开 /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 节点上运行。