4.2. Pacemaker 中配置的虚拟 IP 地址


每个 IPaddr2 资源设置客户端用来请求访问服务的虚拟 IP 地址。如果分配给该 IP 地址的 Controller 节点停机,则会将 IP 地址重新分配给不同的控制器。在本例中,您可以看到当前设置为侦听特定虚拟 IP 地址的每个控制器(overcloud-controller-0、-1 等)。

 ip-192.168.1.150	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-0
 ip-10.200.0.6	(ocf::heartbeat:IPaddr2):	Started overcloud-controller-1
 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
Copy to Clipboard Toggle word wrap

请注意,每个 IP 地址最初附加到特定的控制器(例如 192.168.1.150overcloud-controller-0上启动)。但是,如果该控制器停机,则会将其 IP 地址重新分配给集群中的其他控制器。以下是刚刚显示的 IP 地址的描述以及它们最初分配的 IP 地址:

  • 192.168.1.150 :公共 IP 地址(从 network-environment.yaml中的 ExternalAllocationPools 分配)
  • 10.200.0.6: 控制器虚拟 IP 地址(dhcp_start 和 dhcp_end 范围在 undercloud.conf中设置为 10.200.0.5-10.200.0.24)
  • 172.16.0.10: IP 地址,提供对控制器上的 OpenStack API 服务的访问(从 network-environment.yaml中的 InternalApiAllocationPools 分配)
  • 172.16.0.11: IP 地址提供对控制器上 Redis 服务的访问(从 network-environment.yaml中的 InternalApiAllocationPools 分配)
  • 172.18.0.10: 存储虚拟 IP 地址,提供对 Glance API 和 Swift 代理服务的访问(从 network-environment.yaml中的 StorageAllocationPools 分配)
  • 172.19.0.10: IP 地址,提供对存储管理的访问(从 network-environment.yaml中的 StorageMgmtAlloctionPools 分配)

您可以使用 pcs 命令查看 Pacemaker 中设置的特定 IPaddr2 地址的详情。例如,要查看特定虚拟 IP 地址的超时和其他相关信息,请为 IPaddr2 资源之一输入以下内容:

$ 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)
Copy to Clipboard Toggle word wrap

如果您登录到当前分配给侦听地址 192.168.1.150 的控制器,请运行以下命令来确保其处于活动状态,并确保服务主动侦听该地址:

$ 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

$ sudo netstat -tupln | grep 192.168.1.150
    tcp  0  0 192.168.1.150:6080      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:9696      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8000      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8003      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8004      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8773      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8774      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:5000      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8776      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8777      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:9292      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:8080      0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:80        0.0.0.0:*  LISTEN      4333/haproxy
    tcp  0  0 192.168.1.150:35357     0.0.0.0:*  LISTEN      4333/haproxy
    udp  0  0 192.168.1.150:123       0.0.0.0:*              459/ntpd
    ...
    tcp  0  0 0.0.0.0:22              0.0.0.0:*  LISTEN      2471/sshd
    tcp  0  0 0.0.0.0:4567            0.0.0.0:*  LISTEN      10064/mysqld
    ...
    udp  0  0 0.0.0.0:51475           0.0.0.0:*              545/dhclient
    udp  0  0 0.0.0.0:123             0.0.0.0:*              459/ntpd
    udp  0  0 0.0.0.0:161             0.0.0.0:*              1633/snmpd
    ...
Copy to Clipboard Toggle word wrap

ip 命令显示 vlan100 接口正在侦听 192.168.1.150 和 192.168.1.151 IPv4 地址。在 netstat 命令的输出中,您可以看到侦听 192.168.1.150 接口的所有进程。除了 ntpd 进程(在端口 123 上监听监听),haproxy 进程是唯一侦听 192.168.1.150 的进程。另外,请注意,通过 192.168.1.150 (sshd、mysqld、dhclient、ntpd 等)侦听所有本地地址的进程也提供。

netstat 输出中显示的端口号可帮助您识别确切的服务 haproxy 正在侦听。您可以在 /etc/haproxy/haproxy.cfg 文件中查看这些端口号所代表的服务。下面是几个示例:

  • TCP 端口 6080: nova_novncproxy
  • TCP 端口 9696: neutron
  • TCP 端口 8000: heat_cfn
  • TCP 端口 8003: heat_cloudwatch
  • TCP 端口 80: horizon

目前,在 haproxy.cfg 中,所有这三个控制器都特别侦听 192.168.1.150 服务。但是,目前只有 controller-0 在外部侦听 192.168.1.150。因此,如果 controller-0 停机,HAProxy 只需要将 192.168.1.150 重新分配给另一个控制器,并且所有服务都已在运行。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat