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:
- një klaster Ceph që funksionon
- një imazh ekzistues që duhet të ofrohet përmes iSCSI
- 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 â
- 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
