Grupės saugykla mažoms žiniatinklio grupėms, pagrįstoms drbd+ocfs2

Apie ką mes kalbėsime:
Kaip greitai įdiegti bendrinamą saugyklą dviem serveriams remiantis drbd+ocfs2 sprendimais.

Kam tai bus naudinga:
Mokomoji medžiaga bus naudinga sistemų administratoriams ir visiems, kurie pasirenka saugyklos diegimo būdą arba nori išbandyti sprendimą.

Kokių sprendimų atsisakėme ir kodėl?

Dažnai susiduriame su situacija, kai mažame žiniatinklio klasteryje turime įdiegti bendrą saugyklą su geru skaitymo ir rašymo našumu. Išbandėme įvairias galimybes savo projektams įdiegti bendrą saugyklą, tačiau nedaugelis sugebėjo mus patenkinti keliais rodikliais vienu metu. Dabar mes jums pasakysime, kodėl.

  • Glusterfs mūsų netenkino skaitymo ir rašymo našumu, buvo problemų vienu metu nuskaitant daug failų, o CPU buvo apkrauta didelė. Failų skaitymo problema gali būti išspręsta pasiekiant juos tiesiai iš plytų, tačiau tai ne visada taikoma ir paprastai yra neteisinga.

  • Cephui nepatiko per didelis sudėtingumas, kuris gali pakenkti projektams su 2–4 serveriais, ypač jei projektas vėliau prižiūrimas. Vėlgi, esama rimtų našumo apribojimų, kurie verčia mus kurti atskiras saugyklos grupes, kaip ir glusterfų atveju.

  • Naudojant vieną NFS serverį bendrai saugyklai įdiegti, kyla klausimų dėl atsparumo gedimams.

  • s3 yra puikus populiarus sprendimas tam tikroms užduotims atlikti, tačiau tai nėra failų sistema, kuri susiaurina jos taikymo sritį.

  • lsyncd. Jei jau pradėjome kalbėti apie „ne failų sistemas“, tuomet verta peržvelgti šį populiarų sprendimą. Jis ne tik netinka abipusiam apsikeitimui (bet jei labai nori, vadinasi gali), jis taip pat neveikia stabiliai su daugybe failų. Puikus priedas prie visko yra tai, kad jis yra vienos sriegio. Priežastis yra programos architektūroje: ji naudoja inotify, kad stebėtų darbo objektus, kuriuos priskiria paleidžiant ir pakartotinai nuskaitant. rsync naudojama kaip perdavimo terpė.

Instrukcija: kaip įdiegti bendrinamą saugyklą remiantis drbd+ocfs2

Vienas iš patogiausių sprendimų mums buvo nuoroda ocfs2+drbd. Dabar mes jums pasakysime, kaip galite greitai įdiegti bendrinamą saugyklą dviem serveriams remiantis sprendimų duomenų baze. Bet pirmiausia šiek tiek apie komponentus:

DRBD - saugojimo sistema iš standartinio Linux platinimo, leidžianti atkartoti duomenis tarp serverių blokais. Pagrindinė programa yra sukurti gedimams atsparią saugyklą.

OCFS2 - failų sistema, kuri suteikia galimybę bendrai naudoti tą pačią saugyklą kelioms sistemoms. Įtrauktas į Linux platinimą ir yra branduolio modulis bei vartotojo erdvės įrankiai darbui su FS. OCFS2 galima naudoti ne tik per DRBD, bet ir per iSCSI su keliais ryšiais. Mūsų pavyzdyje mes naudojame DRBD.

Visi veiksmai atliekami ubuntu serveryje 18.04 minimalia konfigūracija.

1 veiksmas. Konfigūruokite DRBD:

Faile /etc/drbd.d/drbd0.res aprašome savo virtualų bloko įrenginį /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;
}
}

vidinis meta diskas — naudoti tuos pačius blokinius įrenginius metaduomenims saugoti
įrenginys /dev/drbd0 — naudokite /dev/drbd0 kaip kelią į drbd tomą.
diskas /dev/vdb1 - naudokite /dev/vdb1
sinchronizatorius { greitis 1000M; } — naudoti gigabito kanalo pralaidumą
leisti-du pirminius - svarbi parinktis, leidžianti priimti pakeitimus dviejuose pirminiuose serveriuose
after-sb-0pri, after-sb-1pri, after-sb-2pri — parinktys, atsakingos už mazgo veiksmus, kai aptinkamas suskaidytas smegenys. Daugiau informacijos galite rasti dokumentacijoje.
tapti pagrindiniu abiejuose — nustato abu mazgus kaip pirminius.

Mūsų atveju turime dvi visiškai identiškas VM su tam skirtu virtualiu tinklu, kurio pralaidumas yra 10 gigabitų.

Mūsų pavyzdyje dviejų klasterio mazgų tinklo pavadinimai yra drbd1 ir drbd2. Kad veiktų tinkamai, turite suderinti /etc/hosts esančių prieglobų pavadinimus ir IP adresus.

10.10.10.192 drbd1
10.10.10.193 drbd2

2 veiksmas. Nustatykite mazgus:

Abiejuose serveriuose vykdome:

drbdadm create-md drbd0

Grupės saugykla mažoms žiniatinklio grupėms, pagrįstoms drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Gauname šiuos dalykus:

Grupės saugykla mažoms žiniatinklio grupėms, pagrįstoms drbd+ocfs2

Galite pradėti sinchronizuoti. Pirmame mazge turite atlikti:

drbdadm primary --force drbd0

Pažiūrėkime į būseną:

cat /proc/drbd

Grupės saugykla mažoms žiniatinklio grupėms, pagrįstoms drbd+ocfs2

Puiku, sinchronizavimas prasidėjo. Laukiame pabaigos ir matome nuotrauką:

Grupės saugykla mažoms žiniatinklio grupėms, pagrįstoms drbd+ocfs2

3 veiksmas. Pradėkite sinchronizavimą antrajame mazge:

drbdadm primary --force drbd0

Gauname šiuos dalykus:

Grupės saugykla mažoms žiniatinklio grupėms, pagrįstoms drbd+ocfs2

Dabar galime rašyti į drbd iš dviejų serverių.

4 veiksmas. Įdiekite ir sukonfigūruokite ocfs2.

Mes naudosime gana nereikšmingą konfigūraciją:

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

Jį reikia užsirašyti /etc/ocfs2/cluster.conf abiejuose mazguose.

Mes sukuriame FS drbd0 bet kuriame mazge:

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

Čia mes sukūrėme failų sistemą su etikete testVol drbd0, naudodami numatytuosius parametrus.

Grupės saugykla mažoms žiniatinklio grupėms, pagrįstoms drbd+ocfs2

/etc/default/o2cb turite nustatyti (kaip mūsų konfigūracijos faile)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

ir vykdykite kiekviename mazge:

o2cb register-cluster ocfs2cluster

Tada įjungiame ir pridedame visus vienetus, kurių mums reikia automatiniam paleidimui:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Kai kurie iš jų jau bus vykdomi sąrankos proceso metu.

5 veiksmas. Pridėkite prijungimo taškus prie fstab abiejuose mazguose:

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

Katalogas /media/shared ji turi būti sukurta iš anksto.

Čia mes naudojame noauto parinktis, o tai reiškia, kad failas nebus prijungtas paleidžiant (man labiau patinka prijungti tinklo failus per systemd) ir heartbeat=local, o tai reiškia, kad kiekviename mazge bus naudojama širdies plakimo paslauga. Taip pat yra visuotinis širdies plakimas, kuris labiau tinka didelėms grupėms.

Toliau galite montuoti /media/shared ir patikrinkite turinio sinchronizavimą.

Priimta! Dėl to gauname daugiau ar mažiau gedimams atsparią saugyklą, kurią galima keisti ir atlikti tinkamą našumą.

Šaltinis: www.habr.com

Добавить комментарий