Corosync кластер под NAT - PullRequest
       20

Corosync кластер под NAT

0 голосов
/ 30 июня 2019

Я хочу создать активно-пассивный кластер для приложения, работающего на 2 виртуальных машинах FreeBSD, виртуализированных 2 хостами KVM centos 7, по одному на каждую виртуальную машину.

Виртуальная машина имеет интерфейс с IP 192.168.1.2для каждого хоста, в то время как хосты KVM имеют свой частный IP-адрес 10.xxx, различный для каждого хоста.

Виртуальные машины создаются iptables на хосте centos.Правила перенаправляют соединение для портов от 5000 до 39999 (tcp и udp) на те же порты через ip 192.168.1.2 (виртуальная машина FreeBSD).

Для corosync мне нужно использовать одноадресную рассылку, потому что я могуне используйте многоадресную рассылку с этим сетевым конфигурацией, с портом 5405. Порт доступен с обеих виртуальных машин, я протестировал его с помощью tcpdump.

DNS-имя "srv1" установлено на частный IP (10.xxx) для KVM-хоста 1, в то время как имя «srv2» указывает на частный IP-адрес для KVM-хоста 2.

На виртуальной машине srv1 (FreeBSD) я установил это в / etc / hosts:

192.168.1.2    srv1

На виртуальной машине srv2 (FreeBSD) я установил это в / etc / hosts:

192.168.1.2    srv2

Итак, список узлов corosync может связываться с правильным интерфейсом и связываться с другим с помощью ip на DNS.

Это corosync.conf:

totem {
  version: 2
  cluster_name: cluster
  transport: udpu
  interface {
    ringnumber: 0
#   bindnetaddr: 192.168.1.0
    mcastaddr:  226.94.1.1
   broadcast: yes
    mcastport: 5405
  }
}

quorum {
  provider: corosync_votequorum
  two_node: 1
}

nodelist {
  node {
    ring0_addr: srv1
    name: primary
    nodeid: 1
  }
  node {
    ring0_addr: srv2
    name: secondary
    nodeid: 2
  }
}

logging {
  to_logfile: yes
  logfile: /var/log/corosync/corosync.log
  to_syslog: yes
  timestamp: on
}

Это не работает, потому что один узел видит srv1 с 192.168.1.2 и srv2 с ip 10.xxx, а другой - srv1 с10.xxx и srv2 с 192.168.1.2 Таким образом, в журнале я вижу создание бесполезного членства:

Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [TOTEM ] A new membership (192.168.1.2:18668) was formed. Members
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [QUORUM] Members[1]: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [TOTEM ] A new membership (192.168.1.2:18672) was formed. Members
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [QUORUM] Members[1]: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [TOTEM ] A new membership (192.168.1.2:18676) was formed. Members
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [QUORUM] Members[1]: 2
Jun 30 16:07:10 [1889] vmsrv2.net.local corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 30 16:07:11 [1889] vmsrv2.net.local corosync notice  [TOTEM ] A new membership (192.168.1.2:18680) was formed. Members
Jun 30 16:07:11 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:11 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2
Jun 30 16:07:11 [1889] vmsrv2.net.local corosync notice  [QUORUM] Members[1]: 2
Jun 30 16:07:11 [1889] vmsrv2.net.local corosync notice  [MAIN  ] Completed service synchronization, ready to provide service.
Jun 30 16:07:11 [1889] vmsrv2.net.local corosync notice  [TOTEM ] A new membership (192.168.1.2:18684) was formed. Members
Jun 30 16:07:11 [1889] vmsrv2.net.local corosync notice  [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2

Итак, используя команду crm status, я вижу на vmsrv1 только основной узел в сети, на vmsrv2 только вторичный узел в сети.

Как я могу решить эту проблему, не настраивая corosync и кардиостимулятор наCentOS Host?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...