PDA

Bekijk Volledige Versie : LVS problemen



Costeijn
24/05/07, 16:34
Hallo allemaal.

Ik probeer onder vmware een loadbalacing cluster te maken maar ik loop tegen wat probleempjes aan. Ik gebruik LVS met een NAT LB methode. Hieronder een schematisch overzicht van het netwerk.

http://www.pcextreme.nl/img/loadbalancing.png

Ik zal even uitleggen wat ik precies heb gedaan:

Als eerste heb ik mijn Loadbalancer geïnstalleerd met Ubuntu 6.06 amd64. Daarna mijn webservers tevens ook met Ubuntu 6.06 amd64. De /home van de webservers heb ik gemount vanaf mijn NAS. Zou kan elke webserver erbij.

Ik heb de ip_vs modules geladen en toegevoegd aan /etc/modules:

echo ip_vs_dh >> /etc/modules
echo ip_vs_ftp >> /etc/modules
echo ip_vs >> /etc/modules
echo ip_vs_lblc >> /etc/modules
echo ip_vs_lblcr >> /etc/modules
echo ip_vs_lc >> /etc/modules
echo ip_vs_nq >> /etc/modules
echo ip_vs_rr >> /etc/modules
echo ip_vs_sed >> /etc/modules
echo ip_vs_sh >> /etc/modules
echo ip_vs_wlc >> /etc/modules
echo ip_vs_wrr >> /etc/modules

Daarna met modprobe de modules geladen.

Daarna heb ik via apt-get ipvsadm binnen gehaald. Dit allemaal zonder errors.

In de sysctl.conf heb ik net.ipv4.ip_forward = 1 aangezet en met sysctl -p gecontrolleerd en werkt.Ik heb op de Loadbalancer de interfaces gebruikt:



eth0:
address:10.87.4.1
netmask:255.255.0.0
network: 10.87.0.0
broadcast: 10.87.255.255
gateway: 10.87.3.1 // ip van me router

eth0:1 (Virtual IP)
address:10.87.10.1
netmask:255.255.255.255
network: 10.87.0.0
broadcast: 10.87.255.255
gateway: 10.87.3.1 // ip van me router


de webservers hebben 10.87.5.1 en 10.87.5.2 met de gateway van 10.87.4.1 (LB) de fileserver is 10.87.6.1

Met ipvsadm -L -n krijg ik deze output:



IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.87.10.1:80 rr
-> 10.87.5.2:80 Masq 1 0 0
-> 10.87.5.1:80 Masq 1 0 0


via tcpdump -n -i eth0 port 80 op web01 als ik naar 10.87.10.1(Virtual IP) verbind met me browser(10.87.1.3)




tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0:1, link-type EN10MB (Ethernet), capture size 96 bytes
10:22:03.367640 IP 10.87.1.3.1571 > 72.14.217.91.80: S 3548062792:3548062792(0) win 65535 <mss 1460,nop,nop,sackOK>
10:22:03.412934 IP 72.14.217.91.80 > 10.87.1.3.1571: S 1702673852:1702673852(0) ack 3548062793 win 8190 <mss 1460>
10:22:03.412934 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 1 win 65535
10:22:03.415516 IP 10.87.1.3.1571 > 72.14.217.91.80: P 1:679(678) ack 1 win 65535
10:22:03.476247 IP 72.14.217.91.80 > 10.87.1.3.1571: . ack 679 win 7060
10:22:03.480660 IP 72.14.217.91.80 > 10.87.1.3.1571: P 1:1232(1231) ack 679 win 7060
10:22:03.489603 IP 72.14.217.91.80 > 10.87.1.3.1571: . 1232:2662(1430) ack 679 win 7060
10:22:03.489609 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 2662 win 65535
10:22:03.490120 IP 72.14.217.91.80 > 10.87.1.3.1571: . 2662:4092(1430) ack 679 win 7060
10:22:03.532617 IP 72.14.217.91.80 > 10.87.1.3.1571: . 4092:5522(1430) ack 679 win 7060
10:22:03.532624 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 5522 win 65535
10:22:03.532625 IP 72.14.217.91.80 > 10.87.1.3.1571: . 5522:6952(1430) ack 679 win 7060
10:22:03.536446 IP 72.14.217.91.80 > 10.87.1.3.1571: . 6952:8382(1430) ack 679 win 7060
10:22:03.536456 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 8382 win 65535
10:22:03.564517 IP 72.14.217.91.80 > 10.87.1.3.1571: . 8382:9812(1430) ack 679 win 7060
10:22:03.565059 IP 72.14.217.91.80 > 10.87.1.3.1571: . 9812:11242(1430) ack 679 win 7060
10:22:03.565091 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 11242 win 65535
10:22:03.566831 IP 72.14.217.91.80 > 10.87.1.3.1571: P 11242:12672(1430) ack 679 win 7060
10:22:03.567212 IP 72.14.217.91.80 > 10.87.1.3.1571: . 12672:14102(1430) ack 679 win 7060
10:22:03.567214 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 14102 win 65535
10:22:03.570851 IP 72.14.217.91.80 > 10.87.1.3.1571: . 14102:15532(1430) ack 679 win 7060
10:22:03.609527 IP 72.14.217.91.80 > 10.87.1.3.1571: . 15532:16962(1430) ack 679 win 7060
10:22:03.609549 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 16962 win 65535
10:22:03.609925 IP 72.14.217.91.80 > 10.87.1.3.1571: P 16962:18392(1430) ack 679 win 7060
10:22:03.613268 IP 72.14.217.91.80 > 10.87.1.3.1571: . 18392:19822(1430) ack 679 win 7060
10:22:03.613280 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 19822 win 65535
10:22:03.613281 IP 72.14.217.91.80 > 10.87.1.3.1571: . 19822:21252(1430) ack 679 win 7060
10:22:03.655456 IP 72.14.217.91.80 > 10.87.1.3.1571: . 21252:22682(1430) ack 679 win 7060
10:22:03.655461 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 22682 win 65535
10:22:03.655463 IP 72.14.217.91.80 > 10.87.1.3.1571: P 22682:22921(239) ack 679 win 7060
10:22:03.825899 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 22921 win 65296
10:24:33.261274 IP 72.14.217.91.80 > 10.87.1.3.1571: F 22921:22921(0) ack 679 win 8190
10:24:33.261277 IP 10.87.1.3.1571 > 72.14.217.91.80: . ack 22922 win 65296
10:24:46.896831 IP 10.87.1.3.1571 > 72.14.217.91.80: F 679:679(0) ack 22922 win 65296
10:24:46.928929 IP 72.14.217.91.80 > 10.87.1.3.1571: . ack 680 win 8190

35 packets captured
70 packets received by filter
0 packets dropped by kernel



Als ik nu via mijn browser 10.87.10.1 wordt de website niet getoond. Maar ik zie het verkeer wel via de nic lopen met tcpdump.

httpd.conf



<VirtualHost *>
ServerName 10.87.10.1
ServerAlias 10.87.10.1
DocumentRoot /home/kuhlmann/domains/test.nl/www
ErrorLog /home/kuhlmann/domains/test.nl/logs/error_log
CustomLog /home/kuhlmann/domains/test.nl/logs/access_log common

<Directory /home/kuhlmann/domains/test.nl/www>
Options Indexes IncludesNOEXEC FollowSymLinks
allow from all
</Directory>
</VirtualHost>


Wat doe ik fout? Wie kan mij helpen? Of kan iemand me opweg helpen dmv een howto oid.

telnet 10.87.10.1 80 werkt ook niet. Pingen lukt echter wel. Hij laat dus niets door op poort 80. Er zit geen firewall voor.

wonko
24/05/07, 19:47
Ping werkt met ICMP, telnet en surfen en zo, met IP, dat kan het verschil zijn.

Je ziet in je dump niet enkel je aanvragen aankomen, maar ook terug het antwoord vertrekken. Zie je dat antwoord op je client? Of op een tussenliggende stap? Anders zit je met een probleemje in de keep-state of het correct terugsturen van het pakketje (denk bvb aan mac-adressen, natting of iets dergelijke)...

Jurian
24/05/07, 20:36
Hmm, lang geleden dat ik met LVS gespeeld heb, staat je default gateway op alle servers goed? Op de webservers zou de default gateway je LVS bak moeten zijn, als ik 't me goed herinner.

Je krijgt met PING wel een reply, maar die krijg je van de LVS bak, niet van 1 van de virtual servers er achter, want je LB'd alleen port 80, dus met PING testen naar het virtual IP, is nutteloos.

Doe vanaf 1 van de virtual servers eens een traceroute naar je client IP? Gaat die netjes via je loadbalancer? of gaat 'ie direct of via een andere route?

Zie ook hier: http://www.ssi.bg/~ja/L4-NAT-HOWTO.txt

Helaas is de officieele LVS pagina op dit moment down :o

Costeijn
24/05/07, 22:40
Ik hoorde dat je in het zelfde netwerk beter direct routing kon gebruiken. Heeft iemand hier een tutorial voor?

Jurian
25/05/07, 00:43
http://www.linuxvirtualserver.org/VS-DRouting.html

werkt nu niet (403 error) maar als die 't weer doet, moet je daar kijken :)

Costeijn
25/05/07, 19:36
Ik ben overnieuw begonnen en Direct routing gebruikt en alles werkt naar behoren. Dank aan iedereen die mij heeft geholpen.

Costeijn
29/05/07, 23:01
Even een klein kickje. De loadbalancer draait prima en stuurt ook alles door. Alleen af en toe als ik de website probeer te bekijken krijg ik in firefox de melding: Verbinding geinitialiseerd. Ik heb echter geen idee waar dit vandaan komt. Op verdere sites krijg ik de eeror niet.

RSDD
25/06/07, 19:48
ik weet niet zeker of het klopt maar meestal als ik die error krijg is de verbinding gesloten door de andere kant(server).

Costeijn
26/06/07, 12:57
Er was iets mis na een reinstall werkt alles perfect!

Wido
19/07/07, 23:05
Wat late reactie, maar ik zie nergens dat je op je nodes de ARP voor het virtuele IP uit zet?

Daarnaast moet je bij je loadbalancer voor het virtuele IP geen gateway opgeven.

Daarnaast hoef je alleen ip_vs te laden, de rest van de modules worden geladen wanneer nodig.