5.2. 在 overcloud 上部署和测试隔离


隔离配置过程包括以下阶段:

  1. 查看 STONITH 和 Pacemaker 的状态。
  2. 生成 fencing.yaml 文件。
  3. 重新部署 overcloud 并测试配置。

先决条件

确保您可以访问您在 director 中注册 Controller 节点时创建的 nodes.json 文件。此文件是您在部署过程中生成的 fence.yaml 文件所需的输入。

检查 STONITH 和 Pacemaker 的状态

  1. heat-admin 用户身份登录每个 Controller 节点。
  2. 验证集群是否正在运行:

    $ sudo pcs status

    输出示例:

    Cluster name: openstackHA
    Last updated: Wed Jun 24 12:40:27 2015
    Last change: Wed Jun 24 11:36:18 2015
    Stack: corosync
    Current DC: lb-c1a2 (2) - partition with quorum
    Version: 1.1.12-a14efad
    3 Nodes configured
    141 Resources configured
  3. 验证 STONITH 是否已禁用:

    $ sudo pcs property show

    输出示例:

    Cluster Properties:
    cluster-infrastructure: corosync
    cluster-name: openstackHA
    dc-version: 1.1.12-a14efad
    have-watchdog: false
    stonith-enabled: false

生成 fence.yaml 环境文件

选择以下选项之一:

  • 如果使用 IPMI 或 Red Hat Virtualization(RHV)隔离代理,请运行以下命令来生成 fence.yaml 环境文件:

    $ openstack overcloud generate fencing --output fencing.yaml nodes.json
    注意
    • 此命令将 ilodrac 电源管理详细信息转换为 IPMI 等效值。
    • 确保 nodes.json 文件包含节点上其中一个网络接口的 MAC 地址。有关更多信息,请参阅 Overcloud 的注册节点
    • 如果使用 RHV,请确保使用具有权限的角色来创建和启动虚拟机,如 UserVMManager
  • 如果您使用不同的隔离代理,如 Storage Block Device(SBD)、fence_kdump 或 Redfish,请手动生成 fence.yaml 文件。

    注意

    如果使用预置备节点,还必须手动创建 fence.yaml 文件。

有关支持的隔离代理的详情,请参考 第 5.1 节 “支持的隔离代理”

重新部署 overcloud 并测试配置

  1. 运行 overcloud 部署命令 并包含您生成的 fence.yaml 文件,以便在 Controller 节点上配置隔离:

    openstack overcloud deploy --templates \
    -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
    -e ~/templates/network-environment.yaml \
    -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor Compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan \
    -e fencing.yaml
  2. 登录到 overcloud,并验证是否为每个 Controller 节点配置了隔离:

    1. 检查 Pacemaker 是否已配置为资源管理器:

      $ source stackrc
      $ nova list | grep controller
      $ ssh heat-admin@<controller-x_ip>
      $ sudo pcs status |grep fence
      stonith-overcloud-controller-x (stonith:fence_ipmilan): Started overcloud-controller-y

      在本例中,Pacemaker 被配置为为 fence.yaml 文件中指定的每个 Controller 节点使用 STONITH 资源。

      注意

      您不能在其控制的同一节点中配置 fence-resource 进程。

    2. 运行 pcs stonith show 命令检查隔离资源属性:

      $ sudo pcs stonith show <stonith-resource-controller-x>

      STONITH 属性值必须与 fence.yaml 文件中的值匹配

验证 Controller 节点上的隔离

要测试隔离是否正常工作,您可以通过关闭 Controller 节点上的所有端口并重启服务器来触发隔离。

  1. 登录到 Controller 节点:

    $ source stackrc
    $ nova list |grep controller
    $ ssh heat-admin@<controller-x_ip>
  2. 切换到 root 用户并在每个端口中运行 iptables 命令:

    $ sudo -i
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT &&
    iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT &&
    iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5016 -j ACCEPT &&
    iptables -A INPUT -p udp -m state --state NEW -m udp --dport 5016 -j ACCEPT &&
    iptables -A INPUT ! -i lo -j REJECT --reject-with icmp-host-prohibited &&
    iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT &&
    iptables -A OUTPUT -p tcp --sport 5016 -j ACCEPT &&
    iptables -A OUTPUT -p udp --sport 5016 -j ACCEPT &&
    iptables -A OUTPUT ! -o lo -j REJECT --reject-with icmp-host-prohibited
    重要

    此步骤丢弃到 Controller 节点的所有连接,这会导致服务器重启。

  3. 在不同的 Controller 节点中找到 Pacemaker 日志文件的隔离事件:

    $ ssh heat-admin@<controller-x_ip>
    $ less /var/log/cluster/corosync.log
    (less): /fenc*

    如果 STONITH 服务对控制器执行隔离操作,则日志文件会显示隔离事件。

  4. 等待几分钟,然后通过运行 pcs status 命令验证重新引导的 Controller 节点是否已在集群中再次运行。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部