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

Corosync на облачных серверах

У меня есть два сервера Oracle Linux 7 в облаке, и я хочу использовать Corosync. Серверы находятся в одной облачной сети (не в локальной сети), но у них есть только один ник. Вот файлы conf.

Сервер A:

totem {
        version: 2

        secauth: off
        transport: udpu

        crypto_cipher: none
        crypto_hash: none

        interface {
                member {
                        memberaddr: x.y.z.i
                }
                member {
                        memberaddr: x.y.z.j
                }
                ringnumber: 0
                bindnetaddr: x.y.z.i
                mcastport: 5405
                ttl: 1
        }
}

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

quorum {
        #provider: corosync_votequorum
}

Сервер B:

totem {
        version: 2

        secauth: off
        transport: udpu

        crypto_cipher: none
        crypto_hash: none

        interface {
                member {
                        memberaddr: x.y.z.i
                }
                member {
                        memberaddr: x.y.z.j
                }
                ringnumber: 0
                bindnetaddr: x.y.z.j
                mcastport: 5405
                ttl: 1
        }
}

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

quorum {
        #provider: corosync_votequorum
}

Когда я запускаю службы Corosync на обоих серверах, я вижу, что они не соединяются друг с другом, но в журналах сервера A каждые две секунды появляются повторяющиеся записи журнала:

Jun 08 04:22:48 [17856] serverA corosync notice  [TOTEM ] A new membership (x.y.z.i:20544) was formed. Members
Jun 08 04:22:48 [17856] serverA corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 08 04:22:49 [17856] serverA corosync notice  [TOTEM ] A new membership (x.y.z.i:20548) was formed. Members
Jun 08 04:22:49 [17856] serverA corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 08 04:22:50 [17856] serverA corosync notice  [TOTEM ] A new membership (x.y.z.i:20552) was formed. Members
Jun 08 04:22:50 [17856] serverA corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 08 04:22:52 [17856] serverA corosync notice  [TOTEM ] A new membership (x.y.z.i:20556) was formed. Members
Jun 08 04:22:52 [17856] serverA corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 08 04:22:53 [17856] serverA corosync notice  [TOTEM ] A new membership (x.y.z.i:20560) was formed. Members
Jun 08 04:22:53 [17856] serverA corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 08 04:22:55 [17856] serverA corosync notice  [TOTEM ] A new membership (x.y.z.i:20564) was formed. Members
Jun 08 04:22:55 [17856] serverA corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.

А вот результаты "corosync-cmapctl | grep member":

Сервер A:

runtime.totem.pg.mrp.srp.members.1489420110.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.1489420110.ip (str) = r(0) ip(x.y.z.i)
runtime.totem.pg.mrp.srp.members.1489420110.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.1489420110.status (str) = joined
totem.interface.0.member.0 (str) = x.y.z.j
totem.interface.0.member.1 (str) = x.y.z.i

Сервер B:

runtime.totem.pg.mrp.srp.members.1489420107.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.1489420107.ip (str) = r(0) ip(x.y.z.j)
runtime.totem.pg.mrp.srp.members.1489420107.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.1489420107.status (str) = joined
totem.interface.0.member.0 (str) = x.y.z.j
totem.interface.0.member.1 (str) = x.y.z.i

Что я делаю не так?

Вы должны использовать частный IP-адрес, а не общедоступный IP-адрес

corosync использует многоадресную сетевую связь, которая блокируется некоторыми облачными провайдерами, например, AWS.

http://aws.amazon.com/vpc/faqs/

В. Поддерживает ли Amazon VPC многоадресную или широковещательную рассылку?

Нет