Hilberîna komê ji bo komikên piçûk ên malperê yên ku li ser bingeha drbd + ocfs2 ne

Em ê li ser çi biaxivin:
Meriv çawa li ser bingeha çareseriyên drbd + ocfs2 ji bo du serveran zû hilanînê hevbeş bicîh dike.

Ev dê ji bo kê kêrhatî be:
Tutorial dê ji bo rêvebirên pergalê û her kesê ku rêbazek pêkanîna hilanînê hildibijêre an jî dixwaze çareseriyê biceribîne kêrhatî be.

Me çi biryar red kir û çima?

Bi gelemperî em bi rewşek re rû bi rû ne ku em hewce ne ku hilanîna hevbeş bi performansa xwendin-nivîsandinê ya baş li ser komek tevnek piçûk bicîh bikin. Me vebijarkên cihêreng ji bo bicihanîna hilanîna hevpar ji bo projeyên xwe ceriband, lê hindik kes karîbûn me bi yekcarî li ser çend nîşanan razî bikin. Niha em ê ji we re bibêjin çima.

  • Glusterfs bi performansa xwendin û nivîsandinê me têr nekir; di xwendina hevdemî ya hejmareke mezin a pelan de pirsgirêk hebûn, û li ser CPU barek zêde hebû. Pirsgirêka xwendina pelan dikare bi gihîştina wan rasterast ji brickê were çareser kirin, lê ev her gav ne pêkan e û bi gelemperî nerast e.

  • Ceph ji tevliheviya zêde hez nedikir, ku dikare li ser projeyên bi 2-4 serveran re zirarê bibîne, nemaze heke proje paşê were domandin. Dîsa, tixûbên performansê yên ciddî hene ku me neçar dike ku komên hilanînê yên cihêreng ava bikin, mîna glusterf.

  • Bikaranîna serverek NFS-ê ji bo bicîhkirina hilanîna hevpar di warê tolerasyona xeletiyê de pirsan derdixe pêş.

  • s3 ji bo hin karan çareseriyek populer a hêja ye, lê ew ne pergalek pelê ye, ku qada wê teng dike.

  • lsyncd. Ger me berê dest bi axaftina "pergalên ne-pelan" kiribe, wê hingê hêja ye ku em li ser vê çareseriya populer biçin. Ew ne tenê ji bo danûstendina du-alî ne maqûl e (lê heke hûn bi rastî bixwazin, wê hingê hûn dikarin), ew di heman demê de li ser hejmareke mezin pelan jî bi îstîqrar naxebite. Zêdebûnek xweş a tevahiyê ev e ku ew yek-têlek e. Sedem di mîmariya bernameyê de ye: ew inotify bikar tîne da ku tiştên xebatê bişopîne, yên ku ew di destpêkê de û di dema nûvekirinê de destnîşan dike. rsync wekî navgîniya veguhastinê tê bikar anîn.

Tutorial: Meriv çawa li ser bingeha drbd + ocfs2 hilanînê parve dike

Yek ji çareseriyên herî hêsan ji bo me girêdan bû ocfs2+drbd. Naha em ê ji we re vebêjin ka hûn çawa dikarin zû hilanîna hevpar ji bo du serveran li ser bingeha databasek çareseriyê bicîh bikin. Lê pêşî, hinekî li ser pêkhateyan:

DRBD - Pergalek hilanînê ji belavkirina standard Linux-ê ku dihêle hûn daneyan di navbera serveran de di blokan de dubare bikin. Serîlêdana sereke ev e ku meriv hilanînê-toleransê çêbike.

OCFS2 - Pergalek pelê ya ku ji hêla çend pergalan ve karanîna hevpar a heman hilanînê peyda dike. Di nav belavkirina Linux-ê de ye û ji bo xebata bi FS-ê re modulek kernel û amûrên cîhê bikarhêner e. OCFS2 dikare ne tenê li ser DRBD, lê di heman demê de li ser iSCSI jî bi girêdanên pirjimar ve were bikar anîn. Di mînaka me de em DRBD bikar tînin.

Hemî kiryar li ser servera ubuntu 18.04 di mîhengek hindik de têne kirin.

Gav 1. DRBD mîheng bike:

Di pelê /etc/drbd.d/drbd0.res de em amûrê xweya bloka virtual /dev/drbd0 diyar dikin:

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-dîska navxweyî - heman amûrên blokê bikar bînin da ku metadata hilînin
cîhaz /dev/drbd0 - / dev/drbd0 wekî riya berbi volga drbd bikar bînin.
dîskê / dev/vdb1 - / dev/vdb1 bikar bînin
syncer { rêjeya 1000M; } - Bandora kanala gigabit bikar bînin
destûr-du-seretayî - Vebijarkek girîng a ku dihêle ku guhertin li ser du serverên bingehîn werin pejirandin
paş-sb-0pri, paş-sb-1pri, paş-sb-2pri - Vebijarkên ku ji kiryarên girêkê berpirsiyar in dema ku mêjiyê parçebûyî tê dîtin. Agahiyên bêtir di belgeyê de têne dîtin.
bibe-sereke-li ser herduyan - her du girêkan li ser bingehîn destnîşan dike.

Di doza me de, me du VM-yên bêkêmasî wekhev hene, bi torgilokek virtual ya diyarkirî ya ku bi rêgezek 10 gigabitan e.

Di mînaka me de, navên torê yên du girêkên komê drbd1 û drbd2 ne. Ji bo xebitandina rast, hûn hewce ne ku nav û navnîşanên IP-ya mêvandarên di /etc/hosts de li hev bikin.

10.10.10.192 drbd1
10.10.10.193 drbd2

Gav 2. Giran saz bikin:

Li ser her du serveran em dixebitin:

drbdadm create-md drbd0

Hilberîna komê ji bo komikên piçûk ên malperê yên ku li ser bingeha drbd + ocfs2 ne

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Em jêrîn digirin:

Hilberîna komê ji bo komikên piçûk ên malperê yên ku li ser bingeha drbd + ocfs2 ne

Hûn dikarin hevdemkirinê dest pê bikin. Di girêka yekem de hûn hewce ne ku bicîh bikin:

drbdadm primary --force drbd0

Ka em li statûyê binêrin:

cat /proc/drbd

Hilberîna komê ji bo komikên piçûk ên malperê yên ku li ser bingeha drbd + ocfs2 ne

Mezin, hevdemkirinê dest pê kir. Em heta dawiyê bisekinin û wêneyê bibînin:

Hilberîna komê ji bo komikên piçûk ên malperê yên ku li ser bingeha drbd + ocfs2 ne

Gav 3. Hevdemkirinê li ser girêka duyemîn dest pê bikin:

drbdadm primary --force drbd0

Em jêrîn digirin:

Hilberîna komê ji bo komikên piçûk ên malperê yên ku li ser bingeha drbd + ocfs2 ne

Naha em dikarin ji du serveran ji drbd re binivîsin.

Gav 4. ocfs2 saz bikin û mîheng bikin.

Em ê veavakirinek pir kêmasî bikar bînin:

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

Pêdivî ye ku ew di nav de were nivîsandin /etc/ocfs2/cluster.conf li ser herdu girêkan.

Em li ser drbd0 li ser her nodek FS-ê diafirînin:

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

Li vir me pergalek pelê bi etîketa testVol li ser drbd0, bi karanîna pîvanên xwerû ava kir.

Hilberîna komê ji bo komikên piçûk ên malperê yên ku li ser bingeha drbd + ocfs2 ne

Di /etc/default/o2cb de hûn hewce ne ku saz bikin (wek pelê veavakirina me)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

û li ser her girêkek bicîh bikin:

o2cb register-cluster ocfs2cluster

Dûv re em hemî yekeyên ku ji bo xweberdanê hewce ne vedikin û lê zêde dikin:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Hin ji van dê jixwe di pêvajoya sazkirinê de werin xebitandin.

Gav 5. Li ser her du girêkan xalên çiyê li fstab zêde bikin:

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

Directory /medya/parvekirî divê di pêş de were afirandin.

Li vir em vebijarkên noauto bikar tînin, ku tê vê wateyê ku pel dê di destpêkê de neyê danîn (ez tercîh dikim ku pelên torê bi riya systemd vekim) û heartbeat=local, ku tê wateya karanîna karûbarê lêdana dil li ser her girêkekê. Di heman demê de lêdana dilê gerdûnî jî heye, ku ji bo komên mezin guncantir e.

Piştre hûn dikarin siwar bikin /medya/parvekirî û hevdemkirina naverokê kontrol bikin.

Done! Wekî encamek, em kêm-zêde hilanîna xelet-tolerans bi pîvan û performansa maqûl digirin.

Source: www.habr.com

Add a comment