Clusterlagerung fir kleng Webcluster baséiert op drbd + ocfs2

Iwwer wat mir wäerte schwätzen:
Wéi séier gedeelt Späichere fir zwee Serveren ofsetzen baséiert op drbd + ocfs2 Léisungen.

Wien wäert dat nëtzlech sinn fir:
Den Tutorial wäert nëtzlech sinn fir Systemadministratoren a jiddereen deen eng Späicherimplementatiounsmethod wielt oder d'Léisung wëllt probéieren.

Wéi eng Entscheedunge hu mir refuséiert a firwat?

Dacks si mir mat enger Situatioun konfrontéiert wou mir gemeinsame Späichere mat gudder Lies-Schreifleistung op engem klenge Webcluster musse implementéieren. Mir hu verschidde Méiglechkeeten probéiert fir gemeinsame Späichere fir eis Projeten ëmzesetzen, awer wéineg konnten eis op e puer Indikatoren gläichzäiteg zefridden stellen. Elo wäerte mir Iech soen firwat.

  • Glusterfs huet eis net mat der Lies- a Schreifleistung zefridden; et waren Probleemer mat der simultaner Liesung vun enger grousser Zuel vu Dateien, an et war eng héich Belaaschtung op der CPU. De Problem mam Liesen vun Dateien kéint geléist ginn andeems se se direkt vum Ziegel zougräifen, awer dëst ass net ëmmer applicabel an ass allgemeng falsch.

  • Ceph huet déi exzessiv Komplexitéit net gär, wat op Projete mat 2-4 Server schiedlech ka sinn, besonnesch wann de Projet duerno erhale gëtt. Erëm ginn et sérieux Leeschtungsbeschränkungen, déi eis zwéngen, getrennte Späichercluster ze bauen, wéi mat Glusterfs.

  • Een NFS-Server benotzen fir gemeinsame Späicheren ëmzesetzen stellt Froen op wat d'Feeltoleranz ugeet.

  • s3 ass eng exzellent populär Léisung fir eng gewëssen Palette vun Aufgaben, awer et ass keen Dateiesystem, deen säin Ëmfang schmuel.

  • lsyncd. Wa mir schonn ugefaang hunn iwwer "Net-Dateisystemer" ze schwätzen, dann ass et derwäert iwwer dës populär Léisung ze goen. Net nëmmen ass et net gëeegent fir zwee-Wee-Austausch (awer wann Dir wierklech wëllt, da kënnt Dir), et funktionnéiert och net stabil op enger grousser Zuel vu Dateien. Eng flott Ergänzung zu der ganzer Saach ass datt et Single-threaded ass. De Grond ass an der Architektur vum Programm: et benotzt Inotify fir Aarbechtsobjeten ze iwwerwaachen, déi et beim Startup a beim Rescannen zougewisen huet. rsync gëtt als Transfermedium benotzt.

Tutorial: wéi een Shared Storage baséiert op drbd + ocfs2

Eng vun de bequemste Léisunge fir eis war de Link ocfs2+drbd. Elo wäerte mir Iech soen wéi Dir séier Shared Storage fir zwee Server baséiert op enger Léisungsdatebank ofsetzen kënnt. Awer als éischt e bëssen iwwer d'Komponente:

DRBD - e Späichersystem vun der Standard Linux Verdeelung, déi Iech erlaabt Daten tëscht Server a Blocken ze replizéieren. D'Haaptapplikatioun ass fir Feeler-tolerant Späichere ze bauen.

OCFS 2 - e Dateiesystem deen e gemeinsame Gebrauch vun der selwechter Späichere vu verschiddene Systemer ubitt. Abegraff an der Linux Verdeelung an ass e Kernel Modul a Userspace Tools fir mat der FS ze schaffen. OCFS2 kann net nëmmen iwwer DRBD benotzt ginn, awer och iwwer iSCSI mat multiple Verbindungen. An eisem Beispill benotze mir DRBD.

All Aktiounen ginn op Ubuntu Server 18.04 an enger minimaler Konfiguratioun gemaach.

Schrëtt 1. DRBD konfiguréieren:

An der Datei /etc/drbd.d/drbd0.res beschreiwen mir eise virtuelle Blockapparat /dev/drbd0:

resource drbd0 {
    syncer { rate 1000M; }
    net {
        allow-two-primaries;
        after-sb-0pri discard-zero-changes;
        after-sb-1pri discard-secondary;
        after-sb-2pri disconnect;
    }
    startup { become-primary-on both; }
    on drbd1 {
        meta-disk internal;
        device /dev/drbd0;
        disk /dev/vdb1;
        address 10.10.10.192:7789;
}
    on drbd2 {
        meta-disk internal;
        device /dev/drbd0;
        disk /dev/vdb1;
        address 10.10.10.193:7789;
}
}

meta-Disk intern - benotzt déiselwecht Blockapparater fir Metadaten ze späicheren
device /dev/drbd0 - benotzt /dev/drbd0 als Wee zum drbd Volumen.
disk /dev/vdb1 - benotzen /dev/vdb1
Synchroniséierung {Taux 1000M; } - benotzt Gigabit Kanalbandbreedung
erlaben-zwee-Primärschoul - eng wichteg Optioun, datt Ännerungen op zwee primär Serveren akzeptéiert erlaabt
no-sb-0pri, no-sb-1pri, no-sb-2pri - Optiounen verantwortlech fir d'Aktiounen vum Node wann Splitbrain festgestallt gëtt. Méi Detailer fannt Dir an der Dokumentatioun.
ginn-primär-op béide - setzt béid Noden op primär.

An eisem Fall hu mir zwee absolut identesch VMs, mat engem speziellen virtuellen Netzwierk mat engem Duerchgang vun 10 Gigabit.

An eisem Beispill sinn d'Netznumm vun zwee Clusternoden drbd1 an drbd2. Fir eng korrekt Operatioun musst Dir d'Nimm an d'IP Adresse vun den Hosten an /etc/hosts passen.

10.10.10.192 drbd1
10.10.10.193 drbd2

Schrëtt 2. Setzt Noden op:

Op béide Server lafen mir:

drbdadm create-md drbd0

Clusterlagerung fir kleng Webcluster baséiert op drbd + ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Mir kréien déi folgend:

Clusterlagerung fir kleng Webcluster baséiert op drbd + ocfs2

Dir kënnt Synchroniséierung ufänken. Um éischte Node musst Dir ausféieren:

drbdadm primary --force drbd0

Loosst eis de Status kucken:

cat /proc/drbd

Clusterlagerung fir kleng Webcluster baséiert op drbd + ocfs2

Super, d'Synchroniséierung huet ugefaang. Mir waarden bis zum Schluss a gesinn d'Bild:

Clusterlagerung fir kleng Webcluster baséiert op drbd + ocfs2

Schrëtt 3. Start Synchroniséierung op der zweeter Node:

drbdadm primary --force drbd0

Mir kréien déi folgend:

Clusterlagerung fir kleng Webcluster baséiert op drbd + ocfs2

Elo kënne mir op drbd vun zwee Server schreiwen.

Schrëtt 4. Installéieren a configuréieren ocfs2.

Mir benotzen eng zimlech trivial Konfiguratioun:

cluster:
     node_count = 2
     name = ocfs2cluster

node:
     number = 1
     cluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.192
     name = drbd1

node:
     number = 2
     cluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.193
     name = drbd2

Et muss opgeschriwwe ginn /etc/ocfs2/cluster.conf op béide Wirbelen.

Mir erstellen e FS op drbd0 op all Node:

mkfs.ocfs2 -L "testVol" /dev/drbd0

Hei hu mir e Dateiesystem mam Label testVol op drbd0 erstallt, mat de Standardparameter.

Clusterlagerung fir kleng Webcluster baséiert op drbd + ocfs2

An /etc/default/o2cb musst Dir setzen (wéi an eiser Konfiguratiounsdatei)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

an ausféieren op all Node:

o2cb register-cluster ocfs2cluster

Da schalten mir un a fügen all d'Unitéiten un déi mir brauchen fir autorun:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

E puer vun dësem wäert scho während dem Setupprozess lafen.

Schrëtt 5. Füügt Montéierungspunkten op fstab op béide Wirbelen:

/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0

Verzeechnes /media/gedeelt et muss am Viraus geschaf ginn.

Hei benotze mir d'noauto Optiounen, dat heescht datt d'Datei net beim Startup montéiert gëtt (ech léiwer Netzwierkdateien iwwer Systemd montéieren) an Häerzschlag = lokal, dat heescht datt den Häerzschlagservice op all Node benotzt gëtt. Et gëtt och global Häerzschlag, wat méi gëeegent ass fir grouss Cluster.

Als nächst kënnt Dir montéieren /media/gedeelt a kontrolléieren Inhalt Synchroniséierung.

Gemaach! Als Resultat kréie mir méi oder manner Feeler-tolerant Späichere mat Skalierbarkeet an anstänneg Leeschtung.

Source: will.com

Setzt e Commentaire