PDA

Bekijk Volledige Versie : 2 identieke servers



Zenda
13/08/06, 15:18
Ik had graag wat opheldering over het volgende:

Hoe is het mogelijk om 2 servers te hebben die volledig identiek zijn. Allebei zijn ze aangesloten aan een switch en met elkaar via een ethernet-kabel. De tweede server controleert of de eerste server nog draait, wanneer dit niet het geval is zal de tweede server het overnemen. De data van de tweede server hoeft niet volledig up-to-date te zijn (het liefst natuurlijk wel), als deze maar maximaal 12 uur oud is (dus iedere 12 uur elkaar synchroniseren).

Vragen:
1. Het overnemen van server 1 naar server 2; kan dat het beste worden uitgevoerd door een wijziging door te geven in de switch dat het IP-adres van server 2 het IP-adres van server 1 wordt of d.m.v. een loadbalancer? Wellicht nog andere mogelijkheden?
2. Hoe kan je 2 servers synchroniseren? Synchroniseren is niets meer dan alle gegevens van DirectAdmin (dus alle bestanden/instellingen e.d.).
3. Is dit een goede oplossing om te zorgen dat wanneer er een server uitvalt om snel alles weer online te krijgen? Hoe doen jullie dit?

Ik hoop dat ik mijn vragen duidelijk genoeg geformuleerd heb.

Alvast bedankt!

CharlieRoot
13/08/06, 15:29
wij doen het via rsync op dit moment, het syncen dus. Bij down gaan van server 1 pak je het IP adres op machine 2 op, of je laat een balancer het iets beter doen.

MediaServe
13/08/06, 15:38
Misschien de telnet interface van de switch aanspreken en zo poort 1 dichtzetten en vervolgens poort 2 open zetten. De NIC achter die switchpoorten moeten dan dezelfde IP hebben ingesteld. Of een Loadbalancer, maar dan heb je wel weer een Single Point Of Failure.

Crosskabeltje tussen beide servers met een 192.168.x.x adres

MySQL Replication:
http://mysql.com/doc/refman/5.0/en/replication-howto.html

File Replication:
http://www.drbd.org/
http://sunsite.dk/info/guides/rsync/rsync-mirroring.html
http://oss.linbit.com/csync2/

Verder zou ik zeggen.... Trial and error :D

luser
13/08/06, 15:45
Misschien de telnet interface van de switch aanspreken en zo poort 1 dichtzetten en vervolgens poort 2 open zetten. De NIC achter die switchpoorten moeten dan dezelfde IP hebben ingesteld.

Hiervoor heb je keepalived (http://www.keepalived.org/), mocht je echt via de poort open/toe verhaaltjes willen werken gebruik je best gewoon snmpset's. Veel eenvoudiger dan via telnet te knoeien :)

MediaServe
13/08/06, 16:30
Met keepalived heb je weer een loadbalancer toch? Als de loadbalancer wegvalt zijn beide servers plat? Bovendien zou je dan een derde server moeten aanschaffen voor het loadbalancen. Of zie ik dat niet goed?

Ik zou het in ieder geval via één of twee Layer2 switches doen, eventueel in overleg met je colocatie provider :)

Randy
13/08/06, 16:39
Zelf een dergelijke situatie live staan met een Applicatieserver. Tweede hangt standby met zelfde IP's alleen switchpoortje is dichtgezet. Via LAN (10.0.0.x) wordt de boel continu gekopieerd. DNS2 draait hier ook op. Mocht de mainserver overlijden, even switchpoortje van de backupmachine open zetten en de andere afsluiten. Gaat bewust niet automatisch omdat ik er wat controle over wil houden, houwel dit met loadbalancing /heartbeat-meting prima zou moeten kunnen. (if $server == dood { exec 'ifconfig blabla'; } else { echo 'lekker doorgaan'; } of zoiets.

Unixboy
13/08/06, 17:03
Met keepalived heb je weer een loadbalancer toch? Als de loadbalancer wegvalt zijn beide servers plat? Bovendien zou je dan een derde server moeten aanschaffen voor het loadbalancen. Of zie ik dat niet goed?

Ik zou het in ieder geval via één of twee Layer2 switches doen, eventueel in overleg met je colocatie provider :)

Thomas,

Je kan keepalived gewoon over 2 servers draaien een master en een slave :). Als de master weg valt neemt de slave deze state toch over.

Je moet een colo provider hebben die met je mee durft te denken en eigenlijk jou ook kan assisteren in dit soort situaties het is aapjes werk om colocatie te leveren alleen professionals kunnen het met hoogwaardige support en hoogwaardige kwaliteit van dienstverlening.

Zenda
13/08/06, 21:15
Bedankt voor de berichten. Zoals een aantal al zeiden de beste oplossing waarschijnlijk op beide servers dezelfde IP-adressen e.d. instellen en allebei op de switch aangesloten. Wanneer de eerste server eruit gaat kun je in de switch een wijziging doorgeven dat alles naar de tweede server gaat. Tot dusver alles duidelijk!

Het volgende probleem is dus dat de data identiek moet zijn. Hoe kun je dit het beste doen? Eén iemand kwam al met rsync, maar is het hier ook echt mogelijk om alles binnen (in ons geval) DirectAdmin te kopieëren en werkend bij de tweede server te krijgen? Ik lees namelijk op de website van rsync dat het in principe gewoon simpel mappen/bestanden van de ene server naar de andere server kopieeërt, is dit wel voldoende en betrouwbaar?

Iemand die mijn vragen nog kan beantwoorden :) ?

Zenda
17/08/06, 19:37
Iemand die mijn laatste vraag betreffende het synchroniseren van data tussen 2 servers kan beantwoorden :)?

WebXtrA-Rámon
17/08/06, 19:45
Het beste kun je Xen installeren, dan een VPS maken en het image van deze VPS laten syncen.

Downtime zal dan enkele seconden tot enkele minuten zijn wanneer er geswitcht wordt. Zijn een heleboel howto's over te vinden.

Of je doet dit:
http://www.mrleejohn.nl/haServer.pdf
Maar dan zonder DA ;)

jinxedworld
17/08/06, 19:49
Of kijk eens naar Ultramonkey (http://www.ultramonkey.org/), en combineer dit met drdb (http://www.drbd.org/) voor het syncen van je data. Volgens mij is dat precies wat je zoekt, alles gaat op de volle automaat, en je hoeft niet te kloten met switchpoortjes.

Zenda
17/08/06, 19:52
Bedankt, ik ga het morgen is uitgebreid doorlezen!

Andere opmerkingen, tips blijven welkom!

alexbik
31/08/06, 00:23
Het mooiste is om het met loadbalancers te doen. Ik zie wat mensen schrijven dat dat dan vervolgens je single point of failure is, maar dat hoeft het niet per definitie te zijn. Loadbalancers kun je ook redundant uitvoeren, en dat hebben wij dan ook. Dat kost je alleen wel weer een extra loadbalancer, terwijl 1 zo'n doos al niet goedkoop is. Bij BIT kun je loadbalancing als dienst afnemen. Je dienst is dan beschikbaar op een virtueel IP adres, de loadbalancer regelt dat de load verdeeld wordt over alle servers in de pool ofwel dat een andere server het overneemt als de eerste het niet meer (snel genoeg) doet.

Als je BSD gebruikt kun je ook met CARP aan de gang. Voor sommige toepassingen / omgevingen werkt dat net zo goed.

Dhr. H.J.
31/08/06, 00:55
Ik ben zelf ook erg benieuwd naar dit onderwerp en heb nog geen antwoord gezien op de vraag; Is het gebruik van rsync voldoende?
Wij willen namelijk gebruik gaan maken van DirectAdmin en daarbinnen kunnen vele databases runnen (minimaal 1 per domein; of is dit per server 1 master mysql db waar een prefix het domein bepaald?)
Het idee zou zijn dat server2 een volledige copy is van server1 en pas aan wordt gezet als server1 uit valt, net zoals Randy zegt.

Dhr. H.J.
31/08/06, 02:18
Oké, heb zelf nog wat research gedaan en vraag me het volgende af;
Ik zie regelmatig zoiets staan: Wij hebben nu 2 loadbalancers (staan in redundante opstelling met Linux-ha) en daarmee loadbalancen we op dit moment 17 webservers.
Betekend dit dat alle gegevens van de 17 webservers continue worden gesynced?

luser
31/08/06, 04:19
Betekend dit dat alle gegevens van de 17 webservers continue worden gesynced?

Als het voor 1 site is wordt er meestal gebruik gemaakt van rsync (zo heeft elke server de content die dan toch niet veel aangepast wordt lokaal staan). Als het over een hoop data gaat die wel eens kan veranderen (shared hosting of speciale apps) zal er met een SAN gewerkt worden.

phreak
31/08/06, 09:28
Wij hebben een failover draaien met Heartbeat. In eerste instantie hebben we instantie hebben we dit met drbd gedaan, maar bij een te grote desync blijkt dat deze niet meer wil resyncen (otherwise een heel interessant en prima tooltje), maar we hebben het opgelost om met rsync te werken. Heartbeat is een interessante optie omdat je zelf rc scripts kunt instellen, omdat apache nog al eens moeilijk wil doen met binden aan een IP.