Ceph trwy iSCSI - neu sgïo wrth sefyll mewn hamog

A oes yna rai yn ein plith (tsefovodov) nad ydyn nhw'n hoffi “eithaf proffesiynol”?

Mae'n annhebygol - fel arall ni fyddem yn cwympo o gwmpas gyda'r cynnyrch hynod ddiddorol a doniol hwn.

Mae llawer o'r rhai a fu'n ymwneud â gweithrediad Ceph wedi dod ar draws un nad oedd yn aml iawn (neu hyd yn oed yn anaml iawn) ond weithiau yn achos galw - cysylltu Ceph trwy iSCSI neu FC. Am beth? Wel, er enghraifft, cyflwynwch ddelwedd o Ceph i weinydd Windows neu Solaris nad yw eto wedi'i rhithwiroli am ryw reswm. Neu un rhithwir, ond gan ddefnyddio hypervisor na all wneud Ceph - ac, fel y gwyddom, mae yna ddigon ohonynt. Er enghraifft? Wel, er enghraifft, HyperV neu ESXi, a ddefnyddir yn weithredol. Ac os cyfyd y dasg o weini delwedd o Ceph i beiriant gwadd, mae hyn yn troi yn dasg gyffrous iawn.

Felly, o ystyried:

  1. clwstwr Ceph sydd eisoes yn rhedeg
  2. delwedd sydd eisoes yn bodoli y mae'n rhaid ei chyflwyno trwy iSCSI
  3. Enw pwll mypwl, enw delwedd mydelwedd

Dechrau?

Yn gyntaf oll, pan fyddwn yn siarad am FC neu iSCSI, mae gennym endidau fel cychwynnwr a tharged. Mae targed mewn gwirionedd yn weinydd, cychwynnwr yn gleient. Ein tasg ni yw cyflwyno delwedd Ceph i'r cychwynnwr heb fawr o ymdrech. Mae hyn yn golygu bod yn rhaid i ni ehangu'r targed. Ond ble, ar ba gyfrifiadur?

Yn ffodus, mewn clwstwr Ceph mae gennym o leiaf un gydran y mae ei chyfeiriad IP yn sefydlog ac y mae un o gydrannau pwysicaf Ceph wedi'i ffurfweddu arni, a'r gydran honno yw'r monitor. Yn unol â hynny, rydym yn gosod targed iSCSI ar y monitor (a chychwynnwr ar yr un pryd, o leiaf ar gyfer profion). Fe wnes i hyn ar CentOS, ond mae'r ateb hefyd yn addas ar gyfer unrhyw ddosbarthiad arall - does ond angen i chi osod y pecynnau yn y ffordd sy'n dderbyniol yn eich dosbarthiad.

# yum -y install iscsi-initiator-utils targetcli

Beth yw pwrpas y pecynnau gosod?

  • targedcli - cyfleustodau ar gyfer rheoli'r targed SCSI wedi'i ymgorffori yn y cnewyllyn Linux
  • iscsi-initiator-utils - pecyn gyda chyfleustodau a ddefnyddir i reoli'r cychwynnwr iSCSI wedi'i ymgorffori yn y cnewyllyn Linux

Er mwyn cyflwyno delwedd trwy iSCSI i'r cychwynnwr, mae dau opsiwn ar gyfer datblygu digwyddiadau - defnyddio backend gofod defnyddiwr y targed neu gysylltu'r ddelwedd fel dyfais bloc sy'n weladwy i'r system weithredu a'i hallforio trwy iSCSI. Awn yr ail ffordd - mae'r backend userspace yn dal i fod mewn cyflwr “arbrofol” ac nid yw ychydig yn barod i'w ddefnyddio'n gynhyrchiol. Yn ogystal, mae yna beryglon y gallwch chi siarad llawer amdanynt a dadlau (o arswyd!).

Os ydym yn defnyddio hyd yn oed ddosbarthiad braidd yn sefydlog gyda chylch cynnal hir, yna mae'r cnewyllyn sydd gennym yn fersiwn hynafol, hynafol. Er enghraifft, yn CentOS7 mae'n 3.10.*, yn CentOS8 mae'n 4.19. Ac mae gennym ddiddordeb mewn cnewyllyn o 5.3 o leiaf (neu yn hytrach 5.4) ac yn fwy newydd. Pam? Oherwydd yn ddiofyn mae gan ddelweddau Ceph set o opsiynau wedi'u galluogi nad ydynt yn gydnaws â chnewyllyn hŷn. Mae hyn yn golygu ein bod yn cysylltu ystorfa â chnewyllyn newydd ar gyfer ein dosbarthiad (er enghraifft, ar gyfer CentOS dyma elrepo), gosod y cnewyllyn newydd ac ailgychwyn y system i weithio gyda'r cnewyllyn newydd:

  • Cysylltwch â'r monitor a ddewiswyd ar gyfer yr arbrawf
  • Rydym yn cysylltu ystorfeydd elrepo yn unol â'r cyfarwyddiadau - elrepo.org/tiki/tiki-index.php
  • Gosodwch y cnewyllyn: yum -y —enablerepo=elrepo-kernel gosod cnewyllyn-ml
  • Ailgychwyn y gweinydd gyda'r monitor (mae gennym dri monitor, dde?)

Cysylltu'r ddelwedd fel dyfais bloc

# rbd map mypool/myimage
/dev/rbd0

Y cyfan sydd ar ôl yw ffurfweddu'r targed. Yn yr enghraifft hon, byddaf yn ffurfweddu'r targed yn yr hyn a elwir. modd demo - heb ddilysu, yn weladwy ac yn hygyrch i bawb. Mewn amgylchedd cynhyrchu, mae'n debyg y byddwch am ffurfweddu dilysu - ond mae hynny ychydig y tu allan i'r cwmpas ar gyfer ymarfer dim ond-am-hwyl heddiw.

Creu backend o'r enw disk1 sy'n gysylltiedig â'r ffeil /dev/rbd/mypool/myimage. Mae'r ffeil benodedig yn ddolen symbolaidd a grëwyd yn awtomatig gan yr ellyll udev i /dev/rbd0. Rydym yn defnyddio cyswllt symbolaidd oherwydd gall enw'r ddyfais rbd newid yn dibynnu ar y drefn y mae'r delweddau Ceph wedi'u cysylltu â'r gwesteiwr.

Creu backend:

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

Creu targed iSCSI:

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

Rydym yn cysylltu'r backend fel LUN i'r targed:

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

Gadewch i ni ffurfweddu'r targed ar gyfer modd 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

Arbedwch y ffurfweddiad:

# targetcli saveconfig

Gwirio argaeledd y targed:

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

Rydym yn cysylltu'r targed:

# 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.

Os gwnaethoch bopeth yn gywir, bydd disg newydd yn ymddangos ar y gweinydd, sy'n edrych fel dyfais SCSI, ond sydd mewn gwirionedd yn ddelwedd gan Ceph, y gellir ei chyrchu trwy darged iSCSI. Er mwyn osgoi problemau cychwyn, mae'n well tynnu'r ddisg gysylltiedig a'r targed a ganfuwyd o'r cychwynnwr lleol:

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

Y cyfan sy'n weddill yw parhau â'r ffurfweddiad fel bod y ddelwedd wedi'i chysylltu'n awtomatig ac, ar ôl cysylltu, mae'r targed wedi'i haenu. Mae lansio targed yn cynnwys dau gam - cysylltu'r RBD a lansio'r targed mewn gwirionedd.

Yn gyntaf, gadewch i ni ffurfweddu cysylltiad awtomatig delweddau RBD i'r gwesteiwr. Gwneir hyn trwy ychwanegu'r llinellau canlynol at y ffeil /etc/ceph/rbdmap:

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

Mae adfer y cyfluniad targed ychydig yn fwy cymhleth - mae angen i ni ysgrifennu uned ar gyfer systemd a fydd yn adfer y ffurfweddiad:

# cat /usr/lib/systemd/system/scsi-target.service
[Unit] Description=Start 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

Y prawf terfynol yw ailgychwyn ein monitor eto (mae bellach yn darged iSCSI). Dylid nodi pe na baem wedi clirio cronfa ddata'r cychwynnwr gyda'r gorchymyn iscsiadm -n darganfodydb -o dileu ... fe allech chi gael gweinydd nad yw'n llwytho neu sy'n cymryd amser hir i'w lwytho.

Beth sydd ar ôl?

Ffurfweddwch y cychwynnwr ar y gweinydd lle rydyn ni am anfon y targed.

Sut i sicrhau goddefgarwch bai ein targed?

Yn yr un modd, gallwch chi ffurfweddu targedau ar fonitorau eraill a sefydlu multipath (bydd vmware yn deall hyn a hyd yn oed yn gweithio, ni fydd Hyper-V yn deall - mae angen cloeon SCSI). Gan nad yw'r cleient Ceph o'r cnewyllyn yn defnyddio caching, mae hyn yn eithaf ymarferol. Neu opsiwn arall yw creu adnodd clwstwr o dair cydran - cyfeiriad IP targed penodol a gwasanaethau rbdmap a scsi-targed, a rheoli'r adnodd hwn trwy offer clystyru (pwy ddywedodd rheolydd calon?)

Yn hytrach na afterword

Fel sy’n amlwg, mae’r erthygl hon yn dipyn o jôc – ond ynddi ceisiais “yn gyflym a chydag enghreifftiau” ystyried sawl pwnc gweddol boblogaidd ar yr un pryd – targed iSCSI, sydd efallai ddim o reidrwydd yn allforio delweddau Ceph – ond er enghraifft, allforio cyfrolau LVM, hanfodion gweithio gyda chychwynnwr iSCSI (sut i sganio targed, sut i gysylltu â tharged, datgysylltu, dileu cofnod targed o'r gronfa ddata), ysgrifennu eich uned eich hun ar gyfer systemd a rhai eraill

Gobeithio, hyd yn oed os na fyddwch chi'n ailadrodd yr arbrawf cyfan hwn yn llawn, bydd o leiaf rhywbeth o'r erthygl hon yn ddefnyddiol i chi.

Ffynhonnell: hab.com

Ychwanegu sylw