Acties:
  • 0 Henk 'm!

  • JJerome
  • Registratie: Oktober 2007
  • Laatst online: 27-07 15:33
Ik ben al tijden op zoek naar een mooie "fail-safe" oplossing voor onze ontwikkelomgeving.
Momenteel hebben we één machine met KVM. Deze machine deelt een data partitie met z'n clients over NFS.
Dit houd de client images klein en maakt het gemakkelijk om de backups op één plek te regelen.
Deze situatie heeft een hoop nadelen, waarvan de grootste is dat deze ene machine een te groot risico is.
Backups maken we genoeg, maar alle data terugzetten na een failure zal wel veel tijd in beslag nemen.

Wat mij een mooie oplossing leek was om 2 (relatief simpele) identieke machines aan te schaffen die beide exact hetzelfde gaan doen. Beide krijgen een hypervisor, in dit geval KVM, en beide kunnen dus de VM's draaien. In de praktijk zullen de VM's (er zijn nu nog maar 4 "kritieke" VM's) ook verspreid worden over beide servers.
In het geval van een failure moet één van de twee machines alle taken kunnen overnemen, vrijwel zonder downtime. Of in ieder geval zo min mogelijk. De beste manier om dit te realiseren is door te repliceren, waar GlusterFS om de hoek komt kijken.

Ik ben er redelijk van overtuigd dat dit te realiseren is, met naar mijn idee meer garanties dan één enkele dure server. We kunnen uiteindelijk nog een machine aanschaffen, die ook weer een replica zal zijn, om zowel meer rekenkracht te krijgen als veiligheid.

Het knelpunt is de concessie die we moeten doen in snelheid. VM's draaien vanaf een Gluster mount (via NFS, niet de native client) is re-de-lijk te doen. Een benchmark in de VM geef schrijf snelheden van maximaal 40MB/s, hier kan ik mee leven. Het probleem ontstaat zodra 4 VM's tegelijk veel moeten schrijven of lezen. Theoretisch moet de bandbreedte van 1Gbit direct al door 4 gedeeld worden. Met overhead zal dit per client niet meer dan 15 - 20 MB/s betekenen.

Ook houd ik straks het liefst de data binnen de VM's zelf, zodat deze ook als enige gescyned hoeven te worden. Dit kan VM's van 100GB+ betekenen. Is dit dan wel te realiseren?
De andere optie zou weer kleine VM's zijn en alleen de data syncen. Het nadeel is dat VM images dan een dag achter kunnen lopen op de andere machine. Wat bij een failover misschien voor rare situaties kan zorgen.

Om een lang verhaal kort te maken: zoek ik het wel in de goede hoek?
Is er iemand die überhaupt een soortgelijke situatie heeft?

Edit: Mijn tests zijn nu nog met relatief kleine VM's geweest op consumenten hardware. Wel met een dedicated 1Gbit lijn tussen de machines. iperf gaf ongeveer 800Mbit aan over UDP, er is dus al meer te behalen door betere hardware. Is de uiteindelijk performance ook te verhogen door een round-robin bond van 3 Gbit lijnen?

[ Voor 6% gewijzigd door JJerome op 09-07-2012 21:58 ]


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 24-09 23:16
Ik zou eens kijken naar Sheepdog en wat gaan testen. :)
JJerome schreef op maandag 09 juli 2012 @ 21:55:
Edit: Mijn tests zijn nu nog met relatief kleine VM's geweest op consumenten hardware. Wel met een dedicated 1Gbit lijn tussen de machines. iperf gaf ongeveer 800Mbit aan over UDP, er is dus al meer te behalen door betere hardware. Is de uiteindelijk performance ook te verhogen door een round-robin bond van 3 Gbit lijnen?
Ligt eraan. Lees eens deze Linux kernel networking HOWTO onder het kopje 'mode'. Het is tricky om één TCP/UDP sessie te kunnen verdelen over twee interfaces, maar die elk los verdelen kan volgens mij wel (lees artikeltje, je moet switch support hebben voor 802.3ad denk ik). En dan moet je kijken naar je server-to-server clustering implementatie of die ook meerdere connecties gaat gebruiken.

[ Voor 87% gewijzigd door gertvdijk op 10-07-2012 00:01 ]

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • JJerome
  • Registratie: Oktober 2007
  • Laatst online: 27-07 15:33
Ik ben Sheepdog inderdaad al tegen gekomen, op zich leuk behalve dat er nog geen libvirt support is, wat het beheer weer lastiger maakt (en live migration met Sheepdog is nog onmogelijk?).

Ik denk niet dat het probleem echt ligt in welk systeem ik gebruik voor de replicatie, mijn vraag is meer of ik dit überhaupt wel wil. Is er voldoende performance te krijgen. Moet ik sowieso gaan kijken naar 10Gbps? Het maakt de servers direct weer een stuk duurder natuurlijk.
gertvdijk schreef op maandag 09 juli 2012 @ 23:55:
Ligt eraan. Lees eens deze Linux kernel networking HOWTO onder het kopje 'mode'. Het is tricky om één TCP/UDP sessie te kunnen verdelen over twee interfaces, maar die elk los verdelen kan volgens mij wel (lees artikeltje, je moet switch support hebben voor 802.3ad denk ik). En dan moet je kijken naar je server-to-server clustering implementatie of die ook meerdere connecties gaat gebruiken.
Round-robin lijkt de enige modus om dus wel daadwerkelijk 1 verbinding te loadbalancen en de throughput te verhogen, hoewel mij dit op de huidige hardware nog niet gelukt is. Omdat de 1Gbit niet gehaald wordt ligt dat probleem waarschijnlijk ergens anders. Eventueel kan 802.3ad wel gebruikt worden wanneer ik elke VM z'n eigen GlusterFS volume / brick geef. Er draait één glusterfsd proces per volume. Switch is in principe niet nodig omdat ze direct verbonden zullen zijn (valt 802.3ad dan weer af?).

Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 24-09 23:16
JJerome schreef op dinsdag 10 juli 2012 @ 09:43:
Ik ben Sheepdog inderdaad al tegen gekomen, op zich leuk behalve dat er nog geen libvirt support is, wat het beheer weer lastiger maakt (en live migration met Sheepdog is nog onmogelijk?).
Libvirt support is er misschien al wel hoor. Doe eens Ctrl-F 'sheepdog' op deze pagina.
En live migration schijnt er gewoon sinds 0.2.0 in te zitten:
Edit: Live migration *is* supported with sheepdog 0.2.0 and later.
JJerome schreef op dinsdag 10 juli 2012 @ 09:43:
Ik denk niet dat het probleem echt ligt in welk systeem ik gebruik voor de replicatie, mijn vraag is meer of ik dit überhaupt wel wil. Is er voldoende performance te krijgen. Moet ik sowieso gaan kijken naar 10Gbps? Het maakt de servers direct weer een stuk duurder natuurlijk.
Je zegt niet welke performance eisen je precies hebt en welke hardware waar we het over hebben. Heb je overal SSDs in zitten, heb je een I/O bandwidth nodig van >100MB/s op momenten, etc.
JJerome schreef op dinsdag 10 juli 2012 @ 09:43:
Round-robin lijkt de enige modus om dus wel daadwerkelijk 1 verbinding te loadbalancen en de throughput te verhogen, hoewel mij dit op de huidige hardware nog niet gelukt is. Omdat de 1Gbit niet gehaald wordt ligt dat probleem waarschijnlijk ergens anders. Eventueel kan 802.3ad wel gebruikt worden wanneer ik elke VM z'n eigen GlusterFS volume / brick geef. Er draait één glusterfsd proces per volume. Switch is in principe niet nodig omdat ze direct verbonden zullen zijn (valt 802.3ad dan weer af?).
Round robin kan er voor zorgen dat nou net de twee bandbreedtevreters op dezelfde link komen, volgens mij. En ik durf niet te zeggen of iets als 802.3ad ook echt werkt in een host-host-zonder-switch opstelling.

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • JJerome
  • Registratie: Oktober 2007
  • Laatst online: 27-07 15:33
Zoals ik aangaf is maximale performance niet mijn wens, het gaat vooral om een veilige omgeving die redelijk gemakkelijk te beheren is, maar het mag niet onwerkbaar traag worden. Een relatief begrip, dat begrijp ik. Ik wil alleen de hardware aanschaffen op mijn wensen, niet eerst de hardware aanschaffen om dan pas de juiste oplossing te verzinnen. Omdat netwerk toch de bottleneck gaat worden zoek ik hier eerst de beste oplossing voor. Daarom hoopte ik dat er iemand was die ervaring met een vergelijkbare situatie heeft.

Helaas is er erg weinig te vinden over VM hosting op GlusterFS (vooral omdat sinds 3.3 de self-heal pas goed werkt op grotere bestanden) en weet ik dus ook niet of ik dit wil.
Ik ben natuurlijk ook geïnteresseerd in andere oplossing dan Gluster, zoals sheepdog, maar Gluster heeft wat mij betreft nog wel de voorkeur vanwege het beheer gemak.
gertvdijk schreef op dinsdag 10 juli 2012 @ 10:28:
Round robin kan er voor zorgen dat nou net de twee bandbreedtevreters op dezelfde link komen, volgens mij. En ik durf niet te zeggen of iets als 802.3ad ook echt werkt in een host-host-zonder-switch opstelling.
Zover ik weet verspreid round-robin alle pakketjes over alle interfaces. Omdat ik momenteel niet de hardware heb om dit goed te testen ben ik dus ook hier weer afhankelijk van ervaringen van anderen.