Klusteritallennus pienille verkkoklusteille, jotka perustuvat drbd+ocfs2:een

Mistä puhumme:
Kuinka ottaa nopeasti käyttöön jaettu tallennustila kahdelle palvelimelle drbd+ocfs2-ratkaisujen perusteella.

Kenelle tästä on hyötyä:
Opetusohjelma on hyödyllinen järjestelmänvalvojille ja kaikille, jotka valitsevat tallennustilan toteutustavan tai haluavat kokeilla ratkaisua.

Mistä päätöksistä hylkäsimme ja miksi?

Usein kohtaamme tilanteen, jossa meidän on otettava käyttöön jaettu tallennustila, jolla on hyvä luku- ja kirjoitussuorituskyky pienessä verkkoklusterissa. Kokeilimme erilaisia ​​vaihtoehtoja jaetun tallennustilan toteuttamiseksi projekteillemme, mutta harvat pystyivät tyydyttämään meitä useilla mittareilla kerralla. Nyt kerromme sinulle miksi.

  • Glusterfs ei tyydyttänyt meitä luku- ja kirjoitussuorituskyvyn suhteen; useiden tiedostojen samanaikaisessa lukemisessa oli ongelmia ja prosessorin kuormitus oli suuri. Tiedostojen lukemiseen liittyvä ongelma voitaisiin ratkaista käyttämällä niitä suoraan tiilistä, mutta tämä ei aina sovellu ja on yleensä väärin.

  • Ceph ei pitänyt liiallisesta monimutkaisuudesta, joka voi olla haitallista projekteissa, joissa on 2-4 palvelinta, varsinkin jos projektia ylläpidetään myöhemmin. Jälleen on vakavia suorituskykyrajoituksia, jotka pakottavat meidät rakentamaan erillisiä tallennusklustereita, kuten glusterfien kohdalla.

  • Yhden NFS-palvelimen käyttäminen jaetun tallennustilan toteuttamiseen herättää kysymyksiä vikasietoisuudesta.

  • s3 on erinomainen suosittu ratkaisu tiettyihin tehtäviin, mutta se ei ole tiedostojärjestelmä, joka kaventaa sen laajuutta.

  • lsyncd. Jos olemme jo alkaneet puhua "ei-tiedostojärjestelmistä", kannattaa käydä läpi tämä suosittu ratkaisu. Se ei vain sovellu kaksisuuntaiseen vaihtoon (mutta jos todella haluat, niin voit), se ei myöskään toimi vakaasti suurella määrällä tiedostoja. Kiva lisäys koko juttuun on, että se on yksisäikeinen. Syy on ohjelman arkkitehtuurissa: se valvoo työobjekteja inotifyn avulla, jotka se määrittää käynnistyksen ja uudelleenskannauksen yhteydessä. rsync:tä käytetään siirtovälineenä.

Oppitunti: jaetun tallennustilan käyttöönotto drbd+ocfs2:n perusteella

Yksi kätevimmistä ratkaisuista meille oli linkki ocfs2+drbd. Nyt kerromme sinulle, kuinka voit nopeasti ottaa käyttöön jaetun tallennustilan kahdelle palvelimelle ratkaisutietokannan perusteella. Mutta ensin vähän komponenteista:

DRBD - Linuxin vakiojakelun tallennusjärjestelmä, jonka avulla voit replikoida tietoja palvelimien välillä lohkoissa. Pääsovellus on rakentaa vikasietoinen tallennustila.

OCFS2 - tiedostojärjestelmä, joka tarjoaa saman tallennustilan jaetun käytön useille järjestelmille. Sisältyy Linux-jakeluun ja on ydinmoduuli ja käyttäjätilatyökalut FS:n kanssa työskentelemiseen. OCFS2:ta voidaan käyttää DRBD:n lisäksi myös iSCSI:n yli useilla yhteyksillä. Esimerkissämme käytämme DRBD:tä.

Kaikki toiminnot suoritetaan ubuntu-palvelimella 18.04 minimikokoonpanossa.

Vaihe 1. Määritä DRBD:

Tiedostossa /etc/drbd.d/drbd0.res kuvaamme virtuaalilohkolaitettamme /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;
}
}

sisäinen meta-levy — käytä samoja lohkolaitteita metatietojen tallentamiseen
laite /dev/drbd0 - käytä /dev/drbd0 polkuna drbd-taltioon.
levy /dev/vdb1 - käytä /dev/vdb1
syncer { nopeus 1000M; } - käytä gigabitin kanavan kaistanleveyttä
salli-kaksi esivaalit - tärkeä vaihtoehto, jonka avulla muutokset voidaan hyväksyä kahdella ensisijaisella palvelimella
after-sb-0pri, after-sb-1pri, after-sb-2pri — vaihtoehdot, jotka vastaavat solmun toimista, kun aivojako havaitaan. Tarkemmat tiedot löytyvät dokumentaatiosta.
tulee ensisijainen molemmissa — asettaa molemmat solmut ensisijaiseksi.

Meidän tapauksessamme meillä on kaksi täysin identtistä virtuaalikonetta, joissa on oma virtuaalinen verkko, jonka kaistanleveys on 10 gigabittiä.

Esimerkissämme kahden klusterisolmun verkkonimet ovat drbd1 ja drbd2. Toimiaksesi oikein, sinun on sovitettava isäntien nimet ja IP-osoitteet tiedostossa /etc/hosts.

10.10.10.192 drbd1
10.10.10.193 drbd2

Vaihe 2. Aseta solmut:

Molemmilla palvelimilla käytämme:

drbdadm create-md drbd0

Klusteritallennus pienille verkkoklusteille, jotka perustuvat drbd+ocfs2:een

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Saamme seuraavat:

Klusteritallennus pienille verkkoklusteille, jotka perustuvat drbd+ocfs2:een

Voit aloittaa synkronoinnin. Ensimmäisessä solmussa sinun on suoritettava:

drbdadm primary --force drbd0

Katsotaanpa tilannetta:

cat /proc/drbd

Klusteritallennus pienille verkkoklusteille, jotka perustuvat drbd+ocfs2:een

Hienoa, synkronointi on alkanut. Odotetaan loppuun asti ja katsotaan kuvaa:

Klusteritallennus pienille verkkoklusteille, jotka perustuvat drbd+ocfs2:een

Vaihe 3. Aloita synkronointi toisessa solmussa:

drbdadm primary --force drbd0

Saamme seuraavat:

Klusteritallennus pienille verkkoklusteille, jotka perustuvat drbd+ocfs2:een

Nyt voimme kirjoittaa drbd:hen kahdelta palvelimelta.

Vaihe 4. Asenna ja määritä ocfs2.

Käytämme melko triviaalia kokoonpanoa:

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

Se on kirjoitettava muistiin /etc/ocfs2/cluster.conf molemmissa solmuissa.

Luomme FS:n drbd0:lle mihin tahansa solmuun:

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

Täällä loimme tiedostojärjestelmän, jonka tunniste on testVol kohdassa drbd0, käyttämällä oletusparametreja.

Klusteritallennus pienille verkkoklusteille, jotka perustuvat drbd+ocfs2:een

Tiedostossa /etc/default/o2cb sinun on asetettava (kuten asetustiedostossamme)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

ja suorita jokaisessa solmussa:

o2cb register-cluster ocfs2cluster

Sitten kytkemme päälle ja lisäämme kaikki yksiköt, jotka tarvitsemme automaattiseen käynnistykseen:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Osa näistä on jo käynnissä asennusprosessin aikana.

Vaihe 5. Lisää liitoskohdat fstab:iin molemmissa solmuissa:

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

Hakemisto /media/jaettu se on luotava etukäteen.

Tässä käytetään noauto-vaihtoehtoja, mikä tarkoittaa, että tiedostoa ei asenneta käynnistyksen yhteydessä (liitän mieluiten verkkotiedostoja systemd:n ​​kautta) ja heartbeat=local, mikä tarkoittaa heartbeat-palvelun käyttöä jokaisessa solmussa. On myös globaali syke, joka sopii paremmin suurille klusteille.

Seuraavaksi voit asentaa /media/jaettu ja tarkista sisällön synkronointi.

Valmis! Tuloksena on enemmän tai vähemmän vikasietoinen tallennustila, jossa on skaalautuvuus ja kunnollinen suorituskyky.

Lähde: will.com

Lisää kommentti