A ka nga ne (tsefovodov) që nuk e pëlqejnë "ekstremin profesional"?
Nuk ka gjasa - përndryshe ne nuk do të rrëmbeheshim me këtë produkt jashtëzakonisht interesant dhe qesharak.
Shumë përdorues të Ceph kanë hasur një rast përdorimi më pak të zakonshëm (ose ndoshta edhe shumë të rrallë), por ndonjëherë të dobishëm: lidhja e Ceph nëpërmjet iSCSI ose FC. Pse? Për shembull, shërbimi i një imazhi Ceph në një server që nuk është ende i virtualizuar. Windows Ose Solaris. Ose një i virtualizuar, por duke përdorur një hipervizor që nuk mbështet Ceph—dhe, siç e dimë, ka shumë të tillë. Për shembull? Epo, për shembull, HyperV ose ESXi, të cilët përdoren në mënyrë aktive. Dhe nëse lind detyra e shërbimit të një imazhi Ceph te një makinë mysafire, kjo bëhet një sfidë shumë interesante.
Pra, duke pasur parasysh:
- një grup Ceph që tashmë funksionon
- një imazh tashmë ekzistues që duhet të shërbehet nëpërmjet iSCSI
- Emri i pishinës mypool, emri i imazhit imazhi im
Filloni?
Para së gjithash, kur flasim për FC ose iSCSI, ne kemi entitete të tilla si iniciator dhe objektiv. Target është në fakt një server, iniciatori është një klient. Detyra jonë është t'ia paraqesim imazhin e Ceph iniciatorit me përpjekje minimale. Kjo do të thotë që ne duhet të zgjerojmë objektivin. Por ku, në çfarë kompjuteri?
Për fat të mirë, në një klaster Ceph, kemi të paktën një komponent me një adresë IP të fiksuar dhe një nga komponentët më të rëndësishëm Ceph të konfiguruar në të: monitorin. Prandaj, ne konfiguruam një objektiv iSCSI në monitor (dhe një iniciator, të paktën për qëllime testimi). Unë e bëra këtë në CentOS, por zgjidhja do të funksionojë edhe për çdo shpërndarje tjetër—thjesht instaloni paketat në mënyrën që është e pranueshme për shpërndarjen tuaj.
# yum -y install iscsi-initiator-utils targetcli
Cili është qëllimi i paketave të instaluara?
- targetcli — një program për menaxhimin e bërthamës së integruar Linux Objektivi SCSI
- iscsi-iniciator-utils — një paketë me shërbime të përdorura për menaxhim, përsëri të integruara në bërthamë Linux Iniciatori iSCSI
Për të paraqitur një imazh nëpërmjet iSCSI tek iniciatori, ekzistojnë dy opsione për zhvillimin e ngjarjeve - përdorni prapavijën e hapësirës së përdoruesve të objektivit ose lidhni imazhin si një pajisje bllok të dukshme për sistemin operativ dhe eksportojeni atë nëpërmjet iSCSI. Ne do të shkojmë në rrugën e dytë - pjesa e pasme e hapësirës së përdoruesve është ende në një gjendje "eksperimentale" dhe nuk është paksa e gatshme për përdorim produktiv. Përveç kësaj, ka edhe gracka me të, për të cilat mund të flisni shumë dhe (oh tmerr!) të debatoni.
Nëse përdorim ndonjë shpërndarje të qëndrueshme me një cikël mbështetjeje shumë të gjatë, atëherë bërthama jonë është një version i lashtë-i lashtë. Për shembull, në CentOS7 është 3.10.*, në CentOS8 është 4.19. Por ne jemi të interesuar për kernelin 5.3 (dhe me shumë mundësi 5.4) ose më të ri. Pse? Sepse si parazgjedhje, imazhet Ceph kanë të aktivizuara një sërë opsionesh që janë të papajtueshme me kernelet më të vjetra. Kjo do të thotë që po aktivizojmë një depo me një kernel të ri për shpërndarjen tonë (për shembull, për CentOS (Ky është elrepo), instaloni kernelin e ri dhe rinisni sistemin që të funksionojë me kernelin e ri:
- Lidhu me monitorin e zgjedhur për eksperimentin
- Ne lidhim depot elrepo sipas udhëzimeve -
- Instaloni kernelin: yum -y —enablerepo=elrepo-kernel install kernel-ml
- Rinisni serverin me monitor (ne kemi tre monitorë, apo jo?)
Lidhja e imazhit si një pajisje bllokimi
# rbd map mypool/myimage
/dev/rbd0
Gjithçka që mbetet është të konfiguroni objektivin. Në këtë shembull, unë do të konfiguroj objektivin në të ashtuquajturën. modaliteti demo - pa vërtetim, i dukshëm dhe i arritshëm për të gjithë. Në një mjedis prodhimi, ka të ngjarë të dëshironi të konfiguroni vërtetimin - por kjo është pak jashtë fushëveprimit për ushtrimin e sotëm thjesht për argëtim.
Krijo një backend me emrin disk1 të lidhur me skedarin /dev/rbd/mypool/myimage. Skedari i specifikuar është një lidhje simbolike e krijuar automatikisht nga daemon udev në /dev/rbd0. Ne përdorim një lidhje simbolike sepse emri i pajisjes rbd mund të ndryshojë në varësi të rendit në të cilin imazhet Ceph lidhen me hostin.
Krijo një backend:
# targetcli /backstores/block create disk1 /dev/rbd/mypool/myimage
Krijo një objektiv iSCSI:
# targetcli /iscsi create iqn.2020-01.demo.ceph:mypool
Ne e lidhim backend-in si një LUN me objektivin:
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/luns create /backstores/block/disk1
Le të konfigurojmë objektivin për modalitetin 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
Kontrollimi i pranisë së objektivit:
# iscsiadm -m discovery -t st -p 127.0.0.1:3260
127.0.0.1:3260,1 iqn.2020-01.demo.ceph:mypool
Ne lidhim objektivin:
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (multiple)
Login to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] successful.
Nëse keni bërë gjithçka siç duhet, një disk i ri do të shfaqet në server, i cili duket si një pajisje SCSI, por në fakt është një imazh nga Ceph, i aksesuar përmes një objektivi iSCSI. Për të shmangur problemet e nisjes, është më mirë të hiqni diskun e lidhur dhe objektivin e zbuluar nga iniciatori lokal:
# iscsiadm -m node --logout
# iscsiadm -m discoverydb -o delete -t st -p 127.0.0.1:3260
E tëra që mbetet është të vazhdohet konfigurimi në mënyrë që imazhi të lidhet automatikisht dhe, pas lidhjes, objektivi të shtresohet. Lëshimi i një objektivi përbëhet nga dy hapa - lidhja e RBD dhe lëshimi në fakt i objektivit.
Së pari, le të konfigurojmë lidhjen automatike të imazheve RBD me hostin. Kjo bëhet duke shtuar rreshtat e mëposhtëm në skedarin /etc/ceph/rbdmap:
# cat /etc/ceph/rbdmap
# RbdDevice Parameters
mypool/myimage id=admin
# systemctl enable rbdmap
Rivendosja e konfigurimit të synuar është pak më e komplikuar - duhet të shkruajmë një njësi për systemd që do të rivendosë konfigurimin:
# cat /usr/lib/systemd/system/scsi-target.service
[Unit]
Description=Start iSCSI target
After=network-online.target rbdmap.service
Para=remote-fs-pre.target
Dëshiron=network-online.target remote-fs-pre.target
[Shërbimit]
Lloji = një goditje e vetme
RemainAfterExit = yes
ExecStart=/bin/targetcli restoreconfig
[Instalo]
WantedBy = multi-user.target
# systemctl daemon-reload
# systemctl aktivizon scsi-target
Testi përfundimtar është të rindizni përsëri monitorin tonë (tani është një objektiv iSCSI). Duhet të theksohet se nëse nuk do të kishim pastruar bazën e të dhënave të iniciatorit me komandën iscsiadm -n discoverydb -o fshij ... mund të përfundoni me një server që nuk ngarkohet ose kërkon shumë kohë për t'u ngarkuar.
Çfarë ka mbetur?
Konfiguro iniciatorin në serverin ku duam të dërgojmë objektivin.
Si të sigurojmë tolerancën e gabimeve të objektivit tonë?
Në mënyrë të ngjashme, mund të konfiguroni objektivat në monitorë të tjerë dhe të konfiguroni shumështigje (VMware do ta kuptojë këtë dhe madje do të funksionojë, por Hyper-V jo, pasi kërkon bllokime SCSI). Meqenëse klienti Ceph në kernel nuk përdor ruajtjen në memorje, kjo është plotësisht e realizueshme. Një tjetër mundësi është të krijoni një burim klasteri nga tre komponentë - një i dedikuar adresat IP target dhe shërbimet rbdmap dhe scsi-target, dhe menaxhojnë këtë burim përmes mjeteve të grupimit (kush tha pacemaker?)
Në vend të një pasuesi
Siç është e qartë, ky artikull është pak shaka - por në të u përpoqa të shqyrtoj "shpejt dhe me shembuj" disa tema mjaft të njohura në të njëjtën kohë - objektivi iSCSI, i cili mund të mos eksportojë domosdoshmërisht imazhe Ceph - por për shembull, eksportoni vëllime LVM, bazat e punës me një iniciator iSCSI (si të skanoni një objektiv, si të lidheni me një objektiv, shkëputeni, fshini një hyrje të synuar nga baza e të dhënave), duke shkruar njësinë tuaj për systemd dhe disa të tjera
Shpresoj që edhe nëse nuk e përsërisni të gjithë këtë eksperiment të plotë, të paktën diçka nga ky artikull do të jetë e dobishme për ju.
Burimi: www.habr.com
