Узел lvs-tun не подключается
Я настраиваю кластер LVS, используя туннелирование. Цель состоит в том, чтобы иметь два сервера-директора (в разных центрах обработки данных) и один реальный сервер (на данный момент в балансировке нагрузки будет добавлено еще больше). Реальный сервер доступен через порты 80, 443 и 8080
Мне удалось настроить моего главного директора, и он работает просто отлично, все порты открыты, и данные передаются хорошо
Но директор резервного копирования может подключаться только к реальному серверу через порт 443. Вот вывод, который я получаю в / var / log / messages:
Oct 27 12:25:20 vps4252 pulse[2819]: STARTING PULSE AS MASTER
Oct 27 12:25:38 vps4252 pulse[2819]: partner dead: activating lvs
Oct 27 12:25:38 vps4252 lvsd[2821]: starting virtual service https active: 443
Oct 27 12:25:38 vps4252 lvsd[2821]: create_monitor for https/node1 running as pid 2831
Oct 27 12:25:38 vps4252 lvsd[2821]: starting virtual service http_8080 active: 8080
Oct 27 12:25:38 vps4252 lvsd[2821]: create_monitor for http_8080/node1 running as pid 2833
Oct 27 12:25:38 vps4252 nanny[2831]: starting LVS client monitor for 103.13.xxx.xxx:443 -> 103.29.zzz.zzz:443
Oct 27 12:25:38 vps4252 nanny[2833]: starting LVS client monitor for 103.13.xxx.xxx:8080 -> 103.29.zzz.zzz:8080
Oct 27 12:25:38 vps4252 nanny[2831]: [ active ] making 103.29.zzz.zzz:443 available
Oct 27 12:25:43 vps4252 pulse[2823]: gratuitous lvs arps finished
(игнорировать недостающие линии порта 80, я отключил его во время тестирования)
Кажется, процесс няни может подключиться только к реальному серверу через порт 443. Тем не менее, при использовании netcat или curl, я получаю правильный ответ через эти два других порта.
Вот мой lvs.cf (как один сервер):
serial_no = 36
primary = 103.13.yyy.yyy
service = lvs
backup = 0.0.0.0
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = tunnel
debug_level = NONE
virtual http {
active = 1
address = 103.13.xxx.xxx eth0:1
vip_nmask = 255.255.255.255
port = 80
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
#Define nodes
server node1 {
address = 103.29.zzz.zzz
active = 1
port = 80
weight = 1
}
}
virtual https {
active = 1
address = 103.13.xxx.xxx eth0:1
vip_nmask = 255.255.255.255
port = 443
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
#Define nodes
server node1 {
address = 103.29.zzz.zzz
active = 1
port = 443
weight = 1
}
}
virtual http_8080 {
active = 1
address = 103.13.xxx.xxx eth0:1
vip_nmask = 255.255.255.255
port = 8080
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 1
protocol = tcp
#Define nodes
server node1 {
address = 103.29.zzz.zzz
active = 1
port = 8080
weight = 1
}
}
Туннель на реальном сервере был установлен правильно (в конце концов, порт 443 работает)
Так что я в замешательстве... Есть ли способ заставить узел быть активным, даже если няня его не находит?
1 ответ
Это было решено путем создания bash-скрипта для проверки связи с реальными серверами и вызова его из файла конфигурации lvs