Назад | Перейти на главную страницу

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

Я использую два кластера кардиостимуляторов в стеке 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

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

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

В /etc/corosync/corosync.conf доступен для чтения во всем мире, как и каталоги над ним.

В источниках 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 и https://bugzilla.redhat.com/show_bug.cgi?id=1029129

Надеюсь, это поможет.