Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » LVS с реальными серверами под FreeBSD

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

forgotten_genius



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! Помогите, пожалуйста, с такой проблемой: есть load balancer (ipvs+heartbeat+ldirectord) настроенный под Debian 6.0.6, все работает отлично, когда нужно балансировать запросы на реальные сервера под Linux. Стало необходимо перенаправлять запросы на реальные сервера под FreeBSD, вот с этим возникли проблемы. Балансировщик перенаправляет запросы на фрю, что показывает tcpdump, но ответы фря не отдает, скорее всего просто не знает куда отправлять. Я подозреваю, что в этом виноват ARP.
 
Использую схему IPVS Direct Routing, как обозначено здесь .  
 
Для того, чтобы реальные сервера под Linux отдавали ответы нужно провести на них следующие манипуляции:
1. Добавить в ядро следующие параметры:

Код:
# nano /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2

2. Добавить alias к loopback интерфейсу:

Код:
# nano /etc/network/interfaces
auto lo:0
iface lo:0 inet static
  address 172.16.2.33 (адрес VIP)
  netmask 255.255.255.255

После этого ответы от реальных серверов идут и система работает в целом корректно.
 
Итак вернмся к фре...  
Реальный сервер под FreeBSD 7.2, на которой я прописал alias для loopback интерфейса, но как сделать так, чтобы фря игнорировала ARP?
 
Вывод ipvs (пока с одним хостом, но все же...):

Код:
# ipvsadm -Ln  
 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.2.33:30583 rr persistent 120
  -> 172.16.2.37:30583            Route   10     1          2  
 

 
Всё находится в одной подсети:
VIP (виртуальный адрес балансера) 172.16.2.33
RIP (адрес реального сервера) 172.16.2.37
 
Вот нашел как бы решение, но не помогло...   тыц сюда
 
P.S. К сожалению сейчас нет возможности выложить tcpdump, только завтра утром. Спасибо!

Всего записей: 23 | Зарегистр. 11-02-2010 | Отправлено: 23:10 11-10-2012
forgotten_genius



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот дампы при разных настройках loopback.
 
Напрямую c клиента 172.16.2.35 без участия балансера 172.16.2.33:

Код:
# tcpdump -vv port 30583
tcpdump: listening on em0, link-type EN10MB (Ethernet), capture size 96 bytes
11:24:24.972474 IP (tos 0x10, ttl 64, id 25430, offset 0, flags [DF], proto TCP (6), length 60) 172.16.2.35.44844 > 172.16.2.37.30583: S, cksum 0x0549 (correct), 678177972:678177972(0) win 5840 <mss 1460,sackOK,timestamp 64638946 0,nop,wscale 5>
11:24:24.972565 IP (tos 0x0, ttl 64, id 1716, offset 0, flags [DF], proto TCP (6), length 60) 172.16.2.37.30583 > 172.16.2.35.44844: S, cksum 0x5c97 (incorrect (-> 0x9372), 3076133869:3076133869(0) ack 678177973 win 65535 <mss 1460,nop,wscale 3,sackOK,timestamp 233221993 64638946>
11:24:24.975073 IP (tos 0x10, ttl 64, id 25431, offset 0, flags [DF], proto TCP (6), length 52) 172.16.2.35.44844 > 172.16.2.37.30583: ., cksum 0xc182 (correct), 1:1(0) ack 1 win 183 <nop,nop,timestamp 64638947 233221993>

 
Через балансер без поднятия VIP на loopback:

Код:
# tcpdump -vv port 30583
tcpdump: listening on em0, link-type EN10MB (Ethernet), capture size 96 bytes
11:26:45.120591 IP (tos 0x10, ttl 64, id 23042, offset 0, flags [DF], proto TCP (6), length 60) 172.16.2.35.57140 > 172.16.2.33.30583: S, cksum 0xc887 (correct), 1447330492:1447330492(0) win 5840 <mss 1460,sackOK,timestamp 64673982 0,nop,wscale 5>
11:26:48.115872 IP (tos 0x10, ttl 64, id 23043, offset 0, flags [DF], proto TCP (6), length 60) 172.16.2.35.57140 > 172.16.2.33.30583: S, cksum 0xc599 (correct), 1447330492:1447330492(0) win 5840 <mss 1460,sackOK,timestamp 64674732 0,nop,wscale 5>
11:26:54.116060 IP (tos 0x10, ttl 64, id 23044, offset 0, flags [DF], proto TCP (6), length 60) 172.16.2.35.57140 > 172.16.2.33.30583: S, cksum 0xbfbd (correct), 1447330492:1447330492(0) win 5840 <mss 1460,sackOK,timestamp 64676232 0,nop,wscale 5>

 
Через балансер с поднятием VIP на loopback и отключением ARP:

Код:
# tcpdump -vv port 30583
tcpdump: listening on em0, link-type EN10MB (Ethernet), capture size 96 bytes
11:29:30.994232 IP (tos 0x10, ttl 64, id 9030, offset 0, flags [DF], proto TCP (6), length 60) 172.16.2.35.57141 > 172.16.2.33.30583: S, cksum 0xff9c (correct), 2784057852:2784057852(0) win 5840 <mss 1460,sackOK,timestamp 64715450 0,nop,wscale 5>
11:29:30.994272 IP (tos 0x10, ttl 64, id 1861, offset 0, flags [DF], proto TCP (6), length 40) 172.16.2.33.30583 > 172.16.2.35.57141: R, cksum 0x5c7f (incorrect (-> 0xfccf), 0:0(0) ack 2784057853 win 0

 
Через балансер с поднятием VIP на локал и без отключения APR:

Код:
# tcpdump -vv port 30583
tcpdump: listening on em0, link-type EN10MB (Ethernet), capture size 96 bytes
11:34:49.507921 IP (tos 0x10, ttl 64, id 27572, offset 0, flags [DF], proto TCP (6), length 60) 172.16.2.35.57142 > 172.16.2.33.30583: S, cksum 0x759d (correct), 2020661872:2020661872(0) win 5840 <mss 1460,sackOK,timestamp 64795076 0,nop,wscale 5>
11:34:49.508619 IP (tos 0x10, ttl 64, id 188, offset 0, flags [DF], proto TCP (6), length 40) 172.16.2.33.30583 > 172.16.2.35.57142: R, cksum 0x5c7f (incorrect (-> 0xa9db), 0:0(0) ack 2020661873 win 0

Последние два дампа одинаковые, такое чувство, что ARP все-же не отключается.
 
Добавлено:
Отвечу сам же на свой вопрос:
Ошибка оказалась банальна. Там работает древний софт в связке с mthost, который принимал запросы только на указанный в нем ip, который конечно же отличался от VIP. Пришлось изменить настройки этих двух прог и все заработало в штатном режиме.  
 
Всем спасибо за внимание!
Тему можно закрывать.

Всего записей: 23 | Зарегистр. 11-02-2010 | Отправлено: 12:57 12-10-2012
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » LVS с реальными серверами под FreeBSD


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru