iSCSI හරහා Ceph - හෝ කඩුල්ලක සිටගෙන ස්කීං

"වෘත්තීය අන්තයට" අකමැති අය (tsefovodov) අප අතර සිටිනවාද?

එය කළ නොහැක්කකි - එසේ නොමැතිනම් අපි මෙම අතිශයින්ම සිත්ගන්නාසුළු හා හාස්‍යජනක නිෂ්පාදනයක් සමඟ නොගැලපේ.

Ceph මෙහෙයුමට සම්බන්ධ වූ බොහෝ අය නිතර නිතර (හෝ ඒ වෙනුවට ඉතා කලාතුරකින්) නමුත් සමහර විට ඉල්ලුමේ ඇති එකක් හමු වී ඇත - iSCSI හෝ FC හරහා Ceph සම්බන්ධ කිරීම. කුමක් සඳහා ද? හොඳයි, උදාහරණයක් ලෙස, කිසියම් හේතුවක් නිසා තවමත් අථත්‍යකරණය කර නොමැති Windows හෝ Solaris සේවාදායකයකට Ceph වෙතින් රූපයක් ඉදිරිපත් කරන්න. නැතහොත් අථත්‍යකරණය කළ එකක්, නමුත් Ceph කළ නොහැකි හයිපර්වයිසර් භාවිතා කිරීම - සහ, අප දන්නා පරිදි, ඒවා ඕනෑ තරම් තිබේ. උදාහරණ වශයෙන්? හොඳයි, උදාහරණයක් ලෙස, ක්රියාකාරීව භාවිතා කරන HyperV හෝ ESXi. Ceph වෙතින් ආගන්තුක යන්ත්‍රයකට රූපයක් සේවය කිරීමේ කාර්යය පැනනගින්නේ නම්, මෙය ඉතා ආකර්ෂණීය කාර්යයක් බවට පත්වේ.

එබැවින්, ලබා දී ඇත:

  1. දැනටමත් ක්‍රියාත්මක Ceph පොකුරක්
  2. iSCSI හරහා සේවය කළ යුතු දැනටමත් පවතින රූපයකි
  3. තටාකයේ නම mypool, රූපයේ නම මගේ රූපය

ආරම්භය?

පළමුවෙන්ම, අපි FC හෝ iSCSI ගැන කතා කරන විට, අපට ආරම්භක සහ ඉලක්කය වැනි ආයතන තිබේ. ඉලක්කය සැබවින්ම සේවාදායකයකි, ආරම්භකයා යනු සේවාදායකයෙකි. අපගේ කාර්යය වන්නේ Ceph රූපය අවම උත්සාහයකින් ආරම්භකයාට ඉදිරිපත් කිරීමයි. මෙයින් අදහස් කරන්නේ අපි ඉලක්කය පුළුල් කළ යුතු බවයි. නමුත් කොහේද, කුමන පරිගණකයේද?

වාසනාවකට මෙන්, Ceph පොකුරක් තුළ අපට අවම වශයෙන් එක් සංරචකයක් හෝ එහි IP ලිපිනය සවි කර ඇති අතර Ceph හි වඩාත්ම වැදගත් අංගයන්ගෙන් එකක් වින්‍යාස කර ඇති අතර එම සංරචකය මොනිටරය වේ. ඒ අනුව, අපි මොනිටරය මත iSCSI ඉලක්කයක් ස්ථාපනය කරමු (සහ ඒ සමඟම ආරම්භකයක්, අවම වශයෙන් පරීක්ෂණ සඳහා). මම මෙය කළේ CentOS මත, නමුත් විසඳුම වෙනත් ඕනෑම බෙදාහැරීමක් සඳහා සුදුසු වේ - ඔබට අවශ්‍ය වන්නේ ඔබේ බෙදා හැරීමේදී පිළිගත හැකි ආකාරයට පැකේජ ස්ථාපනය කිරීමයි.

# yum -y install iscsi-initiator-utils targetcli

ස්ථාපිත පැකේජවල අරමුණ කුමක්ද?

  • targetcli — Linux කර්නලය තුළ ගොඩනගා ඇති SCSI ඉලක්කය කළමනාකරණය කිරීම සඳහා උපයෝගීතාවයකි
  • iscsi- initialor-utils — Linux කර්නලය තුළ ගොඩනගා ඇති iSCSI ආරම්භකය කළමනාකරණය කිරීමට භාවිතා කරන උපයෝගිතා සහිත පැකේජයක්

ආරම්භකයට 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 ස්ථාපනය kernel-ml
  • මොනිටරය සමඟ සේවාදායකය නැවත ආරම්භ කරන්න (අපට මොනිටර තුනක් තිබේ, හරිද?)

බ්ලොක් උපාංගයක් ලෙස රූපය සම්බන්ධ කිරීම

# rbd map mypool/myimage
/dev/rbd0

ඉතිරිව ඇත්තේ ඉලක්කය සැකසීමයි. මෙම උදාහරණයේදී, මම ඊනියා ඉලක්කය වින්‍යාස කරමි. demo මාදිලිය - සත්‍යාපනය නොමැතිව, දෘශ්‍යමාන සහ සෑම කෙනෙකුටම ප්‍රවේශ විය හැකිය. නිෂ්පාදන පරිසරයක් තුළ, ඔබට සත්‍යාපනය වින්‍යාස කිරීමට අවශ්‍ය වනු ඇත - නමුත් එය අද විනෝදය සඳහා වූ ව්‍යායාමය සඳහා තරමක් දුරට ඉඩ ඇත.

/dev/rbd/mypool/myimage ගොනුව හා සම්බන්ධ disk1 නමින් පසුබිමක් සාදන්න. නිශ්චිත ගොනුව udev ඩීමන් විසින් /dev/rbd0 වෙත ස්වයංක්‍රීයව සාදනු ලබන සංකේතාත්මක සබැඳියකි. Ceph රූප ධාරකයට සම්බන්ධ කර ඇති අනුපිළිවෙල අනුව rbd උපාංගයේ නම වෙනස් විය හැකි නිසා අපි සංකේතාත්මක සබැඳියක් භාවිතා කරමු.

පසුබිමක් සාදන්න:

# 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

අපි 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

වින්‍යාසය සුරකින්න:

# 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 delete ... ඔබට පූරණය නොවන හෝ පූරණය වීමට බොහෝ කාලයක් ගතවන සේවාදායකයක් සමඟ අවසන් විය හැක.

ඉතිරිව ඇත්තේ කුමක්ද?

අපට ඉලක්කය යැවීමට අවශ්‍ය සේවාදායකයේ ආරම්භකය වින්‍යාස කරන්න.

අපගේ ඉලක්කයේ වැරදි ඉවසීම සහතික කරන්නේ කෙසේද?

ඔබට වෙනත් මොනිටරවල ඉලක්ක වින්‍යාසගත කර බහුපථ සකස් කළ හැකිය (vmware මෙය තේරුම් ගෙන ක්‍රියා කරයි, Hyper-V තේරුම් නොගනී - එයට SCSI අගුලු අවශ්‍ය වේ). කර්නලයේ Ceph සේවාලාභියා හැඹිලි භාවිතා නොකරන බැවින්, මෙය තරමක් ක්‍රියා කළ හැකි ය. නැතහොත් තවත් විකල්පයක් වන්නේ කොටස් තුනකින් යුත් පොකුරු සම්පතක් නිර්මාණය කිරීමයි - කැපවූ ඉලක්කගත IP ලිපිනයක් සහ rbdmap සහ scsi-ඉලක්ක සේවා, සහ මෙම සම්පත පොකුරු මෙවලම් හරහා කළමනාකරණය කිරීම (පේස්මේකර් කීවේ කවුද?)

එපිලොග් වෙනුවට

පැහැදිලිව පෙනෙන පරිදි, මෙම ලිපිය තරමක් විහිළුවකි - නමුත් එහි මම “ඉක්මන් සහ උදාහරණ සමඟ” එකවර තරමක් ජනප්‍රිය මාතෘකා කිහිපයක් සලකා බැලීමට උත්සාහ කළෙමි - iSCSI ඉලක්කය, එය අනිවාර්යයෙන්ම Ceph පින්තූර අපනයනය නොකළ හැකිය - නමුත් උදාහරණයක් ලෙස, LVM වෙළුම් අපනයනය කරන්න, iSCSI ආරම්භකයක් සමඟ වැඩ කිරීමේ මූලික කරුණු (ඉලක්කයක් පරිලෝකනය කරන්නේ කෙසේද, ඉලක්කයකට සම්බන්ධ වන්නේ කෙසේද, විසන්ධි කරන්නේ කෙසේද, දත්ත සමුදායෙන් ඉලක්ක ඇතුළත් කිරීමක් මකා දමන්න), systemd සඳහා ඔබේම ඒකකයක් ලිවීම සහ තවත් සමහරක්

ඔබ මෙම සම්පූර්ණ අත්හදා බැලීම සම්පූර්ණයෙන් නැවත නොකළත්, අවම වශයෙන් මෙම ලිපියෙන් යමක් ඔබට ප්‍රයෝජනවත් වනු ඇතැයි මම බලාපොරොත්තු වෙමි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න