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

Второй узел кластера drbd corosync все время пытается быть основным

Мы столкнулись с проблемой с кластером drbd corosync.

На одном узле, который является основным, все ресурсы (службы mysql, drbd) работают нормально. Но второй узел все время пытается быть основным.


Журналы ошибок второго узла, как показано ниже:

lrmd: [25272]: info: RA output: (mysql-drbd:0:promote:stderr) 0: State change failed: (-1) Multiple primaries not allowed by config 

Oct  1 16:39:39 node2 lrmd: [25272]: info: RA output: (mysql-drbd:0:promote:stderr) 0: State change failed: (-1) Multiple primaries not allowed by config 

Oct  1 16:39:39 node2 lrmd: [25272]: info: RA output: (mysql-drbd:0:promote:stderr) Command 'drbdsetup 0 primary' terminated with exit code 11 

Oct  1 16:39:39 node2 drbd[25416]: ERROR: mysql-disk: Called drbdadm -c /etc/drbd.conf primary mysql-disk

Oct  1 16:39:39 node2 drbd[25416]: ERROR: mysql-disk: Called drbdadm -c /etc/drbd.conf primary mysql-disk

Oct  1 16:39:39 node2 drbd[25416]: ERROR: mysql-disk: Exit code 11
Oct  1 16:39:39 node2 drbd[25416]: ERROR: mysql-disk: Exit code 11
Oct  1 16:39:39 node2 drbd[25416]: ERROR: mysql-disk: Command output: 
Oct  1 16:39:39 node2 drbd[25416]: ERROR: mysql-disk: Command output: 

corosync статус Master / Slave не идеален. См. Статус corosync ниже.

Node1

[root@node1 ~]# crm status
============
Last updated: Thu Oct  2 09:01:30 2014
Stack: openais

Current DC: node1 - partition WITHOUT quorum

Version: 1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3

2 Nodes configured, 2 expected votes 4 Resources configured.

============

Online: [ node1 ]

OFFLINE: [ node2 ]

 mysql-vip      (ocf::heartbeat:IPaddr2):       Started node1

 Master/Slave Set: mysql-drbd-ms

     Masters: [ node1 ]

     Stopped: [ mysql-drbd:1 ]

 mysql-fs       (ocf::heartbeat:Filesystem):    Started node1

 mysql-server   (ocf::heartbeat:mysql): Started node1

You have new mail in /var/spool/mail/root

Узел 2

[root@node2 ~]# crm status
============
Last updated: Thu Oct  2 09:03:04 2014
Stack: openais

Current DC: node2 - partition WITHOUT quorum

Version: 1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3
2 Nodes configured, 2 expected votes 4 Resources configured.
============

Online: [ node2 ]

OFFLINE: [ node1 ]


 Master/Slave Set: mysql-drbd-ms

     mysql-drbd:0       (ocf::linbit:drbd):     Slave node2 (unmanaged) FAILED

     Stopped: [ mysql-drbd:1 ]


Failed actions:
    mysql-drbd:0_promote_0 (node=node2, call=7, rc=-2, status=Timed Out): unknown exec error
    mysql-drbd:0_stop_0 (node=node2, call=13, rc=6, status=complete): not configured

Состояние DRBD на обоих узлах отображается нормально

Узел 1 (основной):

[root@node1 ~]# service drbd status

drbd driver loaded OK; device status:

version: 8.3.8 (api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by 

mockbuild@builder10.centos.org, 2010-06-04 08:04:09

m:res         cs         ro                 ds                 p  mounted  fstype

0:mysql-disk  Connected  Primary/Secondary  UpToDate/UpToDate  C

Узел 2 (Вторичный):

[root@node2 ~]# service drbd status

drbd driver loaded OK; device status:

version: 8.3.8 (api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by 

mockbuild@builder10.centos.org, 2010-06-04 08:04:09

m:res         cs         ro                 ds                 p  mounted  fstype

0:mysql-disk  Connected  Secondary/Primary  UpToDate/UpToDate  C

Это происходит потому, что у вас не настроено ограждение кластера (stonith), теперь ваш кластер находится в режиме разделения мозга.

 Now you have a cluster with two DC and every node are trying to start the resource

Похоже, ваша corosync на каждом узле не может взаимодействовать друг с другом. Вот почему каждый узел помечает свой узел как подключенный.

Я предлагаю попробовать одноадресную рассылку вместо многоадресной.

  1. Остановите corosync на обоих узлах.
  2. Обновите версию corosync, которая поддерживает одноадресную передачу 1.4.1.
  3. Измените конфигурацию corosync и добавьте ниже:
  4. Запустить corosync

member {

                    memberaddr: <node1 IP>
            }
            member {
                    memberaddr: <node2 IP>
            }
            ringnumber: 0
            bindnetaddr: <Network address of your nodes> 
            mcastport: 5405
    } 

транспорт: удпу

Прокомментируйте строку, в которой говорится

mcastaddr

Разрешите порты 5404 и 5405 через брандмауэр Iptable и запустите corosync на обоих узлах.

Спасибо.