AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 592691
Accepted
Iain Hallam
Iain Hallam
Asked: 2014-05-03 03:15:25 +0800 CST2014-05-03 03:15:25 +0800 CST 2014-05-03 03:15:25 +0800 CST

如何在降级模式下运行 CentOS (Red Hat) 集群?

  • 772

我在 CentOS 6.5 上安装了 Red Hat 的集群软件,并使用它来提供从一个网络到另一个网络的冗余路由。这很好用,我有一对提供服务的盒子,所以如果一个失败(例如,如果我通过删除它的网络连接进行测试),另一个会接管路由。

但是,如果我必须对剩余的盒子做任何事情,由于 rgmanager 的问题,我无法重新启动它:

service rgmanager stop

挂起,并且停止该过程的唯一方法就是kill -9它。这显然也会影响任何试图停止服务的操作,例如 areboot或poweroff.

当我确实设法自行启动服务器时,尽管集群启动了,但 rgmanager 并未显示为正在运行,clustat甚至没有任何冗余路由服务可见,更不用说启动了。

例如,如果这些盒子被部署到远程位置,并且需要在我们有机会更换故障盒子之前关闭电源,这可能会导致问题。

这是我的 cluster.conf:

<?xml version="1.0"?>
<cluster config_version="2" name="router-ha">
        <fence_daemon/>
        <clusternodes>
                <clusternode name="router-01" nodeid="1"/>
                <clusternode name="router-02" nodeid="2"/>
        </clusternodes>
        <cman expected_votes="1" two_node="1"/>
        <fencedevices/>
        <rm>
                <failoverdomains/>
                <resources>
                        <ip address="10.0.0.1" monitor_link="1" sleeptime="0"/>
                        <ip address="10.0.0.2" monitor_link="1" sleeptime="0"/>
                        <ip address="10.2.0.1" monitor_link="1" sleeptime="0"/>
                        <ip address="10.4.0.1" monitor_link="1" sleeptime="0"/>
                </resources>
                <service autostart="1" name="routing-a" recovery="restart">
                        <ip ref="10.0.0.1"/>
                        <ip ref="10.2.0.1"/>
                </service>
                <service autostart="1" name="routing-b" recovery="restart">
                        <ip ref="10.0.0.2"/>
                        <ip ref="10.4.0.1"/>
                </service>
        </rm>
</cluster>

如果看不到另一个,为什么我不能在一个盒子上启动服务?当然,作为冗余对的必要部分,您不依赖另一台机器来启动集群服务?

linux
  • 1 1 个回答
  • 578 Views

1 个回答

  • Voted
  1. Best Answer
    Petter H
    2014-12-02T13:31:20+08:002014-12-02T13:31:20+08:00

    要运行集群服务,需要一个仲裁。通常在例如一个三节点集群中,每个成员每个都有一票:如果你拔掉一个插头,它会知道它是不合格的,因为它只有不到一半的可用票(该值实际上是可配置的)。没有仲裁的集群不适合在其上运行集群服务。

    这个原则不仅适用于 Red Hat 集群,而且是一个通用原则。但是,解决方案和实现可能会有所不同。还有双节点集群的实现,因为如果你给两个节点各投一票,通常不会有一个节点是quorate的。

    当然,作为冗余对的必要部分,您不依赖另一台机器来启动集群服务?

    对于 Red Hat,在一个双节点集群中,有一个特殊条件适用:

        <cman expected_votes="1" two_node="1"/>
    

    当你拔掉插头时会发生什么,两个节点将失去彼此的联系。

    为了确定其中哪一个具有法定人数,他们都将尝试互相STONITH 。

    STONITH 是 Shoot-The-Other-Node-In-The-Head 的首字母缩写词,它可以保护您的数据不被恶意节点或并发访问破坏。仅仅因为一个节点没有响应,这并不意味着它没有访问您的数据。100% 确保您的数据安全的唯一方法是使用 STONITH 隔离节点,以便我们可以确定该节点确实处于脱机状态,然后才允许从另一个节点访问数据。

    因此,您所做的假设是正确的,您的集群配置错误并且需要隔离代理才能运行,因为通过拔掉插头,您不仅会使您的服务不可用,这通常会导致rgmanager故障转移到其他节点(或如何无论您是否已将其配置为执行此操作),您还可以删除集群节点之间的心跳链接。尽管rgmanager可能会尝试执行您配置的操作,cman但仍然无法确定这些节点中的哪一个具有仲裁。相反,它会始终尝试隔离另一个节点,但是由于您没有配置隔离代理,它将无限期地卡住。

    所以这里有两个很好的建议给你:

    1. 通过在隔离的网络上向集群节点添加额外的接口,将集群流量与网络流量分开,这样当您在面向应用程序的接口上拔下插头时,集群将执行干净的故障转移
    2. 配置围栏。
    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve