![]() |
Hej,
som rubriken säger undrar jag vad är bästa lösningen för att kunna load balancing med enbart två burkar? Är det att man kör Round Robin-metoden och replikation eller går det att sätta ihop två burkar till någon slags kluster? Om man behöver en separat burk för Load Balancing, vad behöver man minst för hårdvara? Går det att få ihop med någon begagnad burk? Tack för allt svar! MVH Peter |
Vad ska du lastbalansera? Om du kör en dynamisk website är det första steget ju att köra web och db på separata maskiner.
|
vad är du ute efter?
redundans eller just att dela upp belastningen? och round robin metoden är inte att rekommendera om det är DNS varianten du tänker på. DNS cachas och ger inte en snäll balansering oftast.. |
Du kan sätta ihop 2 burkar i kluster, finns olika sätt att lösa det.
Du kan köra en burk som lastbalanserare, dock om du väljer rätt leverantör så kan dom erbjuda det i sin hårdvara direkt istället. DNS round robin är inte att föredra |
Det jag ska lastbalansera är både en HTTP-server (Apache) och DB (MySQL). Anledningen till att jag fråga efter klusterlösningen är att jag vill det ska vara så skalbart som möjligt, så när jag sedan köper en burk till så är det bara att sätta in den i klustret utan att behöva göra så mycket mer, sedan kan man väl hantera hela klustret gemensamt om jag har förstått det rätt.
Jag tänker på både redundans och belastningen... Patrikweb, vilken leverantör känner du till som erbjuder det? Och hur sätter man ihop 2 burkar till ett kluster, kan du ge mig några tips? |
Ett ganska enkelt kluster består av:
1. Lastbalancerar. 2. Två eller fler servrar med tjänster, t.ex. web, mail eller databas. 3. NAS - Kan vara en komplex lösning eller en enkel NFS-lösning på en linux-burk. |
XWisdom:
MySQL bygger du med replikering. En server som är master som du kör alla "skriv" i (INSERT/UPDATE/DELETE). Och alla "läs" (SELECT) på en eller flera slaves. Alla cololeverantörer bör kunna erbjuda lastbalansering. |
Någon form av storage kan vara bra vid större kluster och vid mycket data, har du inte det blir kostnaden bara högre och du får en single point om man inte bygger dubbla storage.
Hur du sätter upp mysql cluster finns att läsa på deras sida och på många ställen på nätet, Apache blir samma sätt att ställa in om du låter leverantör lastbalansera åt dig. Exempel: http://91.90.25.1 du kommer till olika servrar bereonde vilken isp och del i världen du befinner dig i. |
Patrik, förvilla han nu inte . MySQL Cluster kräver låg latency och snabb lina i klustret.
Det kan du inte sprida ut i olika världsdelar. Du menar kanske MySQL Replication? |
Citat:
Dock skulle det säkert även fungera ha server i USA med, sedan kanske det inte är 100% optimalt att då kanske få 0.3s fördröjning av synca data mellan mysql servrar. |
Citat:
Ingen vettig människa bygger det så. Testa så får du se. Synca? Har du kört ett MySQL-kluster någon gång? |
Gissar du menar NDB när du snackar Mysql Cluster, dock så har ju latency inte något göra med kapacitet mellan noder.
Sedan att det inte blir helt optimalt med olika latency om du har många noder är en annan sak, men beror ju sedan på hur du väljer att lastbalansera anslutningarna mot dom olika mysql servrarna. |
Jag tolkar ickesvaret som att du inte kört MySQL Cluster och inte har någon erfarenhet av det.
|
Tror mer att du aldrig haft möjlighet köra det i ett riktigt nät. Handlar inte om att man ska köra dom olika noderna på en bredbandslina eller något sådant.
En viss latency är det minsta problemet, att det skulle vara helt idiotisk att köra mysql cluster mellan flera länder som exempelvis Sverige - USA är sant även om det säkerligen skulle fungerat men en viss seghet. Men mellan Stockholm eller Malmö skulle inte varit något problem med latency. Viktigaste är att datan kommer fram utan avbrott och rätt kapacitet. |
Men jag vill hellre veta hur man bygger ett kluster i sitt "hemmabygge" med bara 2 datorer, inte hos någon leverantör. Om det kräver en extra dator för själva lastbalanseringen kan jag acceptera. Datorerna kan ju då sitta i ett Gigabitnätverk, så någon latencyproblem bör det inte vara där.
|
Är det bara Apache och MySQL är rekommender jag som sagt MySQL-replikering.
http://dev.mysql.com/doc/en/Replication_HOWTO.html Och sedan kör du rsync mellan dina Apache kataloger på varje server. Om du har ungefär 50% reads och 50% writes så kör writes till "mastern" och alla "reads" till slaven. Har du lite "writes" så kör även "reads" på mastern. Om mastern dör så gör om slaven till master. Lastbalansera med DNS. Om du vill ha en egen lastbalanserare istället så kolla på www.linuxvirtualserver.org. Eller något som jag tycker är spännande CLUSTERIP. Clusterip ingår i iptables. Den gör så att du inte behöver någon extra hårdvara för lastdelning. Den delar MAC-address mellan två eller fler servrar. Får några år sen la jag lite tid på det men misslyckades. Jag vill försöka igen när tid finns, säkert lite bättre nu. http://www.linux-ha.org/ClusterIP |
Tack för svaret, nu har jag lite mer kött på benen...
Men hur funkar det att sätta reads och writes till master och slave? Kommer MySQL-servern på mastern att kunna känna av själv och vidarebefodrar alla reads till slave? Hur funkar det då med Apache-servern på slave-maskinen, antar att man då enbart koppla mot till Masterns IP i PHP-skripten? Denna lösning har jag ju också tänkt på innan då, fast jag är fortfarande osäkert på hur man kan lastbalansera Apache-servrarna, är det Round Robin fortfarande då? |
Precis. Du sätter IP (eller hostnamn) för alla writes i dina PHP-skript och även read.
Om du vill skicka 75% av read till en av servarna så gör du en egen slumpgenerator där då 75% av trafiken går till en av servarna. Jag hade skapat två funktioner. db_read_open() och db_write_open(). Round Robin är igentligen bara ett begrepp. Det finns i alla lastbalanserade och i DNS. Börja med DNS. Det sätter du upp 1 minut. Fungerar inte det bra för dig så får du gå på något mer avancerat. |
När du säger DNS, menar du då på mjukvara- eller hårdvaranivå? Och hur funkar lastbalanseringen med DNS?
|
Citat:
Man kan antingen lägga in två statistka DNS-entrys www.domänen.se. IN A 192.168.0.1 www.domänen.se. IN A 192.168.0.2 I teorin skall varje IP-address få hälften av lasten. Men enligt egen erfarenhet så kommer 1:an få mer last då de flesta köra Windows när de surfar. Windows hanterar det där lite konstigt. Man kan då göra ett skript som automatiskt uppdaterar DNS:n några gåner per timma med låg TTL och får därmed en jämnare last. Kör du "riktigt" lastbalanserare i mellan så är det lättare att dela lasten jämnt. Men det är dyrare och det blir en extra SPOF (singel point of failure). Om inte ekonomin spelar någon roll så kör på dubbla redundanta lastdelare. :P |
Hur mycket kan en sådan lastdelare går på? Är det inte bara en burk med ex. LVS?
Vad jag har förstått så är metoden som du beskrev här Round Robin DNS, eller har jag fått det riktigt fel nu? Hur löser man då problemet med Apache sessioner? Kan man tilldela ex. IP 1 till en viss session så att den sessionen aldrig hoppar över till IP 2? |
Citat:
|
Citat:
Jo det kallas Round Robin DNS. Ofta håller webbläsaren kvar trafiken mot samma IP. Det är tyvärr ingen garanti. Om du bygger dina sessioner så att de inte fungerar om de kommer mot en annan server så bör du köra en riktigt lastdelare istället. |
Tack för allt svar!
Då kommer jag förmodligen att köra MySQL-replikering samt rsync för att distribuera lasten på min två burkar. Jag är dock fortfarande nyfiken på om man kan bygga en kluster med enbart 2 datorer, fast det är kanske inget som är lönt? |
Ovan är ett sorts kluster. Du måste tala exakt vad du vill genomföra för att få ett svar på frågan. Det finns failoverkluster (som ovan), även kallat Active-Passive. Sedan finns det Active-Active också.
Skall du bygga Active-Active så måste du ha ett kluster-filsystem som så att alla noderna ser exakt samma data hela tiden. Du behöver även något för att dela disk. SAN, NAS, NFS, NDB, m.m. Behöver du ha en databas så måste de stödja Active-Active. Ex. MySQL Cluster eller Oracle RAC eller likn. Filsystem: http://www.redhat.com/gfs/ http://www.lustre.org/ Databas: http://dev.mysql.com/tech-resources/articl...wo-servers.html http://www.oracle.com/technology/products/...ring/index.html |
Citat:
Du bör läsa på lite tekniker vad det gäller att lastbalencera och även ta del av vad en del av operatörerna har sagt i denna tråd. |
Jag menar förstås att rsynca och sedan dela upp så att vissa innehåll serveras från server 1 och vissa från server 2 och på så sätt distribuera lasten. Ex. kan man ju låta server 1 servera allt dynamiskt och server 2 alla statiska filer...
Vad jag vill göra med ett kluster är dels lastbalanseringen så att hela klustret fungerar som en enda stor dator. Sedan ska man ju kunna hantera hela klustret som en enda enhet (mjukvarainstallation, uppgradering och uppdatering). Vidare borde det väl vara lättare och lägga till fler noder när man behöver mer kraft? |
Det du vill går inte. Det finns dock beräkningskluster som fungerar på det sättet men det är specialskriven programvara. Inget som funger på en LAMP-installation.
www.openmosix.org är väl det närmsta du kommer. |
Varför jag undrar detta är att Webmin har moduler för att hantera kluster? Hur är denna typ av kluster uppbyggd i så fall?
|
Jag vet inte. Jag har inte testat webmin.
Men om du behöver ett webbgränsnitt för att sköta servrarna så är kanske en klustrad miljö lite tungt att sköta. Jag skulle nog vända mig till någon som har erfarenhet av likn innan som kan jag hjälpa dig. |
Vill du kunna fördela belastning på apache och liknande behöver du en lastbalanserare.
Hur du sedan väljer hur du vill lastbalansera när man väl har en riktigt lastbalanserare är ju valfritt. Saker att tänka på på är storage, hur statisk innehåll ska delas mellan alla noder. Samt mysql, där får man köra mysql cluster eller något. Möjligt någon skrivit någon webmin modul för någon form av cluster lösning, men inget man vet rakt av. Om du finns i närheten av Borås så kan du få labba i riktigt miljö med hårdvarulastbalanserare. |
patrikweb: Jo, jag bor faktiskt i Borås, var kan jag testa hårdvarulastbalanserare? Är det en burk med speciella mjukvaror?
|
Citat:
Finns även några reserv servrar som inte används som går leka med, bara säga till om du vill leka/labba lite. |
Alla tider är GMT +2. Klockan är nu 19:27. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson