![]() |
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. |
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? |
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. |
Citat:
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:
Fler erfarenheter tas tacksamt emot :) |
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. |
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. |
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? |
Citat:
Citat:
2) Japp vi kör XCache - det hjälpte en hel del. Citat:
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? |
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:
|
Citat:
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? |
En annan sak som är fantastisk viktig:
Använd ett CDN! Eller flytta alla dina statiska filer till en server som kör Nginx eller lighttpd. Det är inte speciellt praktiskt att använda Apache att serva statiska filer med allt minne den drar. Jag kör 4 st Nginx och de kraschar aldrig. Det är sällan en nginx går över en halv procent cpu när den drar 10Mbit ut och servar statiska filer. |
Citat:
php : session.save_handler = memcache session.save_path = "tcp://xxx,tcp://yyy" Då får du redundans, sessionerna sparas på båda memcached-servrarna |
Citat:
Kan bara instämma i att nginx är stabilt och rekommenderar det. Nginx har en bra strukturerad konfiguration men dokumentationen är dock inte den bästa (men blivit bättre på senaste tiden) och har pga det lite högre inlärningströskel. Just nu kör jag dock nginx endast som reverse proxy för statiska filer men att lägga över mer ansvar på nginx framöver ligger i planeringen. Som exemplet ovan med last-balanseringen mha nginx så går det tex att bygga ut det ytterligare så att du låter den nginx fronten serva statiskt innehåll men lastbalanserar dynamiskt innehåll. Jag kör även memcache som session hanterare. Citat:
Ifall du kör reverse proxy med apache som backend behöver du dock installera apache modden rpaf (libapache2-mod-rpaf @ apt) för att inte få lokala ip't som användarens ip. |
Citat:
|
Citat:
* Bör inte kosta mer än en ny server (då tappar man lite vitsen med en hårdvara istället för att göra det med en mjukvarulösning). * Paket per sekund är svårt att svara på. * Enkel lastbalansering, typ round-robin duger gott. * Ingen SSL * Ingen redundans på lastbalanseringen behövs Jag har försökt googla lite på hårdvarulösningar men har inte hittat något lockande. Att betala 100.000 känns lite överdrivet. :) PS. Tack för att hjälp :) ni ger! ds. |
Citat:
|
Citat:
Men eftersom du inte vet gissar jag att det är ganska lågt. Och eftersom du inte behöver redundans så funkar det med vilken PC som helst med Linux på. Installera Linux, ladda modulen ip_vs (LVS) och tanka ner ipvsadm och sätt upp lite regler, PM:a om du vill ha hjälp. |
1-2U får du räkna med, kolla på någon begagnad Alteon, Fundry Serveriron, Extreme Summit48si så får du stöd för lastbalansering.
Kolla bara på att dom är med rätt Full3 code eller likande |
Citat:
I nuläget så ser det ut att vi kommer att lastbalansera via NginX på en dedikerad server. |
Citat:
|
2 bifogad(e) fil(er)
Citat:
Jag tycker det har funkat okey hittills. Billig och skalbar lösning. |
Tack thomas! :) Kul att få insikt i ett annat system.
LVS.. är det http://www.linuxvirtualserver.org/ ? Nu på morgonen bytte vi från våra överbelastade webserverar, till vårt nya webserver-kluster med NginX som dedikerad lastbalanserare och oj vad trevligt det blev att surfa på sidorna :) En sån skillnad! :D |
Citat:
|
Av nyfikenhet och för att själv få en ungefärlig referensram kring när det är dags att lastbalansera kontra prestandaoptimera. Ungefär vid vilken belastning har ni varit tvungna att lastbalansera och köra något mer än 1 web och en DB burk. ?
Typ sidvisningar per sekund eller något.. |
Tyvärr kan jag inte svara på sidvisningar / sekund och sådant, eftersom jag i grunden är en programmerare. Man skall dock alltid prioritera prestandaoptimeringar framför t.ex. lastbalansering. Det finns så otroligt mycket att göra som minskar lasten, och det är inte säkert att response-tiden minskar bara för att du lastbalanserar.
Några tecken på att du skall satsa resursoptimering: * När du har en hög respons-tid även vid låg last * När en sidladdning tar mer än 0.2 sekunder * När lastbalansering inte sänker response-tiden * När du är osäker på var resursoptimering är När det gäller oss så har vi under flera år arbetat aktivt med resursoptimeringar, men nu har det tagit stopp - nu är det svårt att gå längre. Det går, men då vi har avancerade produkter som bygger på avancerade script skulle ytterligare resursoptimeringar tumma på användarvänlighet samt funktionallitet. Måndagar kl 13.00 (peak för vår del) har våra sajter gått slött och vår webserverver för dynamiskt innehåll har gått på 100% hela tiden. Databaserna (1 MySQL och en PostgreSQL) har aldrig haft problem med hög last / dålig prestanda. |
Alla tider är GMT +2. Klockan är nu 08:25. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson