Ceph lĂ€bi iSCSI – vĂ”i suuskadel lamades kiige peal

Kas meie seas (cephide kasutajad) on kedagi, kes ei armasta «professionaalset ekstreemsust»?

Vaevalt — vastasel juhul ei teeks me selle ÀÀrmiselt huvitava ja lĂ”busa tootega trikke.

Paljud neist, kes on tegelenud Cephi haldamisega, on kohanud ĂŒhte mitte vĂ€ga levinud (vĂ”i pigem vĂ€ga harva levinud) juhtumit — ĂŒhendada Ceph iSCSI vĂ”i FC kaudu. Miks? NĂ€iteks selleks, et esitada pilt Cephist mĂ”nel muul mitte virtualiseeritud Windowsi vĂ”i Solaris serverile. VĂ”i virtualiseeritud, kuid hĂŒdrogeeneraatore kaudu, mis ei toeta Cephi — ja neid on nagu me teame, palju. NĂ€iteks? NĂ€iteks HyperV vĂ”i ESXi, mida aktiivselt kasutatakse. Ja kui tekib vajadus esitada pilt Cephist kĂŒlgurile, muutub see tĂ”eliselt pĂ”nevaks ĂŒlesandeks.

Nii et, on olemas:

  1. juba toimiv Cephi klaster
  2. juba olemasolev pilt, mis tuleb esitada iSCSI kaudu
  3. Tumblri nimi mypool, pildi nimi myimage

Alustame?

Esiteks, kui rÀÀgime FC-st vĂ”i iSCSI-st, siis meil tekivad sellised ĂŒksused nagu initsiaator (initiator) ja sihtkoht (target). Sihtkoht on tegelikult server, initsiaator — klient. Meie ĂŒlesanne on vĂ”imalikult vĂ€ikeste tööjĂ”ukuludega esitada Cephi pilt initsiaatorile. See tĂ€hendab, et peame seadistama sihtkoha. Kuid kus, millisel arvutil?

KĂŒllaga, Cephi klastris on vĂ€hemalt ĂŒks komponent, mille IP-aadress on fikseeritud ja millel on konfigureeritud ĂŒks Cephi kĂ”ige olulisemaid komponente, ja see komponent — monitor. Seega, installime monitorile iSCSI sihtkoha (ja initsiaatori, vĂ€hemalt testimiseks). Olen seda teinud CentOS-is, kuid mis tahes teise jaotuse puhul sobib lahendus samuti — piisab, kui installida pakette sellisel viisil, mis on teie jaotusele sobiv.

# yum -y install iscsi-initiator-utils targetcli

Mis on installitavate pakettide eesmÀrk?

  • targetcli — utiliit Linuxi tuumaga SCSI sihtkoha haldamiseks
  • iscsi-initiator-utils — pakett utiliitidega, mida kasutatakse samuti tuumaga iSCSI initsiaatori haldamiseks

Cephi pildi esitlemiseks initsiaatori kaudu on kaks arenguvĂ”imalust — kasutada userspace'i tagumise osa vĂ”i ĂŒhendada pilt plokiahnustena, mis on operatsioonisĂŒsteemile nĂ€htavad ja eksporditud iSCSI kaudu. Me lĂ€heme teist teed — userspace'i tagumine osa on praegu 'eksperimentaalne' ja tootmis kasutuseks ei ole see veel valmis. Lisaks on sellega seotud probleemid, millest saab palju rÀÀkida ja (oi Ă”udust!) arutada.

Kui kasutame mingisugust stabiilset jaotust pika toe tsĂŒkliga, siis meie tuum on mingi vĂ€ga vana versioon. NĂ€iteks CentOS7-is on see 3.10.*, CentOS8-s on see 4.19. Meie huvi on tuum, millel on vĂ€hemalt 5.3 (vĂ”i pigem 5.4) ja uuem. Miks? Sest vaikimisi on Cephis piltidel palju valikuvĂ”imalusi, mis ei ĂŒhti vanade tuumadega. See tĂ€hendab, et me peame oma jaotusele uue tuuma repo ĂŒles seadma (nĂ€iteks CentOS jaoks elrepo), installima uue tuuma ja taaskĂ€ivitama sĂŒsteemi, et töötada uue tuumaga:

  • Ühendume eksperimendiks valitud monitoriga
  • Lisa elrepo replika vastavalt juhistele — elrepo.org/tiki/tiki-index.php
  • Installime tuuma: yum -y —enablerepo=elrepo-kernel install kernel-ml
  • TaaskĂ€ivitame monitoriserveri (meil on ju kolm monitori, eks?)

Ühendame pildi plokiahnuna

# rbd kaart mypool/myimage
/dev/rbd0

JÀÀnud on vaid seadistada sihtkoht. Selles nĂ€ites seadistan sihtkoha nn demo-reĆŸiimis — ilma autentimiseta, nĂ€htav ja kĂ”igile kergesti ligipÀÀsetav. Tootmis keskkonnas soovite tĂ”enĂ€oliselt seadistada autentimised — kuid see jÀÀb tĂ€nase pĂ€eva veidi vĂ€lja jĂ€tta just lĂ”busaks harjutuseks.

Loome tagumise osa nimega disk1, mis on seotud failiga /dev/rbd/mypool/myimage. MÀÀratud fail on automaatselt loodud demoniga udev sĂŒmboolne link /dev/rbd0-le. Kasutame just sĂŒmboolset linki, kuna seadme rbd nimi vĂ”ib varieeruda Cephi piltide hostimise jĂ€rjekorra tĂ”ttu.

Loome tagumise osa:

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

Loome iSCSI sihtkoha:

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

Ühendame tagumise osa LUN-ina sihtkohtadega:

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

Seadistame sihtkoha 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 seadistus:

# targetcli saveconfig

Kontrollime sihtkoha 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 sihtkoha:

# iscsiadm -m node --login
Logimine [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (mitu)
Logimine [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] Ônnestus.

Kui olete kĂ”ik Ă”igesti teinud, ilmub serverisse uus ketas, mis nĂ€eb vĂ€lja nagu SCSI seade, kuid tegelikult on see Cephist pĂ€rit pilt, millele juurdepÀÀs toimub iSCSI sihtkoha kaudu. Probleemide vĂ€ltimiseks, on parem eemaldada ĂŒhendatud ketas ja leitud sihtkoht lokalisest initsiatorist:

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

KĂ”ik, mis jĂ€i — on seadistada konfiguratsioon nii, et pilt ĂŒhendataks automaatselt ja sihtkoht koosseisust vĂ€ljas kĂ€ivitub. Sihtkoha kĂ€ivitamine koosneb kahest sammust — RBD ĂŒhendamine ja sihtkoha enda kĂ€ivitamine.

Esmaltame esmaltam RBD-piltide automaatse ĂŒhendamise seadistamine hostiga. Seda tehakse ridade lisamise kaudu faili /etc/ceph/rbdmap:

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

Kuna sihtkoha seadistamine on veidi keerulisem — peame kirjutama systemd ĂŒksuse, mis taastab seadistuse:

# cat /usr/lib/systemd/system/scsi-target.service
[Unit]
Kirjeldus=KÀivitab iSCSI sihtmÀrgi

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]
Tahab=multi-user.target

# systemctl daemon-reload
# systemctl enable scsi-target

LĂ”plik test — taaskĂ€ivitame meie monitore (mis on nĂŒĂŒd iSCSI-sihtkoht). Tuleb mĂ€rkida, et kui me ei oleks algaja andmebaasi puhastanud kĂ€suga iscsiadm -n discoverydb -o delete 
 vĂ”ime saada server, mis ei kĂ€ivitu vĂ”i mille kĂ€ivitamine kestab kaua.

Mis jÀÀb ĂŒle?

Seadistage algaja serveris, kuhu soovime sihtkoha suunata.

Kuidas tagada meie sihtkoha talitlushÀire vastupidavus?

Saame sarnaselt seadistada sihtkohad teistel monitooridel ja luua multipath (vmware mĂ”istab seda ja töötab isegi, Hyper-V ei mĂ”ista — seal on vajalikud SCSI lukustused). Kuna Cephi klient ei kasuta tuumast vahemĂ€lu, on see tĂ€iesti töötav lahendus. VĂ”i teine variant — luua klastritektsioon kolmest komponendist — eraldatud IP-aadressid sihtkoht ja teenused rbdmap ja scsi-target ning juhtida seda ressursi klasterdamise tööriistade kaudu (kes ĂŒtles pacemaker?)

KÀesoleva lÔppu

Kuidas aru saada, et see artikkel on natuke naljakas — aga ma pĂŒĂŒdsin "kiirelt ja nĂ€idete kaudu" kĂ€sitleda samaaegselt mitmeid ĂŒsna populaarseid teemasid — iSCSI sihtkoht, mis ei pea tingimata eksportima Ceph pilte — vaid nĂ€iteks eksportima LVM mahtu, alused iSCSI algajaga töötamisel (kuidas skaneerida sihtkohta, kuidas sihtkohta ĂŒhendada, lahti ĂŒhendada, kustutada sihtkoha teave andmebaasist), oma systemd ĂŒksuse kirjutamine ja mĂ”ned muud

Loodan, et isegi kui te ei korda seda eksperimenti tÀielikult, leiate vÀhemalt midagi sellest artiklist kasulikku.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster