Ceph tro iSCSI - no sgitheadh ​​​​fhad ‘s a tha e na sheasamh ann an hamag

A bheil an fheadhainn nar measg (tsefovodov) nach eil dèidheil air “fìor proifeasanta”?

Tha e eu-coltach - air neo cha bhiodh sinn a’ dol mun cuairt leis an toradh air leth inntinneach is èibhinn seo.

Tha mòran den fheadhainn a bha an sàs ann an gnìomhachd Ceph air tighinn tarsainn air fear nach robh glè thric (no eadhon gu math tric) ach uaireannan ann an cùis iarrtas - a’ ceangal Ceph tro iSCSI no FC. Airson dè? Uill, mar eisimpleir, cuir a-steach ìomhaigh bho Ceph gu frithealaiche Windows no Solaris nach deach a dhèanamh brìgheil fhathast airson adhbhar air choireigin. No fear brìgheil, ach a’ cleachdadh hypervisor nach urrainn Ceph a dhèanamh - agus, mar a tha fios againn, tha gu leòr dhiubh ann. Mar eisimpleir? Uill, mar eisimpleir, HyperV no ESXi, a tha air a chleachdadh gu gnìomhach. Agus ma dh 'èiricheas an obair a bhith a' frithealadh ìomhaigh bho Ceph gu inneal aoigheachd, bidh seo na obair inntinneach.

Mar sin, air a thoirt seachad:

  1. braisle Ceph a tha a’ ruith mu thràth
  2. ìomhaigh a tha ann mar-thà a dh’ fheumar a fhrithealadh tro iSCSI
  3. Ainm an amar-snàmh mypool, ainm ìomhaigh m' ìomhaigh

Tòisich?

An toiseach, nuair a bhios sinn a’ bruidhinn mu dheidhinn FC no iSCSI, tha leithid de bhuidhnean againn mar neach-tòiseachaidh agus targaid. Is e frithealaiche a th’ ann an targaid gu dearbh, is e neach-tòiseachaidh a th’ ann an neach-tòiseachaidh. Is e an obair againn ìomhaigh Ceph a chuir a-steach don neach-tòiseachaidh gun mòran oidhirp. Tha seo a’ ciallachadh gum feum sinn an targaid a leudachadh. Ach càite, dè an coimpiutair?

Gu fortanach, ann an cruinneachadh Ceph tha co-dhiù aon phàirt againn aig a bheil an seòladh IP stèidhichte agus air a bheil aon de na pàirtean as cudromaiche de Ceph air a rèiteachadh, agus is e am pàirt sin an monitor. Mar sin, bidh sinn a’ stàladh targaid iSCSI air an monitor (agus neach-tòiseachaidh aig an aon àm, co-dhiù airson deuchainnean). Rinn mi seo air CentOS, ach tha am fuasgladh cuideachd freagarrach airson cuairteachadh sam bith eile - cha leig thu leas ach na pacaidean a chuir a-steach san dòigh a tha iomchaidh nad chuairteachadh.

# yum -y install iscsi-initiator-utils targetcli

Dè an adhbhar a tha aig na pacaidean stàlaichte?

  • targaidcli - goireas airson an targaid SCSI a riaghladh a chaidh a thogail a-steach don kernel Linux
  • iscsi-initiator-utils - pasgan le goireasan air an cleachdadh gus an neach-tòiseachaidh iSCSI a riaghladh a chaidh a thogail a-steach don kernel Linux

Gus ìomhaigh a chuir a-steach tro iSCSI chun neach-tòiseachaidh, tha dà roghainn ann airson tachartasan a leasachadh - cleachd backend spacespace an targaid no ceangail an ìomhaigh mar inneal bloca a chithear don t-siostam obrachaidh agus às-mhalairt e tro iSCSI. Thèid sinn an dàrna slighe - tha backend an luchd-cleachdaidh fhathast ann an staid “deuchainneach” agus beagan gun a bhith deiseil airson cleachdadh cinneasach. A bharrachd air an sin, tha duilgheadasan ann, air am faod thu mòran bruidhinn agus (oh uabhas!)

Ma chleachdas sinn eadhon cuairteachadh beagan seasmhach le cearcall taic fada, is e dreach àrsaidh, àrsaidh a th’ anns an kernel a th’ againn. Mar eisimpleir, ann an CentOS7 tha e 3.10.*, ann an CentOS8 tha e 4.19. Agus tha ùidh againn ann an kernel co-dhiù 5.3 (no an àite 5.4) agus nas ùire. Carson? Leis gu bheil seata de roghainnean aig ìomhaighean Ceph gu gnàthach nach eil co-chòrdail ri seann kernels. Tha seo a’ ciallachadh gum bi sinn a’ ceangal stòr-tasgaidh le kernel ùr airson ar cuairteachadh (mar eisimpleir, airson CentOS is e seo elrepo), stàlaich an kernel ùr agus ath-thòisich an siostam gus obrachadh leis an kernel ùr:

  • Ceangail ris an monitor a chaidh a thaghadh airson an deuchainn
  • Bidh sinn a’ ceangal stòran elrepo a rèir an stiùiridh - elrepo.org/tiki/tiki-index.php
  • Stàlaich an kernel: yum -y -enablerepo = elrepo-kernel stàlaich kernel-ml
  • Ath-thòisich am frithealaiche leis an monitor (tha trì sgrùdairean againn, ceart?)

A 'ceangal an ìomhaigh mar inneal bloca

# rbd map mypool/myimage
/dev/rbd0

Chan eil air fhàgail ach an targaid a rèiteachadh. San eisimpleir seo, rèitichidh mi an targaid anns an t-ainm ris an canar. modh demo - gun dearbhadh, follaiseach agus ruigsinneach don h-uile duine. Ann an àrainneachd cinneasachaidh, is dòcha gum bi thu airson dearbhadh a rèiteachadh - ach tha sin beagan taobh a-muigh raon eacarsaich dìreach airson spòrs an-diugh.

Cruthaich backend ainmichte disk1 co-cheangailte ris an fhaidhle / dev/rbd/mypool/myimage. Tha am faidhle ainmichte na cheangal samhlachail a chaidh a chruthachadh gu fèin-ghluasadach leis an daemon udev gu / dev/rbd0. Bidh sinn a’ cleachdadh ceangal samhlachail oir faodaidh ainm an inneal rbd atharrachadh a rèir an òrdugh anns a bheil na dealbhan Ceph ceangailte ris an òstair.

Cruthaich cùl-fhiosrachadh:

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

Cruthaich targaid iSCSI:

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

Bidh sinn a’ ceangal an backend mar LUN ris an targaid:

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

Feuch an rèiteachadh sinn an targaid airson modh 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

Sàbhail an rèiteachadh:

# targetcli saveconfig

A’ dèanamh cinnteach gu bheil an targaid ri fhaighinn:

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

Bidh sinn a 'ceangal an targaid:

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

Ma rinn thu a h-uile càil ceart, nochdaidh diosc ùr air an fhrithealaiche, a tha coltach ri inneal SCSI, ach a tha dha-rìribh na ìomhaigh bho Ceph, a gheibhear thuige tro thargaid iSCSI. Gus duilgheadasan bròg a sheachnadh, tha e nas fheàrr an diosc ceangailte agus an targaid a chaidh a lorg a thoirt air falbh bhon neach-tòiseachaidh ionadail:

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

Chan eil air fhàgail ach an rèiteachadh a leantainn gus am bi an ìomhaigh ceangailte gu fèin-ghluasadach agus, às deidh ceangal, tha an targaid air a shreapadh. Tha cur air bhog targaid air a dhèanamh suas de dhà cheum - a 'ceangal an RBD agus a' cur air bhog an targaid.

An toiseach, leig dhuinn ceangal fèin-ghluasadach ìomhaighean RBD ris an aoigh a rèiteachadh. Tha seo air a dhèanamh le bhith a’ cur na loidhnichean a leanas ris an fhaidhle /etc/ceph/rbdmap:

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

Tha ath-nuadhachadh an rèiteachaidh targaid beagan nas iom-fhillte - feumaidh sinn aonad a sgrìobhadh airson systemd a bheir air ais an rèiteachadh:

# 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

Is e an deuchainn mu dheireadh an monitor againn ath-thòiseachadh a-rithist (tha e a-nis na thargaid iSCSI). Bu chòir a thoirt fa-near mura robh sinn air stòr-dàta an neach-tòiseachaidh a ghlanadh leis an àithne iscsiadm -n discoverydb -o sguab às ... dh'fhaodadh tu crìoch a chur air frithealaiche nach eil a' luchdachadh no a bheir ùine mhòr ri luchdachadh.

Dè tha air fhàgail?

Dèan rèiteachadh air an neach-tòiseachaidh air an fhrithealaiche far a bheil sinn airson an targaid a chuir.

Ciamar a nì sinn cinnteach à fulangas lochdan ar targaid?

Faodaidh tu cuideachd targaidean a rèiteachadh air sgrùdairean eile agus multipath a stèidheachadh (tuigidh vmware seo agus eadhon obraichidh e, cha tuig Hyper-V - feumaidh e glasan SCSI). Leis nach eil an neach-dèiligidh Ceph bhon kernel a’ cleachdadh caching, tha seo gu math obrachail. No is e roghainn eile goireas brabhsair de thrì phàirtean a chruthachadh - seòladh IP targaid sònraichte agus seirbheisean rbdmap agus scsi-target, agus an goireas seo a riaghladh tro innealan cruinneachadh (cò thuirt pacemaker?)

An àite post-dealain

Mar a tha soilleir, tha an artaigil seo beagan fealla-dhà - ach ann an sin dh’ fheuch mi ri “gu sgiobalta agus le eisimpleirean” beachdachadh air grunn chuspairean mòr-chòrdte aig an aon àm - targaid iSCSI, a dh’ fhaodadh nach eil gu riatanach às-mhalairt ìomhaighean Ceph - ach mar eisimpleir, às-mhalairt leabhraichean LVM, bunaitean obrachadh le neach-tòiseachaidh iSCSI (mar a nì thu sganadh air targaid, mar a cheanglas tu ri targaid, dì-cheangail, cuir às do inntrigeadh targaid bhon stòr-dàta), a’ sgrìobhadh an aonad agad fhèin airson systemd agus cuid eile

Tha mi an dòchas, eadhon mura dèan thu an deuchainn slàn seo a-rithist gu h-iomlan, gum bi co-dhiù rudeigin bhon artaigil seo feumail dhut.

Source: www.habr.com

Cuir beachd ann