Ceph pĂ«rmes iSCSI — ose me skijim duke qĂ«ndruar nĂ« hamak

A është ndonjë ndër ne (cephaz) që nuk e do "ekstremin profesional"?

PĂ«rdoshta jo — pĂ«rndryshe nuk do tĂ« flisnim pĂ«r kĂ«tĂ« produkt tepĂ«r tĂ« interesant dhe argĂ«tues.

ShumĂ« prej atyre qĂ« kanĂ« punuar me Ceph kanĂ« takuar njĂ« rast qĂ« nuk Ă«shtĂ« shumĂ« i zakonshĂ«m (madje mjaft i rrallĂ«), por ndonjĂ«herĂ« i nevojshĂ«m — lidhja e Ceph me iSCSI ose FC. Pse? PĂ«r shembull, pĂ«r tĂ« ofruar njĂ« imazh nga Ceph nĂ« njĂ« server Windows ose Solaris qĂ« pĂ«r ndonjĂ« arsye nuk Ă«shtĂ« virtualizuar ende. Ose nĂ« njĂ« makinĂ« tĂ« virtualizuar, por pĂ«rmes njĂ« hypervizori qĂ« nuk e pĂ«rkrah Ceph — dhe ata, siç e dimĂ«, janĂ« tĂ« shumtĂ«. PĂ«r shembull? PĂ«rdorimi i HyperV ose ESXi, tĂ« cilat janĂ« pĂ«rdorur gjerĂ«sisht. NĂ«se lind nevoja pĂ«r tĂ« ofruar njĂ« imazh nga Ceph nĂ« makinĂ«n e pĂ«rshtatshme, kjo shndĂ«rrohet nĂ« njĂ« detyrĂ« mjaft tĂ«rheqĂ«se.

Pra, kemi:

  1. një grup Ceph që tashmë funksionon
  2. një imazh ekzistues që duhet ofruar përmes iSCSI
  3. Emri i grupit mypool, emri i imazhit myimage

Të fillojmë?

Së pari, kur flasim për FC ose iSCSI, na shfaqen subjekte si iniciatori (initiator) dhe target. Target është në thelb serveri, ndërsa initiator është klienti. Detyra jonë është të ofrojmë imazhin Ceph në iniciator me sa më pak përpjekje. Dhe për këtë, na duhet të vendosim target. Por ku, në cilin kompjuter?

FatmirĂ«sisht, nĂ« grupin Ceph kemi tĂ« paktĂ«n njĂ« komponent, i cili ka njĂ« IP tĂ« fiksuar dhe nĂ« 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 (dhe initiatorin njĂ«kohĂ«sisht, tĂ« paktĂ«n pĂ«r testim). E kam bĂ«rĂ« kĂ«tĂ« nĂ« CentOS, por pĂ«r çdo distribuim tjetĂ«r, zgjidhja do tĂ« pĂ«rshtatet — mjafton tĂ« instaloni paketat nĂ« mĂ«nyrĂ«n qĂ« Ă«shtĂ« e pranueshme pĂ«r distribuimin tuaj.

# yum -y install iscsi-initiator-utils targetcli

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

  • targetcli — njĂ« mjet menaxhimi pĂ«r SCSI target-in e integruar nĂ« bĂ«rthamĂ«n Linux
  • iscsi-initiator-utils — njĂ« paketĂ« me mjete tĂ« pĂ«rdorura pĂ«r menaxhimin pĂ«rsĂ«ri tĂ« iniciatorit iSCSI tĂ« integruar nĂ« bĂ«rthamĂ«n Linux

PĂ«r tĂ« ngarkuar njĂ« imazh pĂ«rmes iSCSI nĂ« iniciator, ka dy mundĂ«si — tĂ« pĂ«rdorim backend-in e target-it nĂ« userspace ose tĂ« lidhen imazhin si pajisje blloku e dukshme pĂ«r sistemin operativ dhe ta eksportojmĂ« atĂ« pĂ«rmes iSCSI. Ne do tĂ« shkojmĂ« me rrugĂ«n e dytĂ« — backend-i nĂ« userspace Ă«shtĂ« ende nĂ« njĂ« gjendje "eksperimentale" dhe pĂ«r pĂ«rdorim produktiv Ă«shtĂ« paksa i papĂ«rshtatshĂ«m. PĂ«r mĂ« tepĂ«r, ka ndĂ«rlikime me tĂ«, pĂ«r tĂ« cilat mund tĂ« flasim shumĂ« dhe (o tmerĂ«!) tĂ« diskutojmĂ«.

Nëse përdorim ndonjë distribucion të qëndrueshëm me një cikël të gjatë mbështetjeje, atëherë bërthama jonë është ndonjë version shumë të vjetër. Për shembull, në CentOS7 është 3.10.*, në CentOS8 është 4.19. Ne na intereson bërthama të paktën 5.3 (më saktë 5.4) dhe më të re. Pse? Sepse, për default, imazhet në Ceph kanë një grup opsionesh të lidhura që nuk janë të përputhshme me bërthamë të vjetra. Kështu që, ne lidhim depo me bërthamë të re për distribucionin tonë (për shembull, për CentOS është elrepo), instalojmë bërthamën e re dhe rindezim sistemin për të punuar me bërthamën e re:

  • Lidhemi me monitorin e zgjedhur pĂ«r eksperimentin
  • Lidhim depozitĂ« elrepo sipas udhĂ«zimeve — elrepo.org/tiki/tiki-index.php
  • InstalojmĂ« bĂ«rthamĂ«n: yum -y --enablerepo=elrepo-kernel install kernel-ml
  • Rindezim serverin me monitorin (kĂ«tu kemi tre monitorĂ«, apo jo?)

Lidhem imazhi si pajisje blloku

# hartë rbd mypool/myimage
/dev/rbd0

Mbete vetĂ«m tĂ« konfigurojmĂ« target-in. NĂ« kĂ«tĂ« shembull, unĂ« do ta konfiguroj target-in nĂ« modin e njohur si demo — pa autentikim, tĂ« dukshĂ«m dhe tĂ« aksesueshĂ«m pĂ«r tĂ« gjithĂ«. NĂ« mjedisin produktiv, me siguri do tĂ« dĂ«shironit tĂ« konfiguronit autentikimin — por kjo Ă«shtĂ« pak jashtĂ« skopit tĂ« ushtrimit tĂ« sotĂ«m thjesht pĂ«r argĂ«tim.

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

Krijojmë backend:

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

Krijojmë target-in iSCSI:

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

Lidhemi me backend-in si LUN në target:

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

Përfundojmë konfigurimin e target-it 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

Ruajmë konfigurimin:

# targetcli saveconfig

Kontrollojmë praninë e target-it:

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

Lidhem me target-in:

# iscsiadm -m node --login
Duke në [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (shumëfishtë)
Kyçja në [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] ishte e suksesshme.

Nëse e keni bërë çdo gjë siç duhet, do të shihni një disk të ri në server, i cili duket si një pajisje SCSI, por në të vërtetë është një imazh nga Ceph, aksesimi i të cilit bëhet përmes iSCSI target. Për të shmangur probleme gjatë ngarkimit, është më mirë të hiqni diskun e lidhur dhe targetin e zbuluar nga iniciatori lokal:

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

E gjithĂ« çka mbetet Ă«shtĂ« tĂ« ruani konfigurimin, nĂ« mĂ«nyrĂ« qĂ« imazhi tĂ« lidhet automatikisht dhe pas lidhjes tĂ« startojĂ« targetin. Nisja e targetit pĂ«rbĂ«het nga dy hapa — lidhja RBD dhe vetĂ« nisja e targetit.

Së pari, do të konfigurojmë lidhjen automatike të imazheve RBD me hostin. Kjo bëhet duke shtuar rreshta në skedarin /etc/ceph/rbdmap:

# kot /etc/ceph/rbdmap
# RbdDevice Parameters
mypool/mayimage id=admin
# systemctl aktivizo rbdmap

Me rikthimin e konfigurimit tĂ« targetit Ă«shtĂ« pak mĂ« e komplikuar — ne duhet tĂ« shkruajmĂ« njĂ« njĂ«sinĂ« pĂ«r systemd, e cila do tĂ« rikthejĂ« konfigurimin:

# macja /usr/lib/systemd/system/scsi-target.service
[Unit]
Përshkrimi=Start iSCSI target

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

[Shërbimi]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/targetcli restoreconfig

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl enable scsi-target

Testi pĂ«rfundimtar — edhe njĂ« herĂ« rindezim monitorin tonĂ« (i cili tani Ă«shtĂ« iSCSI-target). Duhet thĂ«nĂ« se nĂ«se nuk do tĂ« kishim pastruar bazĂ«n e iniciatorit me komandĂ«n iscsiadm -n discoverydb -o delete 
 atĂ«herĂ« mund tĂ« ishim pĂ«rballur me njĂ« server qĂ« nuk boot-onte ose qĂ« ngarkohej ngadalĂ«.

ÇfarĂ« mbetet?

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

Si të sigurojmë që targeti ynë të jetë me disponueshmëri të lartë?

Po ashtu, mund tĂ« konfigurojmĂ« targetet nĂ« monitorĂ« tĂ« tjerĂ« dhe tĂ« krijojmĂ« multipath (vmware do ta kuptojĂ« kĂ«tĂ« dhe madje do tĂ« funksionojĂ«, Hyper-V nuk do ta kuptojĂ« — atje kĂ«rkohen bllokimet SCSI). Duke qenĂ« se klienti Ceph nga bĂ«rthama nuk pĂ«rdor caching, kjo Ă«shtĂ« mjaft funksionale. Ose njĂ« opsion tjetĂ«r — tĂ« krijojmĂ« njĂ« burim grupor nga tre komponentĂ« — njĂ« target tĂ« dedikuar dhe shĂ«rbimet rbdmap dhe scsi-target, dhe tĂ« menaxhojmĂ« kĂ«tĂ« burim pĂ«rmes mjeteve tĂ« grupimit (kush tha pacemaker?) Adresa IP Siç duket, ky artikull Ă«shtĂ« pak njĂ« shaka — por nĂ« tĂ« kam tentuar tĂ« shiqoj disa tema mjaft popullore njĂ«kohĂ«sisht — target i iSCSI, i cili nuk Ă«shtĂ« aspak e nevojshme tĂ« eksportojĂ« imazhe Ceph — por, pĂ«r shembull, tĂ« eksportojĂ« volume LVM, themelore pĂ«r punĂ«n me iniciatorin iSCSI (si tĂ« skanojmĂ« targetin, si tĂ« lidhemi me targetin, t'i shkĂ«pusim lidhjen, tĂ« fshijmĂ« regjistrimin e targetit nga baza), shkruar njĂ« njĂ«sinĂ« tĂ« vet pĂ«r systemd dhe disa tĂ« tjera.

Në vend të epilogu

Si e kuptueshme, ky artikull Ă«shtĂ« disi njĂ« shaka — por nĂ« tĂ« pĂ«rpiqem tĂ« shqyrtoj "shpejt dhe me shembuj" njĂ«kohĂ«sisht disa tema tĂ« njohura — iSCSI target, i cili nuk Ă«shtĂ« domosdoshmĂ«rish pĂ«r tĂ« eksportuar imazhe Ceph — por, pĂ«r shembull, pĂ«r tĂ« eksportuar volume LVM, bazat e punĂ«s me iSCSI iniciatorin (si tĂ« skanojmĂ« targetin, si tĂ« lidhemi me targetin, tĂ« çaktivizojmĂ«, tĂ« fshijmĂ« regjistrimin e targetit nga baza), shkruani njĂ«sinĂ« tuaj pĂ«r systemd dhe disa tĂ« tjera

Shpresoj qĂ«, edhe nĂ«se nuk e pĂ«rs ĐżĐŸĐČŃ‚ĐŸŃ€ni kĂ«tĂ« eksperiment tĂ« plotĂ«, diçka nga ky artikull do t'ju jetĂ« e dobishme.

Burimi: habr.com

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