WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Lastbalansera web server på linux (https://www.wn.se/forum/showthread.php?t=36695)

coredev 2009-05-07 21:20

Hej!

Vi behöver verkligen börja lastbalansera våra web-servrar. Det finns ju en hel del lastbalanserare att välja på, e.g. mod_balancer / mod_proxy, pound, nginx, varnish, et.al. Och frågan är vilken man skall köra / välja. Vore intressant att få höra era erfarenheter.

Har börjat exprementera med mod_balancer / mod_proxy, men konfigurationen verkar onödigt krånglig. Om vi har förstått det rätt så krävs det alltså att vi skapar en subdomän per webserver för varje domän (30+), e.g. server1.example.com, server2.example.com... etc.. Sådant leder lätt till en enda stor härva som är omöjlig att hålla uppdaterad.

Varnish verkar lida av samma symptom som mod_balancer.

Konfigurationen för lastbalansering med nginx existerar knappt.

Pounds konfiguration verkar då mer lovande. Där behöver man helt enkelt bara definiera vilka IP-nummer som skall ingå i klustret. Å andra sidan verkar ju detta blogg-inlägget inte lovande: http://blog.emmettshear.com/post/2008/03/0...-load-balancing.

Så ös på med era erfarenheter / rekomendationer :) Är tacksam för allt.

Kör idag 4 dedikerade webservrar med Apache 2 / PHP5 på debian.

JLE 2009-05-07 23:14

Kanske en dum fråga, men behöver ni verkligen lastbalancera? Vad är det som tar CPU?

Testat att använda ett CDN såsom Amazon CloudFront eller SimpleCDN?

patrikweb 2009-05-07 23:23

Skaffa riktiga hårdvaru lastbalanserare istället, eller stå hos en leverantör som kan erbjuda det som service.

Kör själv lastbalansering på vissa servrar, då använder jag stödet man har i core utrustningen man ändå har.

coredev 2009-05-08 08:32

Citat:

Ursprungligen postat av JLE
Kanske en dum fråga, men behöver ni verkligen lastbalancera? Vad är det som tar CPU?


Hej och tack för input. Jo vi behöver verkligen lastbalansera. Varje verksamhet kommer väl (förhoppningsvis) dit en vacker dag - och nu är det vår tur. Vi har liggat i och optimerat våra script, installerat xcache samt cachar databasfrågor mot memcache, men nu går det inte längre :)

Det som tar CPU är helt enkelt våra script, många olika produkter som är av avancerad typ. Många rader kod. Det är inte "blocket" direkt. :)

Citat:

Ursprungligen postat av patrikweb
Skaffa riktiga hårdvaru lastbalanserare istället, eller stå hos en leverantör som kan erbjuda det som service.

Kan tyvärr inget om hårdvarubalansering. Är det att föredra? Vilka är fördelarna? Man kan väl i princip säga att en server som kör en dedikerad lastbalanserar-mjukvara blir som en hårdvaru-balanserare?


Fler erfarenheter tas tacksamt emot :)

Björklund 2009-05-08 09:12

Lastbalansera med DNS eller dedikerad lastbalanserare.
Billiagast är BSD eller Linux. Vill du ha lite bättre support/prestanda så titta på Cisco eller F5.
Undvik leverantörer som bygger in lastbalansering i sin core-utrustning. Det bör ligga på dedikerad utrustning framför servrarna.

PM:a om du vill ha hjälp.

jomper 2009-05-08 09:18

Ja, round-robin-dns måste vara det absolut enklaste, och sedan låta webbfrontarna dela på en databasserver. Då blir det basic och inget special alls.

Hur mycket har ni jobbat med att optimera? Kör ni nån php-accelerator? När vi började köra APC för PHP så mer än halverades CPU-loaden.

JLE 2009-05-08 10:10

Jag brukar optimera på följande sätt:

* Sphinx Search för att avlasta mysql
* memcached
* varnish
* xdebug för att hitta flaskhalsar i php-koden
* Logga alla långsamma mysql-frågor och optimera bort dessa

Testat det?

coredev 2009-05-08 10:56

Citat:

Ursprungligen postat av jonasb76
Lastbalansera med DNS eller dedikerad lastbalanserare.

Det vore mycket vänligt om någon har förslag på hårdvaru-lastbalanserare som fungerar bra för er samt hur dessa fungerar rent praktiskt. I mitt huvud bör de vara som en switch som även kan last-balansera. Viktigt är att de är session-medvetna.

Citat:

Originally posted by -jomper@May 8 2009, 09:18
Hur mycket har ni jobbat med att optimera? Kör ni nån php-accelerator? När vi började köra APC för PHP så mer än halverades CPU-loaden.

1) Vi har arbetat massor med att optimera - men vi har helt enkelt avancerade produkter och mycket trafik.
2) Japp vi kör XCache - det hjälpte en hel del.

Citat:

Ursprungligen postat av JLE
Jag brukar optimera på följande sätt:
* Sphinx Search för att avlasta mysql
* memcached
* varnish
* xdebug för att hitta flaskhalsar i php-koden
* Logga alla långsamma mysql-frågor och optimera bort dessa
Testat det?

Vi har inget prestandaproblem med databasen, vi kör redan idag memcached (som är helt sjukt grym!) samt även sphinx (som är helt sjukt underbar!).

Vi har inte kört någon profiler på koden, men som sagt så har vi spenderat många och långa timmar med optimering. Det är helt enkelt lastbalansering som är vårt nästa steg. Kör du det genom varnish eller använder du den bara som cache / proxy?

obe 2009-05-08 11:01

DNS-round robin är enklast. Men Nginx fungerar utmärkt, drar nästan igen cpu alls och är stabil.

Glöm inte att installera php-apc eller någon annan php-accelerator, det sparar mycket pulver på Apache-maskinerna.

Du kan sätta lastbalanseraren själv som bakup-server och låta apache lyssna på en annan port:

Citat:


upstream *backend *{
* * * *server * 192.168.xxx.xxx; # www
* * * *server * 192.168.xxx.xxx; # www
* * * *server * 192.168.xxx.xxx; # www
* * * *server * 192.168.xxx.xxx:8888 * * * * backup; # lastbalanseraren själv
}

Edit: Upptäckte att ni skrivit det mesta som jag sa redan...

coredev 2009-05-08 11:07

Citat:

Originally posted by obe@May 8 2009, 11:01
DNS-round robin är enklast. Men Nginx fungerar utmärkt, drar nästan igen cpu alls och är stabil.
Glöm inte att installera php-apc eller någon annan php-accelerator, det sparar mycket pulver på Apache-maskinerna.
Du kan sätta lastbalanseraren själv som bakup-server och låta apache lyssna på en annan port:
Citat:


upstream backend {
server 192.168.xxx.xxx; # www
server 192.168.xxx.xxx; # www
server 192.168.xxx.xxx; # www
server 192.168.xxx.xxx:8081 backup; # denna maskinen
}


Med DNS-round robin så kan man inte köra med persistent sessions va? Det vill säga att du alltid hamnar på samma maskin, och undviker konstiga utloggningar, etc..

Blir det dubbel configuration med Nginx? Måste man sätta upp alla virituella host:ar i config-filen eller kan man säga att den skall acceptera allt och sedan skicka det vidare oberört? Kan Nginx hantera persistant sessions?


Alla tider är GMT +2. Klockan är nu 04:02.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson