Как я определяю имя кластера кардиостимулятора с ПК?

Я выполняю два кластера кардиостимулятора на стопке corosync на CentOS 7 со всеми пакетами, актуальными с пакетами выпуска/обновлений дистрибутива.

Оба кластера не показывают кластерного имени с командой pcs status: Как это:

Cluster name:
Last updated: Mon Nov  3 09:55:58 2014
Last change: Fri Oct 31 11:09:22 2014 via cibadmin on beaker
Stack: corosync
Current DC: scooter (2) - partition with quorum
Version: 1.1.10-32.el7_0.1-368c726
5 Nodes configured
21 Resources configured

Существует a cluster_name: запись в totem раздел /etc/corosync/corosync.conf, но я ничто не могу найти связанным с кластерным именем в кардиостимуляторе CIB.

Кластеры были созданы с pcs cluster setup --name clustername node1 node2 node3 node4 node5clustername будучи намеченным названием кластера).

/etc/corosync/corosync.conf читаемо миром, а также каталоги выше его.

3
задан 6 November 2014 в 12:37
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=1094812 and https://bugzilla.redhat.com/show_bug.cgi?id=1029129

I hope this help.

3
ответ дан 3 December 2019 в 06:33

Теги

Похожие вопросы