无法初始化在docker容器中运行的corosync。 corosync-cfgtool -s命令产生以下内容:

Could not initialize corosync configuration API error 12


/etc/corosync/corosync.conf文件具有以下内容:

compatibility: whitetank

totem {
    version: 2
    secauth: off
    threads: 0
    interface {
        ringnumber: 0
        bindnetaddr: 127.0.0.1
        mcastaddr: 239.255.1.1
        mcastport: 5405
        ttl: 1
    }
}

logging {
    fileline: off
    to_stderr: no
    to_logfile: yes
    logfile: /var/log/corosync.log
    to_syslog: yes
    debug: off
    timestamp: on
    logger_subsys {
        subsys: AMF
        debug: off
    }
}


/var/log/corosync.log文件显示以下内容:

May 02 20:13:22 corosync [MAIN  ] Could not set SCHED_RR at priority 99: Operation not permitted (1)
May 02 20:13:22 corosync [MAIN  ] Could not lock memory of service to avoid page faults: Cannot allocate memory (12)
May 02 20:13:22 corosync [MAIN  ] Corosync Cluster Engine ('1.4.6'): started and ready to provide service.
May 02 20:13:22 corosync [MAIN  ] Corosync built-in features: nss
May 02 20:13:22 corosync [MAIN  ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
May 02 20:13:22 corosync [TOTEM ] Initializing transport (UDP/IP Multicast).
May 02 20:13:22 corosync [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).

最佳答案

我在bash脚本中运行以下命令:

service corosync start
service corosync status
corosync-cfgtool -s


显然,它运行太快,没有给corosync足够的时间来初始化。将脚本更改为以下似乎有效:

service corosync start
service corosync status
sleep 5
corosync-cfgtool -s


现在,我从corosync-cfgtool -s看到以下输出:

Printing ring status.
Local node ID 16777343
RING ID 0
    id  = 127.0.0.1
    status  = ring 0 active with no faults

07-24 13:03