Ceph pĂ«rmes iSCSI – ose duke bĂ«rĂ« ski nĂ« njĂ« hamak

A ka ndonjë nga ne (cephistët) që nuk pëlqen "ekstremin profesional"?

Pak e vĂ«shtirĂ« — pĂ«rndryshe nuk do tĂ« merreshim me kĂ«tĂ« produkt jashtĂ«zakonisht interesant dhe argĂ«tues.

ShumĂ« nga ata qĂ« kanĂ« punuar me Ceph, kanĂ« hasur nĂ« njĂ« rast jo shumĂ« tĂ« zakonshĂ«m (madje shumĂ« tĂ« rrallĂ«) por ndonjĂ«herĂ« tĂ« kĂ«rkuar — tĂ« lidhen me Ceph pĂ«rmes iSCSI ose FC. Pse? PĂ«r shembull, pĂ«r tĂ« ofruar njĂ« imazh nga Ceph nĂ« ndonjĂ« server Windows ose Solaris qĂ« pĂ«r ndonjĂ« arsye ende nuk Ă«shtĂ« virtualizuar. Ose nĂ« njĂ« virtualizim, por pĂ«rmes njĂ« hypervisor-i qĂ« nuk e mbĂ«shtet Ceph — dhe i tillĂ« Ă«shtĂ« mjaft i zakonshĂ«m. PĂ«r shembull? PĂ«r shembull, HyperV ose ESXi, tĂ« cilat pĂ«rdoren aktivisht. Dhe nĂ«se lind nevoja pĂ«r tĂ« ofruar njĂ« imazh nga Ceph nĂ« njĂ« makinĂ« mysafire, kjo shndĂ«rrohet nĂ« njĂ« detyrĂ« jashtĂ«zakonisht interesante.

Pra, kemi:

  1. një klaster Ceph që funksionon
  2. një imazh ekzistues që duhet të ofrohet përmes iSCSI
  3. Emri i grupit mypool, emri i imazhit myimage

Të fillojmë?

Para së gjithash, kur flasim për FC ose iSCSI, na shfaqen entitete si initiator dhe target. Target-i është në thelb serveri, while initiator është klienti. Detyra jonë është të ofrojmë imazhin Ceph në initiator me sa më pak punë. Kështu që, na nevojitet të vendosim target-in. Por ku, në cilin kompjuter?

FatmirĂ«sisht, nĂ« klasterin Ceph kemi tĂ« paktĂ«n njĂ« komponent, adresa IP e sĂ« cilĂ«s Ă«shtĂ« fikse dhe mbi tĂ« cilin Ă«shtĂ« konfiguruar njĂ« nga komponentĂ«t mĂ« tĂ« rĂ«ndĂ«sishĂ«m tĂ« Ceph, dhe ky komponent Ă«shtĂ« monitori. Pra, nĂ« monitor vendosim iSCSI target (edhe initiator gjithashtu, tĂ« paktĂ«n pĂ«r teste). UnĂ« e kam bĂ«rĂ« kĂ«tĂ« nĂ« CentOS, por pĂ«r çdo shpĂ«rndarje tjetĂ«r zgjidhja gjithashtu Ă«shtĂ« e pĂ«rshtatshme — mjafton tĂ« instalohet paketat nĂ« mĂ«nyrĂ«n qĂ« Ă«shtĂ« e pranueshme nĂ« shpĂ«rndarjen tuaj.

# yum -y install iscsi-initiator-utils targetcli

Cili është qëllimi i paketave që po instalojmë?

  • targetcli — utiliteti i menaxhimit tĂ« SCSI-targetit tĂ« integruar nĂ« bĂ«rthamĂ«n Linux
  • iscsi-initiator-utils — pacaku me utilitetet e pĂ«rdorura pĂ«r tĂ« menaxhuar gjithashtu initiator-in iSCSI tĂ« integruar nĂ« bĂ«rthamĂ«n Linux

PĂ«r tĂ« ofruar imazhin pĂ«rmes iSCSI nĂ« initiator, kemi dy mundĂ«si — tĂ« pĂ«rdorim backend-in e pĂ«rdoruesit tĂ« target-it ose tĂ« lidhi imazhin si njĂ« pajisje blloku tĂ« dukshme pĂ«r sistemin operativ dhe ta eksportojmĂ« atĂ« pĂ«rmes iSCSI. Ne do tĂ« ndjekim rrugĂ«n e dytĂ« — backend-i i pĂ«rdoruesit Ă«shtĂ« ende nĂ« gjendje "eksperimentale" dhe pĂ«r pĂ«rdorim produktiv Ă«shtĂ« pak i papĂ«rshtatshĂ«m. PĂ«r mĂ« tepĂ«r, ka pengesa me tĂ«, pĂ«r tĂ« cilat mund tĂ« flasim shumĂ« dhe (oh, tmerr!) tĂ« diskutojmĂ«.

Nëse përdorim ndonjë shpërndarje mjaft stabile me një cikël mbështetjeje të gjatë, atëherë bërthama jonë do të jetë ndonjë version shumë të vjetër. Për shembull, në CentOS7 është 3.10.*, në CentOS8 është 4.19. Ndërsa na intereson një bërthamë të paktën 5.3 (më së shumti 5.4) dhe më të re. Pse? Sepse si rregull, imazhet në Ceph kanë një grup opsionesh të lidhura që nuk janë të përshtatshme për bërthamat e vjetra. Pra, duhet të lidhim depozita me bërthamë të re për shpërndarjen tonë (për shembull, për CentOS është elrepo), të instalojmë bërthamën e re dhe të rindezim sistemin për të punuar me bërthamën e re:

  • Lidhu me monitorin e zgjedhur pĂ«r eksperiment
  • PĂ«rfshini depozitat elrepo sipas udhĂ«zimeve — elrepo.org/tiki/tiki-index.php
  • Instaloni bĂ«rthamĂ«n: yum -y --enablerepo=elrepo-kernel install kernel-ml
  • Rindezni serverin me monitorin (na ka tre monitorĂ«, apo jo?)

Lidhni imazhin si një pajisje blloku

# harta rbd mypool/imazhiim
/dev/rbd0

Tani Ă«shtĂ« e nevojshme tĂ« konfigurojmĂ« target-in. NĂ« kĂ«tĂ« shembull, unĂ« do ta konfiguroj target-in nĂ« modin e njohur si demo — tĂ« pa autentikuar, e dukshme dhe nĂ« dispozicion pĂ«r tĂ« gjithĂ«. NĂ« mjedisin e prodhimit, me shumĂ« mundĂ«si do tĂ« donit tĂ« konfiguronit autentikimin — por kjo Ă«shtĂ« pak jashtĂ« skopit tĂ« kĂ«tij ushtrimi tĂ« thjeshtĂ« pĂ«r argĂ«tim.

Krijoni backend me emrin disk1 të lidhur me skedarin /dev/rbd/mypool/myimage. Skedari i specifikuar është një lidhje simbolike e krijuar automatikisht nga demonët udev në /dev/rbd0. Ne përdorim pikërisht lidhjen simbolike, pasi emri i pajisjes rbd mund të ndyshohet për shkak të rendit të lidhjes së imazheve Ceph me hostin.

Krijoni backend:

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

Krijoni iSCSI target:

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

Lidhni backend-in si LUN me target-in:

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

Rregulloni target-in për modin demo:

# 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

Ruani konfigurimin:

# targetcli saveconfig

Kontrolloni praninë e target-it:

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

Lidhni target-in:

# iscsiadm -m node --login
Po hyjën në [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (multiple)
Hyjja në [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] e suksesshme.

Nëse keni bërë gjithçka siç duhet, atëherë në server do të shfaqet një disk i ri, i cili duket si një pajisje SCSI, por në të vërtetë është një imazh nga Ceph, aksesin në të cilin e bëjmë përmes iSCSI target-it. Për të shmangur probleme gjatë ngarkimit, është më mirë të hiqni diskun e lidhur dhe target-in e zbuluar nga initiator lokal:

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

Gjithçka qĂ« mbetet Ă«shtĂ« tĂ« ruani konfigurimin, nĂ« mĂ«nyrĂ« qĂ« imazhi tĂ« lidhet automatikisht dhe pas lidhjes tĂ« niset target-i. Nisja e target-it pĂ«rbĂ«het nga dy hapa — lidhja RBD dhe nĂ« thelb nisja e target-it.

Së pari do të konfiguroni lidhjen automatike të imazheve RBD në host. Kjo bëhet duke shtuar rreshta në skedarin /etc/ceph/rbdmap:

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

Me rikthimin e konfigurimit të targetit është pak më e komplikuar - duhet të shkruajmë një njësi për systemd, e cila do të rikthejë konfigurimin:

# cat /usr/lib/systemd/system/scsi-target.service
[Unit]
Përshkrim=Filloni iSCSI target

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

Testi përfundimtar - përsëri rikthejmë monitorin tonë (i cili tani është iSCSI-target). Duhet të theksohet se nëse nuk do ta kishim pastruar bazën e iniciatorit me komandën iscsiadm -n discoverydb -o delete 
 do të kishim një server që nuk ngarkohet ose ngec gjatë ngarkimit.

ÇfarĂ« mbeti?

Të konfiguroni iniciatorin në atë server ku dëshirojmë të ofrojmë targetin.

Si të sigurojmë që targeti ynë të jetë i qëndrueshëm?

Mund të konfigurohen analogjikisht targetet në monitorët e tjerë dhe të krijohet multipath (vmware do ta kuptojë këtë dhe do të funksionojë, Hyper-V nuk do ta kuptojë - duhen bllokime SCSI). Duke qenë se klienti Ceph nga bërthama nuk përdor keqshfrytëzim, kjo është plotësisht e funksionueshme. Ose një variant tjetër - krijoni një burim klastern nga tre komponentë - një target të dedikuar dhe shërbime rbdmap dhe scsi-target, dhe menaxhoni këtë burim me mjetet e klasternit (kush tha pacemaker?) IP të përkushtuar Siç kuptohet, ky artikull është paksa një shaka - por në të kam përpiqur të shqyrtoj "shpejt dhe me shembuj" disa tema të njohura - iSCSI target, i cili mund të eksportohet krejtësisht pa pasur nevojë të eksportojë imazhe Ceph - por për shembull të eksportojë volume LVM, bazat e punës me iniciatorin iSCSI (si të skanohet targeti, si të lidhet me targetin, të shkëputet, të fshihet regjistrimi i targetit nga baza), shkruar një njësi të vetme për systemd dhe disa të tjera

Në vend të një epilogu

Shpresoj se edhe nëse nuk do të përsërisni gjithë këtë eksperiment në mënyrë të plotë, ndonjë gjë nga ky artikull do t'ju rezultojë e dobishme.

A ka ndonjë nga ne (ceph-ists) që nuk i pëlqen "ekstremi profesional"? Me siguri që jo - ndryshe nuk do të përleshnim me këtë produkt jashtëzakonisht interesant dhe argëtues. Shumë nga ata që janë angazhuar në shfrytëzimin e Ceph, kanë hasur një rast që nuk është shumë i zakonshëm (ndoshta madje shumë i pazakontë) por nganjëherë të kërkuar - të lidhin Ceph përmes iSCSI ose FC. Pse?

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster