如何使用 pcs 设置起搏器集群名称?

如何使用 pcs 设置起搏器集群名称?

我在 CentOS 7 上的 corosync 堆栈上运行两个 Pacemaker 集群,所有软件包均与发行版发布/更新包保持同步。

两个集群使用以下命令均不显示集群名称pcs status:如下所示:

群集名称:
最后更新时间:2014 年 11 月 3 日星期一 09:55:58
最后更改:2014 年 10 月 31 日星期五 11:09:22 通过 cibadmin 在 beaker 上
堆栈:corosync
当前 DC:踏板车 (2) - 具有法定人数的分区
版本:1.1.10-32.el7_0.1-368c726
配置了 5 个节点
21 配置资源

在部分中有一个cluster_name:条目,但我在起搏器中找不到与集群名称相关的任何内容totem/etc/corosync/corosync.conf加拿大国际投资局

集群是用pcs cluster setup --name clustername node1 node2 node3 node4 node5clustername是集群的预期名称)创建的。

/etc/corosync/corosync.conf是全世界可读的,以及它上面的目录。

答案1

pcs-0.9.115-32.el7该函数的源代码getClusterName实现如下:

def getClusterName():
    if is_rhel6():
        try:
            dom = parse(settings.cluster_conf_file)
        except (IOError,xml.parsers.expat.ExpatError):
            return ""

        return dom.documentElement.getAttribute("name")
    else:
        try:
            f = open(settings.corosync_conf_file,'r')
        except IOError as e:
            return ""

        p = re.compile('cluster_name: *(.*)')
        for line in f:
            m = p.match(line)
            if m:
                return m.group(1)

    return ""

此函数检查从(属性名称)rhel6中提取集群名称,或者在其他情况下从中提取。/etc/cluster/cluster.conf/etc/corosync/corosync.conf

cluster_name正则表达式要求文件中的和 名称 ( 'cluster_name: *(.*)')之间至少有一个空格corosync.conf,也许这就是问题所在。


def is_rhel6():
    try:
        issue = open('/etc/system-release').read()
    except IOError as e:
        return False

    if re.search(r'(Red Hat Enterprise Linux Server|CentOS|Scientific Linux) release 6\.', issue):
        return True
    else:
        return False

检查是否存在/etc/corosync/corosync.conf具有适当权限的文件。我认为这个错误可能与您有关:https://bugzilla.redhat.com/show_bug.cgi?id=1094812https://bugzilla.redhat.com/show_bug.cgi?id=1029129

我希望这会有所帮助。

相关内容