Ceph тавассути iSCSI - ё лижаронӣ ҳангоми истодан дар гамак

Оё дар байни мо (цефоводов) касоне хастанд, ки «ифроти касбй»-ро дуст намедоранд?

Ин аз эҳтимол дур нест - вагарна мо бо ин маҳсулоти бениҳоят ҷолиб ва хандовар саргарм намешудем.

Бисёре аз онҳое, ки дар амалиёти Ceph иштирок доштанд, бо як на он қадар зуд-зуд (ё ҳатто хеле кам), вале баъзан дар ҳолати талабот - пайваст кардани Ceph тавассути iSCSI ё FC дучор меоянд. Барои чӣ? Хуб, масалан, тасвиреро аз Ceph ба сервери Windows ё Solaris пешниҳод кунед, ки бо ягон сабаб то ҳол виртуализатсия нашудааст. Ё як виртуалӣ, аммо бо истифода аз гипервизоре, ки наметавонад Ceph -ро иҷро кунад - ва тавре ки мо медонем, бисёре аз онҳо ҳастанд. Барои намуна? Хуб, масалан, HyperV ё ESXi, ки фаъолона истифода мешаванд. Ва агар вазифаи хидматрасонии тасвир аз Ceph ба мошини меҳмон ба миён ояд, ин ба як вазифаи хеле ҳаяҷоновар табдил меёбад.

Пас, дода мешавад:

  1. кластери Ceph аллакай фаъол аст
  2. тасвири аллакай мавҷудбуда, ки бояд тавассути iSCSI хизмат расонида шавад
  3. Номи ҳавз mypool, номи тасвир тасвири ман

Оғоз?

Пеш аз ҳама, вақте ки мо дар бораи FC ё iSCSI сухан меронем, мо чунин субъектҳо дорем, ба монанди ташаббускор ва ҳадаф. Ҳадаф воқеан сервер аст, ташаббускор мизоҷ аст. Вазифаи мо аз он иборат аст, ки симои Цефро бо кушиши кам ба ташаббускор супорем. Ин маънои онро дорад, ки мо бояд ҳадафро васеъ кунем. Аммо дар куҷо, дар кадом компютер?

Хушбахтона, дар кластери Ceph мо ҳадди аққал як ҷузъ дорем, ки суроғаи IP-и он собит аст ва дар он яке аз муҳимтарин ҷузъҳои Ceph танзим шудааст ва он ҷузъ монитор аст. Мувофиқи он, мо ҳадафи iSCSI-ро дар монитор насб мекунем (ва дар як вақт ташаббускор, ҳадди аққал барои санҷишҳо). Ман инро дар CentOS анҷом додам, аммо ҳалли он барои ҳама гуна тақсимоти дигар низ мувофиқ аст - шумо танҳо бояд бастаҳоро тавре насб кунед, ки дар тақсимоти шумо қобили қабул аст.

# yum -y install iscsi-initiator-utils targetcli

Мақсади бастаҳои насбшуда чист?

  • targetcli — утилита барои идоракунии ҳадафи SCSI, ки дар ядрои Linux сохта шудааст
  • iscsi-initiator-utils — баста бо утилитҳо барои идоракунии ташаббускори iSCSI, ки дар ядрои Linux сохта шудааст, истифода мешавад

Барои фиристодани тасвир тавассути iSCSI ба ташаббускор, ду вариант барои таҳияи рӯйдодҳо вуҷуд дорад - истифода аз паҳлӯи фазои корбарӣ ё тасвирро ҳамчун дастгоҳи блоки ба системаи оператсионӣ намоён пайваст кунед ва онро тавассути iSCSI содир кунед. Мо бо роҳи дуюм меравем - пуштибонии фазои корбарон ҳанӯз дар ҳолати "таҷрибавӣ" қарор дорад ва каме барои истифодаи самаранок омода нест. Илова бар ин, бо он домҳо мавҷуданд, ки шумо метавонед дар бораи онҳо бисёр сӯҳбат кунед ва (эй даҳшат!) баҳс кунед.

Агар мо ҳатто як тақсимоти то ҳадде устуворро бо давраи дастгирии тӯлонӣ истифода барем, пас ядрое, ки мо дорем, як нусхаи қадимӣ ва қадимист. Масалан, дар CentOS7 он 3.10.*, дар CentOS8 4.19 аст. Ва мо ба ядрои ҳадди аққал 5.3 (ё дурусттараш 5.4) ва навтар таваҷҷӯҳ дорем. Чаро? Зеро аз рӯи нобаёнӣ тасвирҳои Ceph маҷмӯи имконоти фаъол доранд, ки бо ядроҳои кӯҳна мувофиқ нестанд. Ин маънои онро дорад, ки мо як репозиторийро бо ядрои нав барои тақсимоти худ пайваст мекунем (масалан, барои CentOS ин elrepo аст), ядрои навро насб кунед ва системаро барои кор бо ядрои нав аз нав оғоз кунед:

  • Ба мониторе, ки барои озмоиш интихоб шудааст, пайваст шавед
  • Мо анбори elrepo мувофиқи дастурҳо пайваст мекунем - elrepo.org/tiki/tiki-index.php
  • Ядро насб кунед: yum -y —enablerepo=elrepo-ядро насб кунед kernel-ml
  • Серверро бо монитор бозоғоз намоед (мо се монитор дорем, дуруст?)

Пайваст кардани тасвир ҳамчун дастгоҳи блок

# rbd map mypool/myimage
/dev/rbd0

Ҳама чизи боқимонда танзим кардани ҳадаф аст. Дар ин мисол, ман ҳадафро дар ба ном танзим мекунам. Ҳолати намоишӣ - бе аутентификатсия, намоён ва барои ҳама дастрас. Дар муҳити истеҳсолӣ, шумо эҳтимол мехоҳед аутентификатсияро танзим кунед - аммо ин барои машқи имрӯзаи танҳо барои фароғат каме берун аст.

Эҷоди пуштибонии бо номи disk1, ки бо файли /dev/rbd/mypool/myimage алоқаманд аст. Файли муайяншуда истиноди рамзӣ мебошад, ки аз ҷониби демони udev ба /dev/rbd0 ба таври худкор эҷод шудааст. Мо истиноди рамзӣ истифода мебарем, зеро номи дастгоҳи rbd метавонад вобаста ба тартибе, ки тасвирҳои Ceph ба мизбон пайваст мешаванд, тағир ёбад.

Эҷоди пуштибони:

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

Ҳадафи iSCSI эҷод кунед:

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

Мо пуштибониро ҳамчун LUN ба ҳадаф пайваст мекунем:

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

Биёед ҳадафро барои ҳолати намоишӣ танзим кунем:

# 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

Конфигуратсияро захира кунед:

# targetcli saveconfig

Санҷиши мавҷудияти ҳадаф:

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

Мо ҳадафро пайваст мекунем:

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

Агар шумо ҳама чизро дуруст анҷом диҳед, дар сервер диски нав пайдо мешавад, ки ба дастгоҳи SCSI монанд аст, аммо дар асл тасвири Ceph аст, ки тавассути ҳадафи iSCSI дастрас мешавад. Барои пешгирӣ кардани мушкилоти пурборкунӣ, беҳтар аст, ки диски пайвастшуда ва ҳадафи ошкоршударо аз ташаббускори маҳаллӣ хориҷ кунед:

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

Танҳо он боқӣ мемонад, ки конфигуратсияро нигоҳ доред, то тасвир ба таври худкор пайваст шавад ва пас аз пайвастшавӣ ҳадаф табақабандӣ шавад. Оғози ҳадаф аз ду марҳила иборат аст - пайваст кардани RBD ва воқеан оғоз кардани ҳадаф.

Аввалан, биёед пайвасти автоматии тасвирҳои RBD-ро ба мизбон танзим кунем. Ин тавассути илова кардани сатрҳои зерин ба файли /etc/ceph/rbdmap анҷом дода мешавад:

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

Барқарор кардани конфигуратсияи мақсаднок каме мушкилтар аст - ба мо лозим аст, ки барои systemd воҳид нависем, ки конфигуратсияро барқарор кунад:

# 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

Санҷиши ниҳоӣ ин аст, ки мониторамонро аз нав бор кунед (он ҳоло ҳадафи iSCSI аст). Бояд гуфт, ки агар мо базаи ташаббускорро бо фармон тоза намекардем iscsiadm -n discoverydb -o нест кунед ... шумо метавонед бо сервере пайдо кунед, ки бор намекунад ё барои бор кардан вақти зиёд мегирад.

Чӣ мондааст?

Дар сервере, ки мо мехоҳем ҳадафро фиристем, ташаббускорро танзим кунед.

Чӣ тавр таҳаммулпазирии хатогиҳои ҳадафи моро таъмин кардан мумкин аст?

Шумо инчунин метавонед ҳадафҳоро дар дигар мониторҳо танзим кунед ва чанд роҳро ташкил кунед (vmware инро мефаҳмад ва ҳатто кор мекунад, Hyper-V намефаҳмад - он қуфлҳои SCSI-ро талаб мекунад). Азбаски муштарии Ceph аз ядро ​​кэшро истифода намебарад, ин хеле қобили кор аст. Ё варианти дигар ин эҷоди як манбаи кластер аз се ҷузъ аст - суроғаи таъиншудаи IP ва хидматҳои rbdmap ва scsi-target ва идора кардани ин манбаъ тавассути абзорҳои кластерӣ (ки гуфт: кардиостимулятор?)

Ба ҷои он ки баъдтар

Тавре ки равшан аст, ин мақола як каме шӯхӣ аст - аммо дар он ман кӯшиш кардам, ки "зуд ва бо мисолҳо" дар як вақт якчанд мавзӯъҳои хеле маъмулро баррасӣ кунам - ҳадафи iSCSI, ки ҳатман тасвирҳои Ceph-ро содир намекунанд - аммо масалан, содироти ҳаҷми LVM, асосҳои кор бо ташаббускори iSCSI (чӣ тавр скан кардани ҳадаф, чӣ гуна ба ҳадаф пайваст шудан, ҷудо кардан, нест кардани вуруди ҳадаф аз пойгоҳи додаҳо), навиштани воҳиди худ барои systemd ва баъзе дигарон

Умедворам, ки ҳатто агар шумо ин озмоишро пурра такрор накунед, ҳадди аққал чизе аз ин мақола барои шумо муфид хоҳад буд.

Манбаъ: will.com

Илова Эзоҳ