![]() |
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 |
Alla tider är GMT +2. Klockan är nu 18:15. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson