Ceph í gegnum iSCSI - eða á skíði meðan þú stendur í hengirúmi

Eru þeir á meðal okkar (tsefovodov) sem líkar ekki við „faglega öfgar“?

Það er ólíklegt - annars værum við ekki að veltast um með þessa einstaklega áhugaverðu og fyndnu vöru.

Многие из тех, кто занимались эксплуатацией Ceph, встречали один не слишком частый (а скорее даже очень нечастый) но иногда востребованный кейс — подключить Ceph по iSCSI или FC. Зачем? Ну, например, подать образ с Ceph на почему-то еще не виртуализированный сервер Windows или Solaris. Или на виртуализированный, но посредством гипервизора, который не умеет Ceph — а их, как мы знаем, хватает. Например? Ну, например, HyperV или ESXi, которые активно используются. И если возникает задача подать образ с Ceph в гостевую машину, это превращается в весьма увлекательную задачу.

Svo, gefið:

  1. Ceph þyrping sem þegar er í gangi
  2. mynd sem þegar er til og verður að þjóna í gegnum iSCSI
  3. Nafn sundlaugar mypool, nafn mynd myndin mín

Byrja?

Í fyrsta lagi, þegar við tölum um FC eða iSCSI, höfum við slíka aðila sem frumkvöðla og markmið. Target er í raun netþjónn, frumkvöðull er viðskiptavinur. Verkefni okkar er að senda Ceph myndina til frumkvöðuls með lágmarks fyrirhöfn. Þetta þýðir að við verðum að auka markmiðið. En hvar, á hvaða tölvu?

К счастью, в кластере Ceph у нас есть как минимум один компонент, чей IP-адрес фиксирован и на котором сконфигурирован один из самых важных компонентов Ceph, и этот компонент — монитор. Соответственно, на мониторе устанавливаем iSCSI target (и initator заодно, как минимум для тестов). Я делал это на CentOS, но для любого другого дистрибутива решение также подойдет — достаточно просто ставить пакеты тем способом который приемлем в вашем дистрибутиве.

# yum -y install iscsi-initiator-utils targetcli

Hver er tilgangurinn með uppsettu pakkanum?

  • targetcli — утилита управления встроенным в ядро Linux SCSI-таргетом
  • ISCSI-upphafs-UTILS — пакет с утилитами используемыми для управления опять же встроенным в ядро Linux iSCSI initiator’ом

Til að senda mynd í gegnum iSCSI til frumkvöðuls, eru tveir möguleikar fyrir þróun atburða - notaðu notendasvæði bakenda marksins eða tengdu myndina sem blokkartæki sem er sýnilegt stýrikerfinu og fluttu það út í gegnum iSCSI. Við munum fara aðra leið - bakendi notendarýmisins er enn í „tilrauna“ ástandi og er örlítið ekki tilbúinn til afkastamikillar notkunar. Auk þess eru gildrur við það, sem þú getur talað mikið um og (ó hryllingur!) deilt um.

Если мы используем хоть сколь-нибудь стабильный дистрибутив с дооолгим циклом поддержки, то ядро у нас какой-нибудь древней-древней версии. Например в CentOS7 это 3.10.*, в CentOS8 это 4.19. А нам интересно ядро как минимум 5.3 (а скорее 5.4) и более новое. Почему? Потому, что по умолчанию образы в Ceph имеют подключенный набор опций, который не совместим со старыми ядрами. А значит, мы подключаем репозиторий с новым ядром для нашего дистрибутива (например, для CentOS это elrepo), устанавливаем новое ядро и перезагружаем систему чтобы работать с новым ядром:

  • Tengdu við skjáinn sem valinn var fyrir tilraunina
  • Við tengjum elrepo geymslur samkvæmt leiðbeiningunum - elrepo.org/tiki/tiki-index.php
  • Settu upp kjarnann: yum -y —enablerepo=elrepo-kjarna settu upp kernel-ml
  • Endurræstu netþjóninn með skjánum (við erum með þrjá skjái, ekki satt?)

Að tengja myndina sem blokkartæki

# rbd map mypool/myimage
/dev/rbd0

Allt sem er eftir er að stilla markmiðið. Í þessu dæmi mun ég stilla markmiðið í svokölluðu. kynningarhamur - án auðkenningar, sýnilegur og aðgengilegur öllum. Í framleiðsluumhverfi muntu líklega vilja stilla auðkenningu - en það er dálítið utan sviðs fyrir æfingu í dag bara til gamans.

Búðu til bakenda sem heitir disk1 sem tengist skránni /dev/rbd/mypool/myimage. Tilgreind skrá er táknrænn hlekkur sem er sjálfkrafa búinn til af udev púknum á /dev/rbd0. Við notum táknrænan hlekk vegna þess að nafn rbd tækisins getur breyst eftir því í hvaða röð Ceph myndirnar eru tengdar við hýsilinn.

Búðu til bakenda:

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

Búðu til iSCSI markmið:

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

Við tengjum bakendann sem LUN við markmiðið:

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

Við skulum stilla markmiðið fyrir kynningarham:

# 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

Vistaðu stillingarnar:

# targetcli saveconfig

Athugaðu tilvist skotmarksins:

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

Við tengjum markmiðið:

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

Ef þú gerðir allt rétt birtist nýr diskur á þjóninum sem lítur út eins og SCSI tæki, en er í raun mynd frá Ceph, sem nálgast er í gegnum iSCSI target. Til að koma í veg fyrir ræsingarvandamál er betra að fjarlægja tengda diskinn og greint skotmark frá staðbundnum frumkvöðli:

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

Allt sem er eftir er að halda uppsetningunni áfram þannig að myndin tengist sjálfkrafa og, eftir tengingu, er markmiðið lagskipt. Að ræsa skotmark samanstendur af tveimur skrefum - að tengja RBD og í raun ræsa markið.

Fyrst skulum við stilla sjálfvirka tengingu RBD mynda við gestgjafann. Þetta er gert með því að bæta eftirfarandi línum við /etc/ceph/rbdmap skrána:

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

Það er aðeins flóknara að endurheimta markstillinguna - við þurfum að skrifa einingu fyrir systemd sem mun endurheimta stillingarnar:

# cat /usr/lib/systemd/system/scsi-target.service
[Unit]
Description=Start iSCSI target

Eftir=net-online.target rbdmap.service
Áður = fjarstýring-fs-pre.target
Vilja = net-á-neti.markmið fjarlægur-fs-pre.markmið

[Þjónusta]
Type=oneshot
RemainAfterExit = já
ExecStart=/bin/targetcli restoreconfig

[Setja upp]
WantedBy = multi-user.target

# endurskipulagning kerfisins
# kerfisstýring virkja scsi-target

Lokaprófið er að endurræsa skjáinn okkar aftur (það er nú iSCSI markmið). Það skal tekið fram að ef við hefðum ekki hreinsað gagnagrunn frumkvöðuls með skipuninni iscsiadm -n discoverydb -o eyða ... þú gætir endað með server sem hleður ekki eða tekur langan tíma að hlaðast.

Hvað er eftir?

Stilltu upphafsmanninn á þjóninum sem við viljum senda markið á.

Hvernig á að tryggja bilanaþol markmiðs okkar?

Þú getur á sama hátt stillt markmið á öðrum skjám og sett upp fjölslóð (VMware skilur þetta og virkar jafnvel, en Hyper-V ekki, þar sem það krefst SCSI-lása). Þar sem Ceph-biðlarinn í kjarnanum notar ekki skyndiminni er þetta fullkomlega mögulegt. Annar möguleiki er að búa til klasa úr þremur íhlutum - sérstökum ... IP tölur target og þjónustur rbdmap og scsi-target, og stjórna þessari auðlind með klasaverkfærum (hver sagði gangráð?)

Í staðinn fyrir eftirsögn

Eins og ljóst er er þessi grein smá grín - en í henni reyndi ég að "fljótt og með dæmum" íhuga nokkur nokkuð vinsæl efni á sama tíma - iSCSI target, sem gæti ekki endilega flutt út Ceph myndir - en td. flytja út LVM bindi, grunnatriði að vinna með iSCSI frumkvöðla (hvernig á að skanna skotmark, hvernig á að tengjast markmiði, aftengja, eyða markfærslu úr gagnagrunninum), skrifa eigin einingu fyrir systemd og nokkrar aðrar

Ég vona að jafnvel þótt þú endurtaki ekki alla þessa tilraun að fullu, þá muni að minnsta kosti eitthvað úr þessari grein nýtast þér.

Heimild: www.habr.com

Kauptu áreiðanlega hýsingu fyrir síður með DDoS vernd, VPS VDS netþjónum 🔥 Kauptu áreiðanlega vefhýsingu með DDoS vörn, VPS VDS netþjónum | ProHoster