Multi-attach Cinder -levyt
Varoitus
Oletusarvoisesti kiintiö on asetettu 0:ksi, sinun tulee pyytää sitä lähettämällä sähköpostia osoitteeseen servicedesk@csc.fi
On mahdollista liittää ja liittää sama cinder -levy useampaan kuin yhteen virtuaalikoneeseen samanaikaisesti. Tämä tarkoittaa, että kukin virtuaalikone voi lukea ja kirjoittaa samaan lohkolaitteeseen. Tämä on samanlaista kuin mitä SAN mahdollistaa.
Tällä ominaisuudella on useita etuja ja haittoja. Toisaalta se mahdollistaa tiedostojen jakamisen virtuaalikoneiden kesken ilman mitään välikäsiä, joita tarvitaan ratkaisuissa kuten NFS
tai GlusterFS
. Tämä vähentää tarvittavien virtuaalikoneiden määrää, jolloin ylläpitoa on vähemmän ja yksittäisiä virhekohta ei ole niin paljon. Toisaalta on välttämätöntä käyttää niin kutsuttua klusteroitua tiedostojärjestelmää kuten Oracle Cluster File System 2 (ocfs2) tai Red Hat Global File System (GFS2). Näissä järjestelmissä tarvitaan klusteri yhteydessä olevia demoneita, jotka koordinoivat tiedostojen luku- ja kirjoitusoperaatioita. Muut tiedostojärjestelmät kuten ext4 tai xfs eivät tue tätä käyttötapausta ja niiden käyttö voi johtaa lukuvirheisiin tai jopa tietojen korruptoitumiseen, niiden käyttöä ei suositella. Kukin virtuaalikone käyttää demoni kopion eikä ole isäntädemonia vaan järjestelmä perustuu äänestykseen. Valinta kahden tiedostojärjestelmän välillä riippuu käyttötapauksesta ja käytettävistä toimittajien mieltymyksistä. Testeissämme GFS2 näyttää olevan sopivampi Redhat-pohjaisille järjestelmille ja OCFS2 Debianille, mutta kokemuksesi saattaa vaihdella.
Varoitus
Näiden tiedostojärjestelmien konfigurointi, ylläpito ja käyttö eivät ole triviaali tehtävä. Alla olevat oppaat ovat lähtökohta eivätkä kata kaikkia mahdollisuuksia. Laajemman tiedon saamiseksi tarkista alkuperäinen dokumentaatio.
Luodaan ja liitetään levy
kiintiö
Varmista, että sinulla on saatavilla olevaa kiintiötä tämän tyyppiselle levylle.
WebUI
-
Mene Levyjen sivulle Poutassa.
-
Klikkaa "+Luo Levy"
-
Luo levy kuten tekisit normaalistikin jokaiselle Tyypille. Aseta Levy Nimi ja Koko (GiB) haluamallasi tavalla.
-
Vaihda Tyyppi
standard.multiattach
. -
Klikkaa "Luo Levy".
ei tueta
Et voi liittää levyä useaan virtuaalikoneeseen verkkokäyttöliittymästä, voit vain tarkistaa sen tilan. Voit liittää levyn useaan virtuaalikoneeseen vain komentoriviltä (CLI).
CLI
Ennen tämän tekemistä, sinun täytyy asentaa openstack-asiakas:
-
Luo moniliitäntälevy:
Sinun täytyy korvata<volume_name>
haluamallasi nimen volyymille, ja<size_in_GB>
haluamallasi gigatavujen määrällä, jonka haluat volyymille. -
Liitä levy VM-solmulle:
Sinun täytyy korvata<volume_name>
luomasi levyn nimellä edellisessä vaiheessa ja<VM_nimi>
VM-solmun nimellä. Kun teet tämän VM:den klusterille, sinun täytyy suorittaa komento kerran per VM.
GFS2 esimerkkinä
Global file system tai (GFS2 lyhyesti) on tiedostojärjestelmä, jota Red Hat parhaillaan kehittää. Se käyttää dlm tiedostojärjestelmäoperaatioiden koordinoimiseksi klusterin solmujen välillä. Varsinaiset tiedot luetaan ja kirjoitetaan suoraan jaetulle lohkolaitteelle.
Varoitus
GFS2 tukee jopa 16 solmua yhdistettynä samaan levyyn.
GFS2 ansible asennus
Olemme kirjoittaneet pienen ansible cinder-multiattach playbookin, joka asentaa solmuista koostuvan klusterin ja niihin jaetun GFS2 tiedostojärjestelmän. Playbook on tarkoitettu oppaaksi ja esittelyksi, se ei ole tuotantokäyttöön valmis. Esimerkiksi on olemassa manuaalinen vaihe, liitä levy joka solmussa. Ansible playbook luo klusterin VM:stä ja asentaa pyydetyn tiedostojärjestelmän niihin. Lopputuloksena on sama levy asennettuna joka VM:ssa. Nopean aloituksen komennot ovat nämä:
$> source ~/Downloads/project_XXXXXXX-openrc.sh
Please enter your OpenStack Password for project project_XXXXXXX as user YYYYYYYY:
$> ansible-playbook main.yml -e fs='gfs2' -e csc_username='johndoe' -e csc_password='easyaccess'
$> for i in $(seq 1 16);
do
openstack --os-compute-api-version 2.60 server add volume "cinder-gfs2-$i" multi-attach-test-gfs2
done
$> ansible-playbook main.yml -e fs='gfs2'
csc_username
ja csc_password
voidaan myös lisätä tiedostoon all.yaml
Se voi olla robottitili
Ansible täytyy suorittaa kahdesti johtuen bugista openstack.cloud.server_volume
, joka pystyy liittämään levyn vain yhteen virtuaalikoneeseen ja epäonnistuu muiden kanssa.
Jos sinulla on jo VM-klusteri tai haluat luoda ne manuaalisesti, on silti mahdollista käyttää gfs2
ansible roolia. Vaiheet ovat yksinkertaiset:
-
Luo ja liitä levy. Katso manuaalista Luo ja liitä levy yllä.
-
Luo standardi Ansible -inventaario, kuten tämä:
[all] <VM_nimi> ansible_host=192.168.1.XXX ansible_user=<user> # ... [all:vars] ansible_ssh_common_args='-J <jumphost>'
Esimerkin yllä sinun tulisi korvata
<VM_nimi>
virtuaalikoneen nimellä, IP192.168.1.XXX
tulee olla oikea IP-osoite ja lopuksi<user>
korvataan asianmukaisella käyttäjänimellä. Sinun täytyy lisätä yksi rivi per virtuaalikone, jonka haluat sisällyttää klusteriin. Lopuksi, jos käytät kyynärisolmua (Jump Host), sinun on korvattava<jumphost>
sen yhteystiedoilla, kutenubuntu@177.51.170.99
-
Luo playbook, kuten tämä:
--- - name: Configure VMs hosts: all gather_facts: true become: true roles: - role: hosts - role: gfs2
Se suorittaa kaksi roolia:
hosts
luo/etc/hosts
tiedoston jokaisessa VM:ssä IP-osoitteilla ja nimillä jokaiselle VM:lle.gfs2
rooli asentaa ja konfiguroi klusterin. -
Suorita se:
GFS2 manuaalinen asennus
Jotta voit asentaa GFS2, sinun täytyy noudattaa muutamia vaiheita:
-
Asenna VM solmut. Tässä vaiheessa ei ole erityistä huomioitavaa, kunhan varmistat, että solmut voivat nähdä toisensa verkossa (se on oletusasetuksena VM-soluissa, jotka on luotu samassa Pouta-projektissa) ja että ne on asennettu samalla jakeluversiolla. Olemme testanneet tämän
AlmaLinux-9
-versiolla, mutta muut jakelut ja versiot saattavat myös toimia, mutta niitä emme ole testanneet. -
Luo ja liitä levy. Katso manuaalista Luo ja liitä levy yllä.
-
AlmaLinuxin ja muiden RedHat-pohjaisten jakeluiden kohdalla sinun täytyy vain ottaa käyttöön kaksi hallintaryhmää ja asentaa muutama paketti jokaisella solmulla:
Klusterin asennus
root käyttäjä
Seuraavat komennot suoritetaan root-käyttäjänä
Kerrotaan koko opetusohjelman ajan, jos komennot täytyy suorittaa yhdellä tai jokaisella solmulla.
-
Suorita seuraavat komennot jokaisella solmulla:
-
Kun asennat
pacemaker
-ohjelman, se luo käyttäjän nimeltähacluster
. Sinun täytyy asettaa tälle käyttäjälle salasana: -
Varmista, että jokaisen solmun domain nimi voidaan ratkaista jokaisessa muussa solmussa. Poutassa, yksinkertaisin tapa on käyttää /etc/hosts , jossa jokaisella isännällä on rivi, joka on samankaltainen kuin:
-
Suorita seuraavat komennot vain yhdellä solmulla:
-
Voit tarkistaa tilan suorittamalla komennot:
Oletusarvoisesti corosync
ja pacemaker
palvelut on poistettu käytöstä:
$> pcs status
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
Pacemaker-dokumentointien mukaan:
vaativat manuaalista klusteripalveluiden aloittamista antaa sinulle mahdollisuuden
tehdä post-mortem tutkimus solmun virheestä
ennen kuin se palautetaan klusteriin.
Mikä tarkoittaa, jos solmu kaatuu ja käynnistyy uudelleen, sinun täytyy suorittaa komento pcs cluster start [ <NODENAME> | --all]
aloittaaksesi klusteri siinä.
Voit ottaa ne käyttöön, jos haluat käyttää pcs
:
$> pcs cluster enable [<NODENAME> | --all]
Fencing asennus
root käyttäjä
Seuraavat komennot suoritetaan root-käyttäjänä.
Kerrotaan koko opetusohjelman ajan, jos komennot täytyy suorittaa yhdellä tai jokaisella solmulla.
-
Suorita seuraavat komennot jokaisella solmulla:
-
Koska asennamme
python-openstackclient
-ohjelman root-käyttäjän avulla, sinun täytyy lisätä/usr/local/bin
PATH:iin: -
Luo kansio nimeltä
openstack
hakemistoon/etc
. Luo sitten tiedosto nimeltäclouds.yaml
hakemistossa/etc/openstack
. YAML-tiedosto tulee olla kuten: -
Suorita seuraavat komennot vain yhdellä solmulla:
-
Tarkista arvo:
-
Luo fencing HA-klusterille. Ensin sinun täytyy määrittää UUID jokaiselle solmulle klusterissasi. Voit suorittaa komennon:
Sitten:
Korvaa$> pcs stonith create <fence_nimi> fence_openstack pcmk_host_map="node1:node1_UUID;node2:node2_UUID;node3:node3_UUID" power_timeout="240" pcmk_reboot_timeout="480" pcmk_reboot_retries="4" cloud="ha-esimerkki"
cloud="ha-esimerkki"
pilven nimellä, jonka määrittelitclouds.yaml
tiedostossa. -
Voit nähdä käytettävissä olevat vaihtoehdot seuraavalla komennolla:
-
Voit testata fencingia suorittamalla nämä komennot:
Vihje
Jos haluat käynnistää (tai käynnistää uudelleen) aidan, voit käyttää tätä komentoa:
Kätevä, jos esimerkiksi sovellat uuttaclouds.yaml
asetusta.
GFS2 asennus
root käyttäjä
Seuraavat komennot suoritetaan root-käyttäjänä.
Kerrotaan koko opetusohjelman ajan, jos komennot täytyy suorittaa yhdellä tai jokaisella solmulla.
-
Suorita seuraava komento jokaisella solmulla:
-
Suorita seuraavat komennot vain yhdellä solmulla:
-
Aseta dlm (Distributed Lock Manager) resurssi:
-
Kopioi resurssi muille solmuille:
-
Aseta lvmlockd resursseja varten sisällytettäväksi locking resurssiryhmään:
-
Tarkista tila:
-
Edelleen vain yhdellä solmulla, luo yksi jaettu volyymiryhmä:
-
Muille solmuille, lisää jaettu laite laitetiedostoon:
-
Käynnistä luontihallinta:
-
Yhdellä solmulla suorita:
ClusterName on klusterin nimi (voit hakea tiedon komennolla$> lvcreate --activate sy -L <size>G -n shared_lv1 shared_vg1 $> mkfs.gfs2 -j <number_of_nodes> -p lock_dlm -t ClusterName:FSName /dev/shared_vg1/shared_lv1
pcs status
)
FSName on tiedostojärjestelmän nimi (eli: gfs2-demo) -
Luo LVM-activate resurssi, jotta logiikkamääritys aktivoidaan kaikilla solmuilla:
-
Kopioi uusi resurssiryhmä:
-
Määritä ordering constraints varmistaa, että locking resurssiryhmää, joka sisältää dlm:n ja lvmlockd:n, käynnistyy ensin:
-
Määritä sijainti rajoittaa varmistaakseen, että vg1-resurssiryhmät käynnistyvät samalla solmulla kuin locking resurssiryhmät:
-
Varmista solmujen klusterissa, että logiikkamääritys on aktiivinen. Saattaa olla muutaman sekunnin viive ennen tätä:
-
Luo tiedostojärjestelmäresurssi, jotta GFS2 tiedostojärjestelmä asennetaan automaattisesti.
Älä lisää sitä tiedostoon /etc/fstab, koska se hallitaan Pacemaker-klusteriresurssina.: -
Voit tarkistaa, onko GFS2 tiedostojärjestelmä asennettu:
GFS2 UKK
-
Kuinka lisätä lisää solmuja?
On mahdollista lisätä uusia solmuja GFS2-klusteriin. Tuettu raja on 16 solmua.
Ensin sinun täytyy varmistaa, että journal-päivityksiä on tarpeeksi. Käytä
gfs2_edit
-kohtaa saadaksesi journalien kokonaismäärän:Jos se ei ole riittävä, voit helposti lisätä niitä
gfs2_jadd
-komennolla:Toiseksi, luo uusi solmu, asenna vaadittu ohjelmisto ja liitä levy openstack API:n avulla. Prosessi on kuvattu yllä.
Sitten sinun täytyy muokata tiedostoa
/etc/corosync/corosync.conf
jokaisessa solmussa ja lisätä kirjaus uudelle:Kun tiedosto on päivitetty, sinun täytyy pysäyttää asennus ja käynnistää dlm ja corosync-daemonit uudelleen jokaisessa solmussa klusterissa.
Lopuksi, sinun täytyy vain asentaa levy:
-
Kuinka laajentaa GFS2 levyn kokoa?
GFS2-levy on konfiguroitu LVM:n (Logical Volume Manager) avulla, joka parantaa fyysisen tallennustilan hallintaa ja joustavuutta.
a. Luo uusi multiattah-levy ja liitä se instansseihisi. Tarkista että levy on hyvin liitetty suorittamalla komento
sudo parted -l
b. Yhdellä solmulla, lisää uusi levy Volyymiryhmään:
c. Edelleen yhdellä solmulla, laajenna Logiikkamääritystä:
d. Tarkista, että Logiikkamääritys on laajennettu suorittamalla komento
sudo lvs
e. Ennen GFS2 volyymin laajentamista, tarkista muilta solmuilta, että sinulla ei ole virheilmoituksia. Suorita
sudo pvs
. Jos näet jotain tällaista:Sinun pitää lisätä laite suorittamalla komento:WARNING: Couldn't find device with uuid JuoyG2-ftdd-U9xm-LLei-VrY7-4GZz-FgC2dr. WARNING: VG shared_vg1 is missing PV JuoyG2-ftdd-U9xm-LLei-VrY7-4GZz-FgC2dr (last written to /dev/vdX)
Tarkista uudelleen
sudo pvs
-komennolla. Varoitusviestin ei pitäisi ilmestyä.f. Jos kaikki on kunnossa, voit kasvattaa GFS2 volyymia kirjoittamalla:
Varoitus
Et voi pienentää GFS2 tiedostojärjestelmää
-
Mitä tapahtuu, jos VM irrotetaan?
Tämä kattaa kaksi eri käyttötapausta, ajallisen ja/tai odottamattoman katkaisun sekä pysyvän katkaisun.
Ajallisen ja odottamattoman katkaisun tapauksessa klusterin pitäisi olla kykenevä selviämään tämäntyyppisistä ongelmista automaattisesti. Kun solmu on takaisin-verkossa, sinun täytyy tarkistaa, että kaikki palautui normaaliksi. Joissain tapauksissa automaattinen asennus voi epäonnistua, jos näin käy, asenna levy yllä selitetyllä tavalla.
Jos se on ajallinen mutta odotettu, kuten ytimen päivittäminen. Irroita levy solmusta ennen solmun uudelleenkäynnistystä. Tätä ei vaadita mutta se on suositeltavaa.
Pysyvän katkaisun kohdalla, yksi tarvitsee tehdä päinvastainen prosessin lisäämiselle uudelle solmulle. Irroita levy, poista merkintä tälle virtuaalikoneelle
/etc/corosync/corosync.conf
-tiedostosta jokaisesta solmusta ja lopuksi käynnistä daemonit uudelleen jokaisessa solmussa. Tämä täytyy tehdä koska se vaikuttaa klusterin äänestyslaskentaan. -
Onko mahdollista asentaa solmu vain luku -moodissa?
Kyllä, GFS2:lla on "katselutila":
spectator Asenna tämä tiedostojärjestelmä käyttäen erityistä muoto luku-moodissa. Asennus ei käytä tiedostojärjestelmän journaleja. Solmu ei pysty palauttamaan journaleja muille solmuille. norecovery Synonymi spectator:ille
Joten yksinkertaisesti suorita tämä komento:
$> pcs resource create sharedfs1 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv1" directory="/mnt/gfs" fstype="gfs2" options=noatime,spectator op monitor interval=10s on-fail=fence
fstype="gfs2"
ei ole tiukasti ottaen välttämätön, koska mount voi havaita tiedostojärjestelmätyypin, mutta se on suositeltavaa vältettävän väärän tiedostojärjestelmän asentamista. Tarkista vielä, että asennus meni kuten odotettiin seuraavalla tavalla:
GFS2 Linkit
- Pacemaker dokumentaatio
- GFS2 Amazon EBS Moniliitos levyissä
- Aloitetaan Pacemakerin kanssa
- Red Hat Korkean saatavuuden klusterin konfigurointi Red Hat OpenStack alustalla
- GFS2 tiedostojärjestelmät klusterissa
- GFS2 tiedostojärjestelmän laajentaminen
- LVM tilavuusryhmien hallinta
OCFS2 toisena esimerkkinä
Oracle Cluster File System versio 2 on jaettu levytiedostojärjestelmä, jonka on kehittänyt Oracle Corporation ja julkaistu GNU General Public License alla. Samaan aikaan se on erilainen koodipohja, jonka on kehittänyt toinen toimittaja. Lähestymistapa on sama kuin GFS2:
Yksi levy on liitetty klusteriin VM solmuista, mikä mahdollistaa datan luku- ja kirjoitusoperaatiot suoraan ja jokaisessa VM-solmussa on demoni, joka koordinoi luku- ja kirjoitusoperaatioita.
OCFS2 ansible asennus
Kuten GFS2:n kanssa, Ansible playbook luo klusterin VM:iä ja asentaa pyydetyn tiedostojärjestelmän niille. Lopputuloksena on sama levy asennettuna joka VM:ssä. Se on hyvin samanlainen kuin GFS2:n ohjeet. Pikakäynnistyksen komennot näyttävät tältä:
$ source ~/Downloads/project_XXXXXXX-openrc.sh
Please enter your OpenStack Password for project project_XXXXXXX as user YYYYYYYY:
$ ansible-playbook main.yml -e fs='ocfs2'
$ for i in $(seq 1 16);
do
openstack --os-compute-api-version 2.60 server add volume "cinder-ocfs2-$i" multi-attach-test-ocfs2
done
$ ansible-playbook main.yml -e fs='ocfs2'
Ansible täytyy suorittaa kahdesti johtuen bugista openstack.cloud.server_volume
, joka pystyy liittämään levyn vain yhteen virtuaalikoneeseen ja epäonnistuu muiden kanssa.
Jos sinulla on jo klusteri VM:istä tai haluat luoda ne manuaalisesti, on silti mahdollista käyttää ocfs2
Ansible roolia. Vaiheet ovat yksinkertaiset:
-
Luo ja liitä levy. Katso manuaalista Luo ja liitä levy yllä.
-
Luo standardi Ansible -inventaario, tällainen:
[all] <VM_nimi> ansible_host=192.168.1.XXX ansible_user=<user> # ... [all:vars] ansible_ssh_common_args='-J <jumphost>'
Esimerkin yllä sinun tulisi korvata
<VM_nimi>
virtuaalikoneen nimellä, IP192.168.1.XXX
tulee olla oikea IP-osoite ja lopuksi<user>
korvataan asianmukaisella käyttäjänimellä. Sinun täytyy lisätä yksi rivi per virtuaalikone, jonka haluat sisällyttää klusteriin. Lopuksi, jos käytät kyynärisolmua (Jump Host), sinun on korvattava<jumphost>
sen yhteystiedoilla, kutenubuntu@177.51.170.99
-
Luo playbook (tässä esimerkissä
main-ocfs2.yml
), kuten tämä:--- - name: Configure VMs hosts: all gather_facts: true become: true roles: - role: hosts - role: ocfs2
Tämä suorittaa kaksi roolia:
hosts
luo/etc/hosts
tiedoston jokaisessa VM:ssä IP-osoitteilla ja nimillä jokaiselle VM:lle.ocfs2
rooli asentaa ja konfiguroi klusterin. -
Suorita se:
OCFS2 manuaalinen asennus
Jotta voit asentaa OCFS2, sinun täytyy noudattaa muutamia vaiheita:
-
Asenna VM solmut. Tässä vaiheessa ei ole erityistä huomioitavaa, kunhan varmistat, että solmut voivat nähdä toisensa verkossa (se on oletusasetuksena VM-soluissa, jotka on luotu samassa Pouta-projektissa) ja että ne on asennettu samalla jakeluversiolla. Olemme testanneet tämän
Ubuntu v22.04
jaAlmaLinux-9
-versioilla, mutta muut jakelut ja versiot saattavat myös toimia, mutta niitä emme ole testanneet. Tämä opas käyttää Ubuntua esimerkkinä.
AlmaLinux vaatii tietyn Oracle-ytimen asennuksen. Lisätietoja UKK -
Luo ja liitä levy. Katso manuaalista Luo ja liitä levy yllä.
-
Asenna OCFS2 ohjelmisto:
Olemme testanneet tämän version kanssa<kernel_version>
==6.5.0-21-generic
, mutta uudemmat versiot saattavat työskennellä myös tai paremmin. -
Varmista, että jokaisen solmun domain nimi voidaan ratkaista jokaisessa muussa solmussa. Poutassa, yksinkertaisin tapa on käyttää /etc/hosts , jossa jokaisella isännällä on rivi, joka on samankaltainen kuin:
-
Ota ocfs2 käyttöön jokaisessa solmussa käyttämällä:
-
Luo tiedostojärjestelmä. Sinun tulee tehdä tämä vain yhdellä VM solmujen kohdalla.
Korvaa
<numero_instanssia>
klusterin solmujen lukumäärällä. Kiinnitä huomiota ja varmista, että/dev/vdb
on oikein levyn nimi. Periaatteessavdb
on ensimmäinen liitetty levy