Ceph በ iSCSI በኩል - ወይም በ hammock ውስጥ ቆሞ ስኪንግ

በእኛ መካከል (ሴፎቮዶቭ) "የሙያ ጽንፍ" የማይወዱ አሉ?

የማይመስል ነገር ነው - ያለበለዚያ በዚህ እጅግ በጣም አስደሳች እና አስቂኝ ምርት መሸነፍ አንችልም።

በሴፍ አሠራር ውስጥ ከተሳተፉት መካከል ብዙዎቹ በጣም ተደጋጋሚ ያልሆነ (ወይም እንዲያውም በጣም አልፎ አልፎ) ነገር ግን አንዳንድ ጊዜ በፍላጎት ጉዳይ ላይ - Cephን በ iSCSI ወይም FC በማገናኘት ላይ ናቸው። ለምንድነው? ደህና፣ ለምሳሌ፣ በሆነ ምክንያት እስካሁን ቨርቹዋል ያልተደረገውን ምስል ከሴፍ ወደ ዊንዶውስ ወይም ሶላሪስ አገልጋይ ያቅርቡ። ወይም ምናባዊ የሆነ፣ ግን ሴፍ ማድረግ የማይችል ሃይፐርቫይዘር በመጠቀም - እና፣ እንደምናውቀው፣ ብዙ ናቸው። ለምሳሌ? ደህና, ለምሳሌ, HyperV ወይም ESXi, በንቃት ጥቅም ላይ የሚውሉ. እና ምስልን ከሴፍ ወደ እንግዳ ማሽን የማገልገል ስራ ከተነሳ, ይህ ወደ በጣም አስደሳች ስራ ይለወጣል.

ስለዚህ, የተሰጠው:

  1. ቀድሞውንም እየሄደ ያለ የሴፍ ክላስተር
  2. በiSCSI በኩል መቅረብ ያለበት ቀድሞ የነበረ ምስል
  3. የመዋኛ ስም mypool፣ የምስል ስም ምስል

ይጀመር?

በመጀመሪያ፣ ስለ FC ወይም iSCSI ስንናገር፣ እንደ ጀማሪ እና ኢላማ ያሉ አካላት አሉን። ዒላማ በእውነቱ አገልጋይ ነው ፣አስጀማሪው ደንበኛ ነው። የእኛ ተግባር በትንሹ ጥረት የሴፍ ምስልን ለአስጀማሪው ማቅረብ ነው። ይህ ማለት ኢላማውን ማስፋፋት አለብን ማለት ነው። ግን የት ፣ በየትኛው ኮምፒተር ላይ?

እንደ እድል ሆኖ፣ በሴፍ ክላስተር ውስጥ ቢያንስ አንድ የአይ ፒ አድራሻው የተስተካከለ እና የትኛው የሴፍ አስፈላጊ አካል የተዋቀረ አካል አለን እና ያ አካል ተቆጣጣሪው ነው። በዚህ መሠረት የiSCSI ኢላማን በተቆጣጣሪው ላይ እንጭነዋለን (እና በተመሳሳይ ጊዜ አስጀማሪ ቢያንስ ለፈተናዎች)። ይህንን በ CentOS ላይ አድርጌያለሁ ፣ ግን መፍትሄው ለሌላ ለማንኛውም ስርጭት ተስማሚ ነው - ጥቅሎችን በስርጭትዎ ውስጥ ተቀባይነት ባለው መንገድ መጫን ያስፈልግዎታል።

# yum -y install iscsi-initiator-utils targetcli

የተጫኑ ጥቅሎች ዓላማ ምንድን ነው?

  • targetcli - በሊኑክስ ከርነል ውስጥ የተሰራውን የ SCSI ኢላማ ለማስተዳደር መገልገያ
  • iscsi-አስጀማሪ-መገልገያዎች - በሊኑክስ ከርነል ውስጥ የተሰራውን የiSCSI አስጀማሪን ለማስተዳደር የሚያገለግሉ መገልገያዎች ያሉት ጥቅል

ምስልን በአይኤስሲሲ በኩል ለአስጀማሪው ለማስረከብ ለክስተቶች እድገት ሁለት አማራጮች አሉ - የዒላማውን የተጠቃሚ ቦታ ጀርባ ይጠቀሙ ወይም ምስሉን በስርዓተ ክወናው ላይ እንደሚታየው የማገጃ መሳሪያ ያገናኙ እና በ iSCSI በኩል ይላኩት። በሁለተኛው መንገድ እንሄዳለን - የተጠቃሚ ቦታ ጀርባ አሁንም በ"ሙከራ" ሁኔታ ላይ ነው እና በትንሹ ለምርታማ አገልግሎት ዝግጁ አይደለም። በተጨማሪም, ከእሱ ጋር ብዙ መነጋገር የሚችሉበት እና (ኦው አስፈሪ!) የሚከራከሩባቸው ወጥመዶች አሉ.

በረዥም የድጋፍ ዑደት በተወሰነ ደረጃ የተረጋጋ ስርጭት እንኳን ከተጠቀምን ፣እኛ ያለን አስኳል አንዳንድ ጥንታዊ ፣ ጥንታዊ ስሪት ነው። ለምሳሌ፣ በCentOS7 ውስጥ 3.10 ነው።*፣ በ CentOS8 ውስጥ 4.19 ነው። እና ቢያንስ 5.3 (ወይም ይልቁንስ 5.4) እና አዲስ የሆነ አስኳል ላይ ፍላጎት አለን። ለምን? ምክንያቱም በነባሪ የሴፍ ምስሎች ከአሮጌ ከርነሎች ጋር የማይጣጣሙ የአማራጮች ስብስብ የነቁ ናቸው። ይህ ማለት ማከማቻውን ከአዲስ ከርነል ጋር እናገናኘዋለን (ለምሳሌ ለ CentOS ይህ elrepo ነው)፣ አዲሱን ከርነል ጫን እና ስርዓቱን ከአዲሱ ከርነል ጋር ለመስራት።

  • ለሙከራ ከተመረጠው ማሳያ ጋር ይገናኙ
  • በመመሪያው መሠረት የ elrepo ማከማቻዎችን እናገናኛለን - elrepo.org/tiki/tiki-index.php
  • ከርነል ጫን፡ yum -y —enablerepo=elrepo-kernel install kernel-ml
  • አገልጋዩን በሞኒተሪው ዳግም አስነሳው (ሶስት ማሳያዎች አሉን አይደል?)

ምስሉን እንደ ማገጃ መሳሪያ በማገናኘት ላይ

# rbd map mypool/myimage
/dev/rbd0

የሚቀረው ኢላማውን ማዋቀር ነው። በዚህ ምሳሌ ውስጥ ዒላማውን በሚጠራው ውስጥ አዋቅራለሁ. የማሳያ ሁነታ - ያለ ማረጋገጫ, የሚታይ እና ለሁሉም ሰው ተደራሽ ነው. በአምራች አካባቢ፣ ማረጋገጫን ማዋቀር ሳይፈልጉ አይቀሩም - ነገር ግን ለዛሬው ለአዝናኝ ልምምዶች ያ ከወሰን ውጭ ነው።

ከፋይል /dev/rbd/mypool/myimage ጋር የተጎዳኘ ዲስክ1 የሚባል የጀርባ ጫፍ ይፍጠሩ። የተገለጸው ፋይል በ udev daemon ወደ /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

ዒላማውን ለማሳያ ሁነታ እናዋቅር፡

# 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 መሳሪያ ይመስላል, ነገር ግን በእውነቱ ከሴፍ ምስል ነው, በ 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 ቁልፎችን ይፈልጋል)። ከከርነል የሚገኘው የሴፍ ደንበኛ መሸጎጫ ስለማይጠቀም ይህ በጣም ሊሠራ የሚችል ነው። ወይም ሌላ አማራጭ የሶስት አካላት የክላስተር ግብዓት መፍጠር ነው - የተወሰነ ኢላማ የአይፒ አድራሻ እና rbdmap እና ssi-ዒላማ አገልግሎቶችን መፍጠር እና ይህንን ሀብት በክላስተር መሳሪያዎች ማስተዳደር (ማን ነው ፔስ ሜከር ያለው?)

ከኋላ ቃል ይልቅ

በግልጽ እንደሚታየው ፣ ይህ መጣጥፍ ትንሽ ቀልድ ነው - ነገር ግን በእሱ ውስጥ “በፍጥነት እና በምሳሌዎች” በርካታ ትክክለኛ ታዋቂ ርዕሶችን በተመሳሳይ ጊዜ ለማጤን ሞከርኩ - iSCSI ዒላማ ፣ እሱም የግድ Ceph ምስሎችን ወደ ውጭ መላክ ላይሆን ይችላል - ግን ለምሳሌ ፣ LVM ጥራዞችን ወደ ውጭ መላክ ፣ ከ iSCSI አነሳሽ ጋር አብሮ የመስራት መሰረታዊ ነገሮች (ዒላማን እንዴት መቃኘት እንደሚቻል ፣ ከአንድ ዒላማ ጋር እንዴት እንደሚገናኙ ፣ ግንኙነቱ ማቋረጥ ፣ የታለመውን ከመረጃ ቋት መሰረዝ) ፣ የራስዎን አሃድ ለsystemd እና አንዳንድ ሌሎች ይፃፉ

ይህንን አጠቃላይ ሙከራ ሙሉ በሙሉ ባይደግሙም እንኳን ፣ ቢያንስ ከዚህ ጽሑፍ ውስጥ የሆነ ነገር ለእርስዎ ጠቃሚ እንደሚሆን ተስፋ አደርጋለሁ ።

ምንጭ: hab.com

አስተያየት ያክሉ