Ceph lĂ€bi iSCSI — kas suuskadel istudes vĂ”i hĂ€ngelliselt

Kas meie seas (cephide kasutajad) on kedagi, kes ei armasta "professionaalset ekstreemi"?

TĂ”enĂ€oliselt mitte — muidu me ei tegeleks selle erakordselt huvitava ja lĂ”busa tootega.

Paljud neist, kes on tegelenud Cephi haldamisega, on kokku puutunud ĂŒhe mitte kuigi sagedase (pigem isegi vĂ€ga harva esineva) kuid mĂ”nikord nĂ”utud juhtumiga — Cephi ĂŒhendamine iSCSI vĂ”i FC kaudu. Miks? No nĂ€iteks, et edastada pilt Cephist veel virtualiseerimata Windowsi vĂ”i Solaris serverisse. VĂ”i virtualiseeritud serverisse, kuid hyperviisoriga, mis Cephi ei toeta — neid on, nagu me teame, piisavalt. NĂ€iteks? No nĂ€iteks HyperV vĂ”i ESXi, mida aktiivselt kasutatakse. Ja kui tekib ĂŒlesanne edastada pilt Cephist kĂŒlgmisse masinasse, muutub see ĂŒsna huvitavaks ĂŒlesandeks.

Nii, antud on:

  1. juba töötav Cephi klaster
  2. juba olemasolev pilt, mille tuleb edastada iSCSI kaudu
  3. Pula nimi mypool, pildi nimi myimage

Alustame?

Esiteks, kui me rÀÀgime FC-st vĂ”i iSCSI-st, siis on meil sellised mĂ”isted nagu algataja (initiator) ja sihtkoht (target). Target on tegelikult server, initiator — klient. Meie ĂŒlesanne on minimaalse tööjĂ”ukulu korral edastada Cephi pilt algatajale. See tĂ€hendab, et peame seadistama targeti. Kuid kus, millises arvutis?

Õnneks on Cephi klastris meil vĂ€hemalt ĂŒks komponent, mille IP-aadress on fikseeritud ja millel on konfigureeritud ĂŒks Cephi kĂ”ige olulisemaid komponente, ja see komponent on monitor. SeetĂ”ttu installime monitorile iSCSI targeti (ja algataja vĂ€hemalt testide jaoks). Ma tegin seda CentOS-is, kuid iga teise distributsiooni jaoks sobib lahendus samuti — piisab, kui installida paketid viisil, mis on teie distributsioonile vastuvĂ”etav.

# yum -y install iscsi-initiator-utils targetcli

Mis on installitavate pakettide eesmÀrk?

  • targetcli — utiliit Linuxi tuumasse integreeritud SCSI-targeti haldamiseks
  • iscsi-initiator-utils — pakett utiliite, mida kasutatakse samuti Linuxi tuumasse integreeritud iSCSI algataja haldamiseks

iSCSI kaudu pildi esitamiseks algatajaga on kaks vĂ”imalust: kasutada kasutusruumi taustaprogrammi sihti vĂ”i ĂŒhendada pilt blokiseadmeks, mis on operatsioonisĂŒsteemile nĂ€htav ja eksportida see iSCSI kaudu. Me valime teise variandi – kasutusruumi taustaprogramm on veel «eksperimentaalses» seisundis ja tootmiseks veidi ebamugav. Lisaks on sellega mitmeid takistusi, millest saab palju rÀÀkida ning (oh Ă”udust!) vaidleda.

Kui kasutame stabiilset ja pikka aega toetatud distributsiooni, siis on meil tuum mingisuguse iidse versiooniga. NĂ€iteks CentOS7 puhul on see 3.10.*, CentOS8 puhul 4.19. Meid huvitab vĂ€hemalt 5.3 (ja tĂ”enĂ€oliselt 5.4) vĂ”i uuem tuum. Miks? Sest vaikimisi on Ceph'i piltidel aktiivsed valikute komplektid, mis ei ĂŒhildu vanade tuumadega. See tĂ€hendab, et peame lisama oma distributsioonile uue tuuma reposi (nĂ€iteks CentOS jaoks elrepo), installima uue tuuma ja taaskĂ€ivitama sĂŒsteemi, et töötada uue tuumaga:

  • Ühendume valitud katse monitoriga
  • Ühendame elrepo reposid juhendi jĂ€rgi — elrepo.org/tiki/tiki-index.php
  • Installeerime tuuma: yum -y --enablerepo=elrepo-kernel install kernel-ml
  • TaaskĂ€ivitame monitoriga serveri (meil on ju kolm monitori, eks?)

Ühendame pildi blokiseadmeks

# rbd kaart mypool/myimage
/dev/rbd0

JÀÀb vaid sihtmĂ€rki konfigureerida. Selles nĂ€ites konfigureerin sihtmĂ€rgi nn demo-reĆŸiimis — autentimiseta, nĂ€htav ja kĂ”igile kergesti ligipÀÀsetav. Tootmiskeskkonnas sooviksite tĂ”enĂ€oliselt konfigureerida autentimise — aga see on tĂ€na veidi off-topic lĂ”busate katsete kontekstis.

Loome tausta nimega disk1, mis on seotud failiga /dev/rbd/mypool/myimage. Antud fail on automaatselt loodud demon udev sĂŒmboolne link /dev/rbd0. Kasutame just sĂŒmboolset linki, kuna rbd-seadmise nimi vĂ”ib muutuda sĂ”ltuvalt Ceph piltide ĂŒhendamise jĂ€rjekorrast hostiga.

Loome tausta:

# targetcli /backstores/block create disk1 /dev/rbd/mypool/myimage

Loome iSCSI sihtmÀrgi:

# targetcli /iscsi create iqn.2020-01.demo.ceph:mypool

Ühendame tausta LUN-ina sihtmĂ€rgiga:

# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/luns create /backstores/block/disk1

Seadistame sihtmĂ€rgi demo-reĆŸiimiks:

# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/set
> attribute demo_mode_write_protect=0
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/set
> attribute generate_node_acls=1
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/set
> attribute cache_dynamic_acls=1

Salvesta konfigureerimine:

# targetcli saveconfig

Kontrollime sihtmÀrgi olemasolu:

# iscsiadm -m discovery -t st -p 127.0.0.1:3260
127.0.0.1:3260,1 iqn.2020-01.demo.ceph:mypool

Ühendame sihtmĂ€rgi:

# iscsiadm -m node --login
Siss sisse [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (mitmed)
Sisse logimine [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] Ônnestus.

Kui olete kĂ”ik Ă”igesti teinud, siis ilmub serverisse uus ketas, mis nĂ€eb vĂ€lja nagu SCSI-seade, aga tegelikult on see Ceph'i pilt, millele pÀÀseb ligi iSCSI sihtpunkti kaudu. Probleemide vĂ€ltimiseks laadimisel on parem eemaldada ĂŒhendatud ketas ja avastatud sihtpunkt kohalikult algatajatelt:

# iscsiadm -m node --logout
# iscsiadm -m discoverydb -o delete -t st -p 127.0.0.1:3260

KĂŒsimus on nĂŒĂŒd konfiguratsiooni pĂŒsivuses, et pilt ĂŒhenduks automaatselt ja pĂ€rast ĂŒhendamist sihtpunkt kĂ€ivituks. Sihtpunkti kĂ€ivitamine koosneb kahest sammust — RBD ĂŒhendamisest ja sihtpunkti tegelikust kĂ€ivitamisest.

Esmalt konfigureerime RBD piltide automaatse ĂŒhendamise hostiga. Seda tehakse, lisades read faili /etc/ceph/rbdmap:

# cat /etc/ceph/rbdmap
# RbdDevice Parameters
mypool/myimage id=admin
# systemctl enable rbdmap

Sihtpunkti konfiguratsiooni taastamine on veidi keerulisem — peame kirjutama systemd unit'i, mis taastab konfiguratsiooni:

# cat /usr/lib/systemd/system/scsi-target.service
[Unit]
Description=KĂ€ivita iSCSI sihtpunkt

After=network-online.target rbdmap.service
Before=remote-fs-pre.target
Wants=network-online.target remote-fs-pre.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/targetcli restoreconfig

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl enable scsi-target

LĂ”plik test — taaskĂ€ivitame veel kord meie monitori (mis on nĂŒĂŒd iSCSI sihtpunkt). Tuleb mĂ€rkida, et kui me ei oleks algataja andmebaasi kĂ€suga iscsiadm -n discoverydb -o delete 
 vĂ”inud saada mittelaadiva vĂ”i pika laadimisega serveri.

Mis on jÀÀnud?

Konfigureerida algataja sellele serverile, kuhu soovime sihtpunkti edastada.

Kuidas tagada meie sihtpunkti talitlushÀirete tÔttu vastupidavus?

Saame sarnaselt konfigureerida sihtpunkte teistel monitoridel ja korraldada multipath'i (vmware mĂ”istab seda ja töötab, Hyper-V ei mĂ”ista — seal on vajalikud SCSI lukud). Kuna Ceph'i klient ei kasuta tuumal töötamisel vahemĂ€lusid, siis on see tĂ€iesti toimiv. VĂ”i teine variant — luua kolmest komponendist klastriteenus — eraldatud IP-aadressid sihtpunkt ja teenused rbdmap ja scsi-target, ning hallata seda ressurssi klastritehaldusvahendiga (kes ĂŒtles pacemaker?)

LÔpetuseks

Kuidas aru saada, et see artikkel on natuke naljakas — aga ma pĂŒĂŒdsin "kiiresti ja nĂ€idete kaudu" kĂ€sitleda samaaegselt mitut ĂŒsna populaarset teemat — iSCSI sihtpunkt, mis ei pea tingimata eksportima Ceph'i pilte — vaid nĂ€iteks eksportima LVM mahtusid, iSCSI algataja töötamise alused (kuidas sihtpunkti skaneerida, sihtpunktiga ĂŒhendada, lahti ĂŒhendada, kustutada kirje sihtpunktist andmebaasis), oma unit'i kirjutamine systemd jaoks ja mĂ”ned muud asjad.

Loodan, et isegi kui te ei kavatse kogu seda katset tÀielikult korrata, on sellest artiklist vÀhemalt mÔned asjad teile kasulikud.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster