web-dev-qa-db-ja.com

ペースメーカークラスター名をpcsで設定するにはどうすればよいですか?

CentOS 7のcorosyncスタックで2つのペースメーカークラスターを実行しており、すべてのパッケージがディストリビューションのリリース/更新パッケージで最新になっています。

コマンドpcs statusを使用すると、両方のクラスターにクラスター名が表示されません。次のようになります。

クラスター名:
最終更新日:2014年11月3日月曜日09:55:58 
最終変更日:2014年10月31日金曜日11:09:22ビーカーのcibadmin経由
スタック:corosync 
現在のDC:スクーター(2)-クォーラム付きのパーティション
バージョン:1.1.10-32.el7_0.1-368c726 
 5ノードが構成されています
 21個のリソースが構成されています

cluster_name:totemセクションに/etc/corosync/corosync.confエントリがありますが、ペースメーカーにクラスター名に関連するものが見つかりません[〜#〜] cib [〜#〜]

クラスターはpcs cluster setup --name clustername node1 node2 node3 node4 node5で作成されました(clusternameはクラスターの意図された名前です)。

/etc/corosync/corosync.confは、その上のディレクトリと同様に、誰でも読み取り可能です。

3
MattBianco

_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_ファイルの_corosync.conf_と名前('cluster_name: *(.*)')の間に少なくとも1つのスペースが必要です。これが問題である可能性があります。


_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

これがお役に立てば幸いです。

3
Federico Sierra