Como eu defino o nome do cluster do marcapasso com os pcs?

3

Estou executando dois clusters de marca-passos na pilha corosync no CentOS 7 com todos os pacotes atualizados com os pacotes de lançamento / atualização de distros.

Ambos os clusters não mostram nenhum nome de cluster com o comando pcs status : Assim:

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

Há uma entrada cluster_name: na seção totem de /etc/corosync/corosync.conf , mas não consigo encontrar nada relacionado ao nome do cluster no CIB do marcapasso.

Os clusters foram criados com pcs cluster setup --name clustername node1 node2 node3 node4 node5 (com clustername sendo o nome pretendido do cluster).

O /etc/corosync/corosync.conf é legível por todos, assim como os diretórios acima dele.

    
por MattBianco 03.11.2014 / 10:05

1 resposta

3

Nas fontes de pcs-0.9.115-32.el7 , a função getClusterName é implementada:

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 ""

Esta função verifica por rhel6 para extrair o nome do cluster de /etc/cluster/cluster.conf (nome do atributo) ou em outro caso de /etc/corosync/corosync.conf .

A expressão regular esperava pelo menos um espaço entre cluster_name e nome ( 'cluster_name: *(.*)' ) no arquivo corosync.conf , talvez esse seja o problema.

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

Verifique se existe o arquivo /etc/corosync/corosync.conf com as devidas permissões. Eu acho que esse bug pode ser relevante para você: link e link

Espero que isso ajude.

    
por 04.11.2014 / 00:13