![]() |
Hej,
Jag ska inom några månader dra igång ett projekt där jag kommer behöva ett någorlunda kraftigt serverkluster. Syftet är att servera webbinnehåll, främst HTML och PHP med MySQL databas. Vad finns det för "färdiggjorda" klusterlösningar på marknaden, om det ens existerar? Servrarna bör helst köras i Debian. Meningen är att jag ska kunna uppgradera och lägga till servrar utan nedtid. Mycket viktigt är även att kunna bygga på klustret utan att hela tiden behöva konfigurera servrar. Det jag tänkt mig är att man har en färdig configuration som passar alla servrar i klustret. Hur gör man med IP adresser vid en sådan lösning? Helst skulle jag vilja ha en eller flera IP adresser per server, är det möjligt i ett kluster? Skulle gärna höra era tankar/åsikter/erfarenheter osv. angående detta. |
Beror helt hur du vill bygga lösningen, normalt så bygger jag alltid den lösningen med hårdvarulastbalanserare.
Kör 2 st i 2 olika städer sedan en L2 ring, men har med få det helt fysiskt/logisk redundans. Lastbalanserarna har 1 eller flera IP utåt sedan har servrarna bakom var sitt IP. Sedan kör du emot lastbalanserarens IP så skickar den förfrågningarna efter du har ställt in det mot servrarna bakom. Så du ser bara 1 IP utåt medans det kan vara valfritt antal servrar bakom som aldrig syns utåt. Sedan är det hur du ska köra med lagring, hur filerna ska synkas mellan alla servrar. Antingen kör man något SAN/NAS. Beror lite på hur man vill köra det och vad för kluster filsystem man vill använda. MySQL har redan kluster stöd i sig, men där kan du även använda lastbalanserare för att lastbalanera förfrågningarna mellan dom servrarna som finns. |
Som test kan du prova http://91.90.25.1/ och ladda om den sidan några gånger så kommer du till olika servrar i skilda städer.
Bara ett litet exempel, helt transparent failover. 2 servrar 2 lastbalanserare 2 skilda städer. |
Om du har all din data i MySQL så är det MySQL-replikering du vill ha.
Ex har du då en master och flera slavar. Alla slavar är endast till för att läsa (SELECT). Och mastern är till för skriv (INSERT,UPDATE,DELETE). Mastern bör endast användas för läs som måste ha rätt svar omgående, ex en SELECT som påverkas direkt av en UPDATE nanosekunden innan. Din applikation måste alltså vara skriven så att du kan särskilja på alla läs och skrivfrågor. Sedan gör du någon form av lastbalansering över alla dina slavar. Roundrobin (mjukvara eller DNS) går bra om man inte har tillgång till en lastbalanserare. För webbservrar är det bara att ha samma matrial på alla servrar och kommer det nytt matrial så skicka ut det med rsync eller likn. Om du har matrial på webbservarna som ändras hela tiden måste du ha någon form av fildelning. För att lastdela den inkommande trafiken använder du helst en lastbalanserare. Har du inte tillgång till det så duger roundrobin-DNS. |
Om du kör MySQL Cluster och inte endast replikering kan du ha flera master och det är ett krav för HA samt större belastning.
Lagringen är bästa och köra någon NAS/SAN eller något kluster filsystem av något slag. Roundrobin på DNS är inget man vill köra på seriösa saker som är viktiga. Rsync funkar men finns betydligt bättre lösningar. |
Men det låter som att han vill ha kluster för att expandera och inte för att balansera?
Eller är förstår jag fel. Dvs han vill utöka sin "tjänst" genom att lägga till en extra maskin som kan hantera **** saker. Så t.ex. matar man in nya användare så kanske de slangas in på den nya servern. Antar att det är nått liknande som servage kör med. Vill man bara att man skall hoppa till olika plattser så kan man simpelt bara lägga till det i recordsen på domänen? "kanske inte blir fancy med samma ip". Eller vanlig balansering som NLB som bara skickar till server bakom den som är minst belastad. Kanske skulle gå att använda knoppix med nått liknande med pxe boot för lokal dist av imagen och sen bootar nya maskiner bara upp och hoppar in på jobbet mer eller mindre. |
ber om ursäkt till trådskaparen, men jag tänkte bara låna tråden lite.
Finns det webbhotell som erbjuder klustertjänster som shared web? Dvs att flera delar på klustret? som man brukar göra vid vanliga webbhotell? |
Citat:
|
Citat:
Idag kör vi FSdata, går FSdata ner ( inte helt ovanligt ), då går det åt skogen för vår hemsida. Vi skulle då behövt någon lösning som skickar vidare anv. till en annan server om en server failar. Vill nog inte sno mer av trådskaparens tråd, PM om ni har någon idé! |
Citat:
|
Citat:
/marcus |
Citat:
http://www.levonline.com/sv/redundant-tekn...kplattform.html Våra webbfrontar och POP/IMAP-servrar är helt redundanta. Vi gör till och med hårda omstarter av webbservrarna flera gånger per dag. Fast MySQL är inte lastbalanserat, det finns inga riktigt bra metoder att göra det på. MySQL Cluster är tyvärr kasst och inte alls lämpat för ett general purpose-webbhotell. Inte heller replikering är lämpat då det kräver ingrepp i applikationen och de flesta välanvända webbapplikationerna har inte stöd för replikerade databaser (att splitta på skrivning och läsning). |
Citat:
Jag kör alla fall 1 i varje nod, sedan så handlar det om hur du kör resten redundant med i nät. Hur du vill fördela belastning trafik är ju valfritt. I mitt fall kan stad stendö utan det skulle märkas. I mitt fall snackar inte lastbalanserarna mellan varnadra utan det sköts på L3 nivå. Endast ha en lastbalanserare är ett dåligt val. |
patrikweb, vad är det för lastbalanserare du använder
|
Citat:
Har även extreme network saker som med kan köra SLB. |
Om du inte vill konfigurera servrar och dyl så är det nog http://www.mosso.com/ eller http://mediatemple.net/ du letar efter. Vill du ha mer kontroll på dina servrar så finns http://witsbits.se (Sverige) och http://aws.amazon.com/ec2/ (USA) (jag använder båda). Använd ett CDN redan från början så behöver du inte ha ett lika stort kluster.
|
Jag har lite erfarenhet av Foundry och deras Iron serie.
Dom har en trevlig funktion också du kan ha flera ISPer (nät) anslutna och en intern dns som ger en respons från det nätet som har lägst ping till dig. |
Alla tider är GMT +2. Klockan är nu 14:26. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson