Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Cinder-taltioden moniliittäminen

Warning

Oletuksena kiintiö on asetettu arvoon 0, joten sinun täytyy pyytää sitä lähettämällä sähköpostia osoitteeseen servicedesk@csc.fi

Sama cinder-taltio on mahdollista liittää ja liittää käyttöön useammassa kuin yhdessä virtuaalikoneessa samanaikaisesti. Tämä tarkoittaa, että jokainen virtuaalikone voi lukea ja kirjoittaa samaan lohkolaiteeseen. Tämä on samankaltaista kuin mitä SAN mahdollistaa.

Multi attach

Tällä ominaisuudella on useita etuja ja haittoja. Toisaalta se mahdollistaa tiedostojen jakamisen virtuaalikoneiden välillä ilman minkäänlaista välipalvelinta, jota tarvittaisiin ratkaisuissa kuten NFS tai GlusterFS. Tämä vähentää tarvittavien virtuaalikoneiden määrää, mikä tarkoittaa vähemmän ylläpitoa ja vähemmän yksittäisiä vikapisteitä. Toisaalta on tarpeen käyttää niin sanottua klusteroitua tiedostojärjestelmää, kuten Oracle Cluster File System 2 (ocfs2) tai Red Hatin Global File System (GFS2). Nämä järjestelmät tarvitsevat klusterin toisiinsa yhteydessä olevia taustaprosesseja, 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 datan vioittumiseen, joten niiden käyttöä ei suositella. Jokainen virtuaalikone ajaa yhtä kopiota taustaprosessista, eikä järjestelmässä ole master-solmua, vaan se perustuu päätösvaltaisuuteen (quorum). Valinta näiden kahden tiedostojärjestelmän välillä riippuu käyttötapauksesta ja toimittajakohtaisista mieltymyksistä. Testeissämme GFS2 vaikuttaa sopivan paremmin Red Hat -pohjaisiin järjestelmiin ja OCFS2 Debian-pohjaisiin, mutta tulokset voivat vaihdella.

Warning

Näiden tiedostojärjestelmien määritys, ylläpito ja käyttö eivät ole yksinkertainen tehtävä. Alla olevat ohjeet toimivat lähtökohtana eivätkä kata kaikkia mahdollisuuksia. Kattavampia tietoja varten tutustu alkuperäiseen dokumentaatioon.

Luo ja liitä taltio

quota

Varmista, että sinulla on käytettävissä kiintiötä tämän tyyppiselle taltiolle

WebUI

  1. Siirry Poudan Volumes-sivulle.

  2. Napsauta "+Create Volume"

  3. Luo taltio kuten minkä tahansa muun Type-tyyppisen taltion kohdalla. Aseta Volume Name ja Size (GiB) haluamallasi tavalla.

  4. Vaihda Type arvoksi standard.multiattach.

  5. Napsauta "Create Volume".

Create Volume Multiattach

not supported

Et voi liittää taltiota useaan virtuaalikoneeseen WebUI:n kautta, voit vain nähdä sen tilan. Voit liittää taltion useaan virtuaalikoneeseen vain komentorivikäyttöliittymän avulla.

CLI

Ennen tätä sinun täytyy asentaa openstack-asiakasohjelma:

  1. Luo moniliitettävä taltio:

    openstack volume create --size <size_in_GB> --type standard.multiattach <volume_name>
    
    Sinun täytyy korvata <volume_name> sillä nimellä, jonka haluat antaa taltiolle, ja <size_in_GB> koolla gigatavuina, jonka haluat taltiolla olevan.

  2. Liitä taltio virtuaalikonesolmuun:

    openstack --os-compute-api-version 2.60 server add volume "<VM_name>" <volume_name>
    
    Sinun täytyy korvata <volume_name> edellisessä vaiheessa luomasi taltion nimellä ja <VM_name> virtuaalikonesolmun nimellä. Kun teet tämän virtuaalikoneklusterille, komento täytyy suorittaa kerran jokaista virtuaalikonetta kohden.

GFS2 esimerkkinä

Global File System eli lyhyesti GFS2 on tiedostojärjestelmä, jota Red Hat tällä hetkellä kehittää. Se käyttää dlm:ää tiedostojärjestelmäoperaatioiden koordinointiin klusterin solmujen välillä. Varsinainen data luetaan ja kirjoitetaan suoraan jaettuun lohkolaitteeseen.

Warning

GFS2 tukee enintään 16 samaan taltioon liitettyä solmua.

GFS2 with DLM

GFS2:n asennus Ansiblella

Olemme kirjoittaneet pienen ansible-cinder-multiattach-playbookin, joka asentaa solmuklusterin ja asentaa niihin jaetun GFS2-tiedostojärjestelmän. Playbook on tarkoitettu ohjeeksi ja demoksi, eikä se ole tuotantovalmis. Esimerkiksi yksi vaihe on tehtävä käsin: taltion liittäminen jokaiseen solmuun. Ansible-playbook luo virtuaalikoneklusterin ja asentaa siihen pyydetyn tiedostojärjestelmän. Lopputuloksena sama taltio liitetään käyttöön jokaisessa virtuaalikoneessa. Pikakäynnistyksen komennot ovat seuraavat:

$> 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 lisätä myös all.yaml-tiedostoon.
Se voi olla robottikäyttäjätunnus

Sinun täytyy suorittaa Ansible kahdesti openstack.cloud.server_volume-moduulissa olevan virheen vuoksi, koska se voi liittää taltion vain yhteen virtuaalikoneeseen ja epäonnistuu muiden kohdalla.

Jos sinulla on jo virtuaalikoneklusteri tai haluat luoda sen käsin, voit silti käyttää gfs2-Ansible-roolia. Vaiheet ovat yksinkertaiset:

  1. Luo ja liitä taltio. Katso yllä oleva ohje Luo ja liitä taltio.

  2. Luo tavallinen Ansible-inventory esimerkiksi näin:

    [all]
    <VM_name> ansible_host=192.168.1.XXX ansible_user=<user>
    # ...
    [all:vars]
    ansible_ssh_common_args='-J <jumphost>'
    

    Yllä olevassa esimerkissä sinun täytyy korvata <VM_name> virtuaalikoneen nimellä, IP-osoitteen 192.168.1.XXX täytyy olla virtuaalikoneen oikea IP-osoite, ja lopuksi myös <user> täytyy korvata vastaavalla käyttäjällä. Tarvitset yhden rivin jokaista klusteriin sisällytettävää virtuaalikonesolmua kohden. Lopuksi, jos käytät Jump Hostia, sinun täytyy korvata <jumphost> sen yhteystiedoilla, kuten ubuntu@177.51.170.99

  3. Luo playbook esimerkiksi näin:

    ---
    
    - name: Configure VMs
      hosts: all
      gather_facts: true
      become: true
      roles:
        - role: hosts
        - role: gfs2
    

    Tämä suorittaa kaksi roolia: hosts-roolin, joka luo /etc/hosts-tiedoston jokaiseen virtuaalikoneeseen kaikkien virtuaalikoneiden IP-osoitteilla ja nimillä. gfs2-rooli asentaa ja määrittää klusterin.

  4. Ja suorita se:

    $> ansible-playbook main-gfs2.yml -i inventory.ini
    

GFS2:n manuaalinen asennus

GFS2:n asentamiseksi sinun täytyy seurata muutamaa vaihetta:

  1. Asenna virtuaalikonesolmut. Tässä vaiheessa ei ole erityisiä huomioita, paitsi että on varmistettava solmujen näkevän toisensa verkossa (tämä on oletuskäytös samassa Pouta-projektissa luoduille virtuaalikonesolmuille) ja että niihin on asennettu sama jakeluversio. Olemme testanneet tätä AlmaLinux-9:llä; muut jakelut ja versiot voivat myös toimia, mutta emme ole testanneet niitä.

  2. Luo ja liitä taltio. Katso yllä oleva ohje Luo ja liitä taltio.

  3. AlmaLinuxissa ja muissa Red Hat -pohjaisissa jakeluissa sinun tarvitsee vain ottaa käyttöön kaksi kokoelmaa ja asentaa muutama paketti jokaiselle solmulle:

    $> dnf config-manager --enable  highavailability resilientstorage
    $> dnf install pacemaker corosync pcs dlm gfs2-utils lvm2-lockd
    

Klusterin määritys

root user

Seuraavat komennot suoritetaan root-käyttäjänä
Tässä ohjeessa kerrotaan erikseen, täytyykö komennot suorittaa yhdellä vai jokaisella solmulla.

  1. Suorita seuraavat komennot jokaisella solmulla:

    $> systemctl start pcsd.service
    $> systemctl enable pcsd.service
    
  2. Kun asennat pacemaker-paketin, se luo käyttäjän nimeltä hacluster. Sinun täytyy asettaa salasana tälle käyttäjälle:

    $> passwd hacluster
    
  3. Varmista, että jokaisen solmun verkkotunnusnimi voidaan selvittää jokaisessa muussa solmussa. Poudassa yksinkertaisin tapa on käyttää tiedostoa /etc/hosts, jossa jokaisella palvelimella on tämän kaltainen rivi:

    <ip> <vm_name>
    
  4. Suorita seuraavat komennot vain yhdellä solmulla:

    $> pcs host auth node1 node2 node3 ...
    Username: hacluster
    Password: *******
    $> pcs cluster setup <cluster_name> node1 node2 node3 ...
    $> pcs cluster start --all
    
  5. Voit tarkistaa tilan suorittamalla komennot:

    $> pcs cluster status
    $> pcs status corosync
    

Oletuksena corosync- ja pacemaker-palvelut ovat pois käytöstä:

$> pcs status
Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

pacemakerin dokumentaation mukaan:

requiring a manual start of cluster services gives you the opportunity 
to do a post-mortem investigation of a node failure 
before returning it to the cluster.

Tämä tarkoittaa, että jos solmu kaatuu ja käynnistyy uudelleen, sinun täytyy suorittaa komento pcs cluster start [<NODENAME> | --all], jotta klusteri käynnistyy siinä.
Voit halutessasi ottaa ne käyttöön pcs:llä:

$> pcs cluster enable [<NODENAME> | --all]

Fencing-määritys

root user

Seuraavat komennot suoritetaan root-käyttäjänä.
Tässä ohjeessa kerrotaan erikseen, täytyykö komennot suorittaa yhdellä vai jokaisella solmulla.

  1. Suorita seuraavat komennot jokaisella solmulla:

    $> setenforce 0
    $> sed -i.bak "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
    $> dnf install -y fence-agents-openstack pip
    $> pip install python-openstackclient python-novaclient
    
  2. Koska asennamme python-openstackclient-paketin root-käyttäjänä, sinun täytyy lisätä /usr/local/bin PATH-muuttujaan:

    $> vim ~/.bashrc
    export PATH=/usr/local/bin:$PATH
    
  3. Luo /etc-hakemistoon kansio nimeltä openstack. Luo sitten tiedosto nimeltä clouds.yaml hakemistoon /etc/openstack. YAML-tiedoston täytyy olla tämän kaltainen:

    clouds:
      ha-example:
        auth:
          auth_url: https://pouta.csc.fi:5001/v3
          project_name: project_xxxxxxx
          username: <username>
          password: <password>
          user_domain_name: Default
          project_domain_name: Default
    <. . . additional options . . .>
      region_name: regionOne
      verify: False
    
  4. Suorita seuraavat komennot vain yhdellä solmulla:

    $> pcs property set stonith-enabled=true
    
  5. Tarkista arvo:

    $> pcs property
    
  6. Luo fencing HA-klusterille. Ensin sinun täytyy selvittää jokaisen klusterisi solmun UUID. Voit suorittaa komennon:

    $> openstack server list
    

    Sitten:

    $> pcs stonith create <fence_name> 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-example"
    
    Korvaa cloud="ha-example" sillä pilven nimellä, jonka määritit clouds.yaml-tiedostossa.

  7. Voit tarkastella käytettävissä olevia vaihtoehtoja seuraavalla komennolla:

    $> pcs stonith describe fence_openstack
    
  8. Voit testata fencingiä suorittamalla nämä komennot:

    $> pcs stonith fence node2
    $> pcs status
    $> pcs cluster start node2
    

Vinkki

Jos haluat käynnistää (tai käynnistää uudelleen) fencingin, voit käyttää tätä komentoa:

$> pcs stonith cleanup <fence_name>
Hyödyllinen esimerkiksi silloin, jos otat käyttöön uuden clouds.yaml-määrityksen.

GFS2:n määritys

root user

Seuraavat komennot suoritetaan root-käyttäjänä.
Tässä ohjeessa kerrotaan erikseen, täytyykö komennot suorittaa yhdellä vai jokaisella solmulla.

  1. Suorita seuraava komento jokaisella solmulla:

    $> sed -i.bak "s/# use_lvmlockd = 0/use_lvmlockd = 1/g" /etc/lvm/lvm.conf
    
  2. Suorita seuraavat komennot vain yhdellä solmulla:

    $> pcs property set no-quorum-policy=freeze
    
  3. Määritä dlm-resurssi (Distributed Lock Manager):

    $> pcs resource create dlm --group locking ocf:pacemaker:controld op monitor interval=30s on-fail=fence
    
  4. Kloonaa resurssi muille solmuille:

    $> pcs resource clone locking interleave=true
    
  5. Määritä lvmlockd-resurssi osaksi locking-resurssiryhmää:

    $> pcs resource create lvmlockd --group locking ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence
    
  6. Tarkista tila:

    $> pcs status --full
    
  7. Luo edelleen vain yhdellä solmulla yksi jaettu taltioryhmä:

    $> vgcreate --shared shared_vg1 /dev/vdb
    
  8. Muilla solmuilla lisää jaettu laite laitetiedostoon:

    $> lvmdevices --adddev /dev/vdb
    
  9. Käynnistä lukitushallinta:

    $> vgchange --lockstart shared_vg1
    
  10. Yhdellä solmulla suorita:

    $> 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
    
    ClusterName on klusterin nimi (voit hakea tiedon komennolla pcs status)
    FSName on tiedostojärjestelmän nimi (esim. gfs2-demo)

  11. Luo LVM-activate-resurssi, joka aktivoi kyseisen loogisen taltion automaattisesti kaikilla solmuilla:

    $> pcs resource create sharedlv1 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg1 \
        activation_mode=shared vg_access_mode=lvmlockd
    
  12. Kloonaa uusi resurssiryhmä:

    $> pcs resource clone shared_vg1 interleave=true
    
  13. Määritä järjestysrajoitteet, jotta dlm- ja lvmlockd-resurssit sisältävä locking-resurssiryhmä käynnistyy ensin:

    $> pcs constraint order start locking-clone then shared_vg1-clone
    
  14. Määritä sijaintirajoite, jotta vg1-resurssiryhmät käynnistyvät samalla solmulla kuin locking-resurssiryhmä:

    $> pcs constraint colocation add shared_vg1-clone with locking-clone
    
  15. Varmista klusterin solmuilla, että looginen taltio on aktiivinen. Viive voi olla muutamia sekunteja:

    $> lvs
        LV         VG         Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
        shared_lv1 shared_vg1 -wi-a----- <size>g
    
  16. Luo tiedostojärjestelmäresurssi, joka liittää GFS2-tiedostojärjestelmän käyttöön automaattisesti.
    Älä lisää sitä /etc/fstab-tiedostoon, koska sitä hallitaan Pacemaker-klusteriresurssina:

    $> pcs resource create sharedfs1 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv1" \
        directory="/mnt/gfs" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence
    
  17. Voit tarkistaa, onko GFS2-tiedostojärjestelmä liitetty käyttöön:

    $> mount | grep gfs2
    $> pcs status --full
    

GFS2 UKK

  • Miten lisään lisää solmuja?

    Uusia solmuja on mahdollista lisätä GFS2-klusteriin. Tuettu raja on 16 solmua.

    Ensin sinun täytyy varmistaa, että journal-merkintöjä on riittävästi. Käytä gfs2_edit-komentoa journalien kokonaismäärän tarkistamiseen:

    sudo gfs2_edit -p jindex /dev/vdb | grep journal
    

    Jos niitä ei ole tarpeeksi, voit lisätä niitä helposti gfs2_jadd-komennolla:

    $> sudo gfs2_jadd -j 1 /mnt
    Filesystem: /mnt
    Old journals: 15
    New journals: 16
    

    Toiseksi luo uusi solmu, asenna tarvittavat ohjelmistot ja liitä taltio OpenStack API:n avulla. Prosessi on kuvattu yllä.

    Sen jälkeen sinun täytyy muokata tiedostoa /etc/corosync/corosync.conf jokaisella solmulla ja lisätä merkintä uudelle solmulle:

    node {
     ring0_addr: cinder-gfs2-16
     nodeid: 16
    }
    

    Kun tiedosto on päivitetty, sinun täytyy pysäyttää liitos ja käynnistää dlm- ja corosync-taustaprosessit uudelleen jokaisella klusterin solmulla.

    Lopuksi sinun tarvitsee vain liittää taltio käyttöön:

    $> pcs resource create sharedfs1 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv1" directory="/mnt/gfs" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence
    
  • Miten laajennan GFS2-taltiotani?

    GFS2-taltio määritettiin käyttäen LVM:ää (Logical Volume Manager), joka parantaa fyysisen tallennuksen hallintaa ja joustavuutta.

    a. Luo uusi moniliitettävä taltio ja liitä se instansseihisi. Tarkista, että taltio on liitetty oikein suorittamalla komento sudo parted -l

    b. Lisää uudella taltiolla yhdellä solmulla uusi taltio Volume Groupiin:

    sudo vgextend VolumeGroupName /dev/vdX
    

    c. Laajenna edelleen yhdellä solmulla loogista taltiota:

    sudo lvextend -l +100%FREE /dev/VolumeGroupName/LogicalVolumeName
    

    d. Tarkista komennolla sudo lvs, että loogista taltiota on laajennettu

    e. Ennen GFS2-taltion laajentamista tarkista muilla solmuilla, ettei virheilmoituksia ole. Suorita sudo pvs. Jos näet jotain tämän kaltaista:

    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)
    
    Sinun täytyy lisätä laite suorittamalla komento:

    sudo lvmdevices --adddev /dev/vdX
    

    Tarkista uudelleen komennolla sudo pvs. Varoitusviestin ei pitäisi enää näkyä.

    f. Jos kaikki on kunnossa, voit kasvattaa GFS2-taltiotasi kirjoittamalla:

    sudo gfs2_grow <YourGFS2MountVolume>
    

    Warning

    GFS2-tiedostojärjestelmän kokoa ei voi pienentää

  • Mitä tapahtuu, jos virtuaalikone menettää yhteyden?

    Tämä kattaa kaksi eri käyttötapausta: tilapäisen ja/tai odottamattoman yhteyden katkeamisen sekä pysyvän katkeamisen.

    Tilapäisen ja odottamattoman yhteyden katkeamisen tapauksessa klusterin pitäisi pystyä käsittelemään tällaiset tilanteet automaattisesti. Kun solmu on taas käytettävissä, sinun täytyy tarkistaa, että kaikki palautui normaaliksi. Joissakin tapauksissa taltion automaattinen liittäminen käyttöön voi epäonnistua; jos näin käy, liitä taltio käyttöön yllä kuvatulla tavalla.

    Jos katkos on tilapäinen mutta odotettu, esimerkiksi ytimen version päivittämistä varten, irrota taltio käyttöliitoksesta solmulla ennen sen uudelleenkäynnistystä. Tämä ei ole pakollista, mutta suositeltavaa.

    Virtuaalikoneen pysyvän yhteyden katkeamisen tapauksessa täytyy tehdä uuden solmun lisäämisen käänteinen prosessi. Irrota taltio käyttöliitoksesta, poista tämän virtuaalikoneen merkintä tiedostosta /etc/corosync/corosync.conf jokaisella solmulla ja käynnistä lopuksi taustaprosessit uudelleen jokaisella solmulla. Tämä täytyy tehdä, koska se vaikuttaa klusterin quorum-laskentaan.

  • Onko mahdollista liittää solmu vain luku -tilassa?

    Kyllä, GFS2:ssa on "spectator mode":

    spectator
       Mount  this filesystem using a special form of read-only mount.  The mount does not
       use one of the filesystem's journals. The node is unable to  recover  journals  for
       other nodes.
    
    norecovery
       A synonym for spectator
    

    Suorita siis 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 ehdottoman välttämätön, koska mount voi tunnistaa tiedostojärjestelmän tyypin, mutta sitä suositellaan väärän tiedostojärjestelmän liittämisen välttämiseksi. Tarkista sitten vielä, että liitos onnistui odotetusti:

    $ mount | grep /mnt
    /dev/vdb on /mnt type gfs2 (ro,relatime,spectator,rgrplvb)
    

OCFS2 toisena esimerkkinä

Oracle Cluster File System version 2 on Oracle Corporationin kehittämä ja GNU General Public License -lisenssillä julkaistu jaetun levyn tiedostojärjestelmä. Vaikka kyseessä on eri toimittajan kehittämä eri koodipohja, lähestymistapa on sama kuin GFS2:ssa:

OCFS2

Yksi taltio liitetään virtuaalikonesolmujen klusteriin, jolloin dataa voidaan lukea ja kirjoittaa suoraan, ja jokaisessa virtuaalikonesolmussa toimiva taustaprosessi koordinoi luku- ja kirjoitusoperaatioita.

OCFS2:n asennus Ansiblella

Kuten GFS2:n kanssa, Ansible-playbook luo virtuaalikoneklusterin ja asentaa siihen pyydetyn tiedostojärjestelmän. Lopputuloksena sama taltio liitetään käyttöön jokaisessa virtuaalikoneessa. Ohjeet ovat hyvin samankaltaiset kuin GFS2:ssa. Pikakäynnistyksen komennot ovat seuraavat:

$ 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'

Sinun täytyy suorittaa Ansible kahdesti openstack.cloud.server_volume-moduulissa olevan virheen vuoksi, koska se voi liittää taltion vain yhteen virtuaalikoneeseen ja epäonnistuu muiden kohdalla.

Jos sinulla on jo virtuaalikoneklusteri tai haluat luoda sen käsin, voit silti käyttää ocfs2-Ansible-roolia. Vaiheet ovat yksinkertaiset:

  1. Luo ja liitä taltio. Katso yllä oleva ohje Luo ja liitä taltio.

  2. Luo tavallinen Ansible-inventory esimerkiksi näin:

    [all]
    <VM_name> ansible_host=192.168.1.XXX ansible_user=<user>
    # ...
    [all:vars]
    ansible_ssh_common_args='-J <jumphost>'
    

    Yllä olevassa esimerkissä sinun täytyy korvata <VM_name> virtuaalikoneen nimellä, IP-osoitteen 192.168.1.XXX täytyy olla virtuaalikoneen oikea IP-osoite, ja lopuksi myös <user> täytyy korvata vastaavalla käyttäjällä. Tarvitset yhden rivin jokaista klusteriin sisällytettävää virtuaalikonesolmua kohden. Lopuksi, jos käytät Jump Hostia, sinun täytyy korvata <jumphost> sen yhteystiedoilla, kuten ubuntu@177.51.170.99

  3. Luo playbook (main-ocfs2.yml tässä esimerkissä) esimerkiksi näin:

    ---
    
    - name: Configure VMs
      hosts: all
      gather_facts: true
      become: true
      roles:
        - role: hosts
        - role: ocfs2
    

    Tämä suorittaa kaksi roolia: hosts-roolin, joka luo /etc/hosts-tiedoston jokaiseen virtuaalikoneeseen kaikkien virtuaalikoneiden IP-osoitteilla ja nimillä. ocfs2-rooli asentaa ja määrittää klusterin.

  4. Ja suorita se:

    $ ansible-playbook main-ocfs2.yml -i inventory.ini
    

OCFS2:n manuaalinen asennus

OCFS2:n asentamiseksi sinun täytyy seurata muutamaa vaihetta:

  1. Asenna virtuaalikonesolmut. Tässä vaiheessa ei ole erityisiä huomioita, paitsi että on varmistettava solmujen näkevän toisensa verkossa (tämä on oletuskäytös samassa Pouta-projektissa luoduille virtuaalikonesolmuille) ja että niihin on asennettu sama jakeluversio. Olemme testanneet tätä Ubuntu v22.04:llä ja AlmaLinux-9:llä; muut jakelut ja versiot voivat myös toimia, mutta emme ole testanneet niitä. Tässä ohjeessa käytetään esimerkkinä Ubuntua.
    AlmaLinux vaatii tietyn Oracle-kernelin asentamisen. Lisätietoja on UKK:ssa

  2. Luo ja liitä taltio. Katso yllä oleva ohje Luo ja liitä taltio.

  3. Asenna OCFS2-ohjelmisto:

    ocfs2-tools linux-modules-extra-<kernel_version> linux-image-$(uname -r)
    
    Olemme testanneet tätä versiolla <kernel_version> == 6.5.0-21-generic, mutta myös uudemmat versiot toimivat todennäköisesti yhtä hyvin tai paremmin.

  4. Varmista, että jokaisen solmun verkkotunnusnimi voidaan selvittää jokaisessa muussa solmussa. Poudassa yksinkertaisin tapa on käyttää tiedostoa /etc/hosts, jossa jokaisella palvelimella on tämän kaltainen rivi:

    <ip> <vm_name>
    
  5. Ota ocfs2 käyttöön jokaisella solmulla komennolla:

    sudo dpkg-reconfigure ocfs2-tools
    
  6. Luo tiedostojärjestelmä. Tämä täytyy tehdä vain yhdessä virtuaalikonesolmussa.

    mkfs.ocfs2 -N <number_instances> /dev/vdb
    

    Korvaa <number_instances> klusterin virtuaalikonesolmujen määrällä. Kiinnitä myös huomiota siihen ja tarkista huolellisesti, että /dev/vdb on oikea taltion nimi. Periaatteessa vdb on ensimmäinen virtuaalikoneeseen liitetty taltio, mutta näin ei välttämättä ole kaikissa tapauksissa.

  7. Luo tiedosto /etc/ocfs2/cluster.conf. Toimiva vähimmäisesimerkki noudattaa tätä mallia:

    {% for host in groups['all'] %}
    node:
      ip_port = 7777
      ip_address = {{ hostvars[host]['ansible_host'] }}
      number = {{ groups['all'].index(host)+1 }}
      name = {{ host }}
      cluster = ocfs2
    {% endfor %}
    cluster:
      node_count = {{ number_instances }}
      name = ocfs2
    
  8. Käynnistä uudelleen, jotta asentamasi kernel otetaan käyttöön. Varmista, että ocfs2-palvelu on käynnissä (systemctl status ocfs2).

  9. Liitä lopuksi taltio käyttöön jokaisella solmulla:

    sudo mount /dev/vdb /mnt
    
    Koska laite voi muuttua milloin tahansa, vakavammissa käyttöönottoissa suositellaan käyttämään UUID:tä. Voit hakea UUID:n komennolla blkid:

    $ sudo blkid /dev/vdb
    /dev/vdb: UUID="785134b8-4782-4a1f-8f2a-40bbe7b7b5d2" BLOCK_SIZE="4096" TYPE="ocfs2"
    
    Tässä tapauksessa komento on sudo mount -U 785134b8-4782-4a1f-8f2a-40bbe7b7b5d2 /mnt

OCFS2 UKK

  • Miten lisään lisää solmuja?

    Lisää solmuja on mahdollista lisätä ocfs2-klusteriin, mutta se vaatii käyttökatkon.

    Ensin sinun täytyy kasvattaa slotien määrää komennolla tunefs.ocfs2. Ennen sitä sinun täytyy irrottaa taltio käyttöliitoksesta jokaisessa virtuaalikonesolmussa. Nämä ovat kaksi komentoa, jotka sinun täytyy suorittaa. Jälkimmäinen tarvitsee suorittaa vain yhdellä solmulla:

    sudo umount /mnt
    sudo tunefs.ocfs2 -N 25 /dev/vdb
    

    Toiseksi luo uusi solmu, asenna tarvittavat ohjelmistot ja liitä taltio OpenStack API:n avulla. Prosessi on kuvattu yllä.

    Sen jälkeen sinun täytyy muokata tiedostoa /etc/ocfs2/cluster.conf jokaisella solmulla ja lisätä merkintä uudelle solmulle:

    node:
      ip_port = 7777
      ip_address = <ip_address>
      number = <number>
      name = <vm_name>
      cluster = ocfs2
    

    Korvaa <ip_address> uuden palvelimen osoitteella, <vm_name> sen nimellä ja lopuksi <number> solmun tunnistenumerolla. Sen täytyy olla yksilöllinen jokaiselle solmulle, mieluiten peräkkäiset numerot.

    Kun tiedosto on päivitetty, sinun täytyy pysäyttää liitos ja käynnistää ocfs2 uudelleen jokaisella klusterin solmulla. Lopuksi liitä taltio käyttöön uudelleen jokaisessa virtuaalikonesolmussa.

  • Mitä tapahtuu, jos virtuaalikone menettää yhteyden?

    Tämä kattaa kaksi eri käyttötapausta: tilapäisen ja/tai odottamattoman yhteyden katkeamisen sekä pysyvän katkeamisen. Tilanne on hyvin samankaltainen kuin GFS2:ssa.

    Tilapäisen ja odottamattoman yhteyden katkeamisen tapauksessa klusterin pitäisi pystyä käsittelemään tällaiset tilanteet automaattisesti. Kun solmu on taas käytettävissä, sinun täytyy tarkistaa, että kaikki palautui normaaliksi. Joissakin tapauksissa taltion automaattinen liittäminen käyttöön voi epäonnistua; jos näin käy, liitä taltio käyttöön yllä kuvatulla tavalla.

    Jos katkos on tilapäinen mutta odotettu, esimerkiksi ytimen version päivittämistä varten, irrota taltio käyttöliitoksesta solmulla (sudo umount /mnt) ennen sen uudelleenkäynnistystä. Tämä ei ole pakollista, mutta suositeltavaa.

    Virtuaalikoneen pysyvän yhteyden katkeamisen tapauksessa täytyy tehdä uuden solmun lisäämisen käänteinen prosessi. Irrota taltio käyttöliitoksesta (sudo umount /mnt), poista tämän virtuaalikoneen merkintä tiedostosta /etc/ocfs2/cluster.conf jokaisella solmulla ja käynnistä lopuksi taustaprosessit uudelleen jokaisella solmulla. Tämä täytyy tehdä, koska se vaikuttaa klusterin quorum-laskentaan.

  • Onko mahdollista liittää solmu vain luku -tilassa?

    Kyllä, taltio on mahdollista liittää käyttöön vain luku -tilassa. Se on niinkin yksinkertaista kuin:

    sudo mount /dev/vdb /mnt -o ro
    

    Sen jälkeen voit tarkistaa, että se todella liitettiin vain luku -tilassa, komennolla:

    mount | grep /mnt
    /dev/vdb on /mnt type ocfs2 (ro,relatime,_netdev,heartbeat=local,nointr,data=ordered,errors=remount-ro,atime_quantum=60,coherency=full,user_xattr,acl)
    
    Kuten yllä olevasta tulosteesta näkyy, oletuskäytös on myös liittää se uudelleen vain luku -tilassa, jos mikä tahansa virhe tapahtuu (errors-remount-ro). Katso lisävaihtoehtoja komennosta mount.ocfs2.

  • Haluan asentaa Oracle Kernelin RedHat 9 -jakeluun

    Löydät lisätietoja täältä Oracle Linux -repositorion asentamisesta. Kun se on määritetty, voit asentaa Oracle UEK -kernelin näillä komennoilla:

    Ensin

    sudo dnf install oraclelinux-release-el9
    

    Ja sitten

    sudo dnf install kernel-uek
    

Alkuperäinen dokumentaatio

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta