Я хочу создать активно-пассивный кластер для приложения, работающего на 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?
Спасибо.