iSCSI ద్వారా Ceph - లేదా ఊయలలో నిలబడి స్కీయింగ్

మనలో "ప్రొఫెషనల్ ఎక్స్‌ట్రీమ్" ఇష్టపడని వారు (tsefovodov) ఉన్నారా?

ఇది అసంభవం - లేకుంటే మేము ఈ అత్యంత ఆసక్తికరమైన మరియు ఫన్నీ ఉత్పత్తితో దొర్లడం లేదు.

Ceph యొక్క ఆపరేషన్‌లో పాలుపంచుకున్న వారిలో చాలా మంది చాలా తరచుగా (లేదా చాలా అరుదుగా) కానీ కొన్నిసార్లు డిమాండ్ విషయంలో - iSCSI లేదా FC ద్వారా Cephని కనెక్ట్ చేస్తున్నారు. దేనికోసం? ఉదాహరణకు, కొన్ని కారణాల వల్ల ఇంకా వర్చువలైజ్ చేయని విండోస్ లేదా సోలారిస్ సర్వర్‌కు Ceph నుండి చిత్రాన్ని సమర్పించండి. లేదా వర్చువలైజ్ చేయబడినది, కానీ Ceph చేయలేని హైపర్‌వైజర్‌ని ఉపయోగించడం - మరియు మనకు తెలిసినట్లుగా, వాటిలో పుష్కలంగా ఉన్నాయి. ఉదాహరణకి? బాగా, ఉదాహరణకు, HyperV లేదా ESXi, ఇవి చురుకుగా ఉపయోగించబడతాయి. మరియు Ceph నుండి అతిథి యంత్రానికి చిత్రాన్ని అందించడం అనే పని తలెత్తితే, ఇది చాలా ఉత్తేజకరమైన పనిగా మారుతుంది.

కాబట్టి, ఇవ్వబడింది:

  1. ఇప్పటికే నడుస్తున్న Ceph క్లస్టర్
  2. ఇప్పటికే ఉన్న ఇమేజ్ iSCSI ద్వారా అందించబడాలి
  3. పూల్ పేరు mypool, చిత్రం పేరు నా చిత్రం

ప్రారంభించాలా?

అన్నింటిలో మొదటిది, మేము FC లేదా iSCSI గురించి మాట్లాడేటప్పుడు, మనకు ఇనిషియేటర్ మరియు టార్గెట్ వంటి అంశాలు ఉంటాయి. టార్గెట్ వాస్తవానికి సర్వర్, ఇనిషియేటర్ క్లయింట్. కనీస ప్రయత్నంతో సెఫ్ చిత్రాన్ని ఇనిషియేటర్‌కు సమర్పించడం మా పని. దీని అర్థం మనం లక్ష్యాన్ని విస్తరించాలి. కానీ ఎక్కడ, ఏ కంప్యూటర్‌లో?

అదృష్టవశాత్తూ, Ceph క్లస్టర్‌లో మనకు కనీసం ఒక IP చిరునామా స్థిరంగా ఉంటుంది మరియు Ceph యొక్క అత్యంత ముఖ్యమైన భాగాలలో ఒకటి కాన్ఫిగర్ చేయబడింది మరియు ఆ భాగం మానిటర్. దీని ప్రకారం, మేము మానిటర్‌పై iSCSI లక్ష్యాన్ని ఇన్‌స్టాల్ చేస్తాము (మరియు అదే సమయంలో, కనీసం పరీక్షల కోసం కూడా). నేను దీన్ని CentOSలో చేసాను, కానీ పరిష్కారం ఏదైనా ఇతర పంపిణీకి కూడా అనుకూలంగా ఉంటుంది - మీరు మీ పంపిణీలో ఆమోదయోగ్యమైన రీతిలో ప్యాకేజీలను ఇన్‌స్టాల్ చేయాలి.

# yum -y install iscsi-initiator-utils targetcli

ఇన్‌స్టాల్ చేయబడిన ప్యాకేజీల ప్రయోజనం ఏమిటి?

  • టార్గెట్క్లి — Linux కెర్నల్‌లో నిర్మించబడిన SCSI లక్ష్యాన్ని నిర్వహించడానికి ఒక యుటిలిటీ
  • iscsi-ఇనిషియేటర్-యుటిల్స్ — Linux కెర్నల్‌లో నిర్మించబడిన iSCSI ఇనిషియేటర్‌ను నిర్వహించడానికి ఉపయోగించే యుటిలిటీలతో కూడిన ప్యాకేజీ

ఇనిషియేటర్‌కు iSCSI ద్వారా ఇమేజ్‌ని సమర్పించడానికి, ఈవెంట్‌ల అభివృద్ధి కోసం రెండు ఎంపికలు ఉన్నాయి - టార్గెట్ యొక్క యూజర్‌స్పేస్ బ్యాకెండ్‌ను ఉపయోగించండి లేదా ఆపరేటింగ్ సిస్టమ్‌కు కనిపించే బ్లాక్ పరికరంగా ఇమేజ్‌ని కనెక్ట్ చేసి iSCSI ద్వారా ఎగుమతి చేయండి. మేము రెండవ మార్గంలో వెళ్తాము - యూజర్‌స్పేస్ బ్యాకెండ్ ఇప్పటికీ “ప్రయోగాత్మక” స్థితిలో ఉంది మరియు ఉత్పాదక వినియోగానికి కొద్దిగా సిద్ధంగా లేదు. అదనంగా, దానితో ఆపదలు ఉన్నాయి, దాని గురించి మీరు చాలా మాట్లాడవచ్చు మరియు (ఓహ్ భయానక!) వాదించవచ్చు.

మేము సుదీర్ఘ మద్దతు చక్రంతో కొంతవరకు స్థిరమైన పంపిణీని కూడా ఉపయోగిస్తే, మన వద్ద ఉన్న కెర్నల్ కొంత పురాతనమైన, పురాతన వెర్షన్. ఉదాహరణకు, CentOS7లో ఇది 3.10.*, CentOS8లో ఇది 4.19. మరియు మేము కనీసం 5.3 (లేదా బదులుగా 5.4) మరియు కొత్త కెర్నల్‌పై ఆసక్తి కలిగి ఉన్నాము. ఎందుకు? ఎందుకంటే డిఫాల్ట్‌గా Ceph ఇమేజ్‌లు పాత కెర్నల్‌లకు అనుకూలంగా లేని ఎంపికల సమితిని ప్రారంభించాయి. దీనర్థం మేము మా పంపిణీ కోసం కొత్త కెర్నల్‌తో రిపోజిటరీని కనెక్ట్ చేస్తాము (ఉదాహరణకు, CentOS కోసం ఇది elrepo), కొత్త కెర్నల్‌ను ఇన్‌స్టాల్ చేసి, కొత్త కెర్నల్‌తో పని చేయడానికి సిస్టమ్‌ను రీబూట్ చేయండి:

  • ప్రయోగం కోసం ఎంచుకున్న మానిటర్‌కు కనెక్ట్ చేయండి
  • మేము సూచనల ప్రకారం ఎల్రెపో రిపోజిటరీలను కనెక్ట్ చేస్తాము - elrepo.org/tiki/tiki-index.php
  • కెర్నల్‌ను ఇన్‌స్టాల్ చేయండి: yum -y —enablerepo=elrepo-kernel ఇన్‌స్టాల్ kernel-ml
  • మానిటర్‌తో సర్వర్‌ను రీబూట్ చేయండి (మాకు మూడు మానిటర్లు ఉన్నాయి, సరియైనదా?)

చిత్రాన్ని బ్లాక్ పరికరంగా కనెక్ట్ చేస్తోంది

# rbd map mypool/myimage
/dev/rbd0

లక్ష్యాన్ని కాన్ఫిగర్ చేయడమే మిగిలి ఉంది. ఈ ఉదాహరణలో, నేను లక్ష్యాన్ని పిలవబడే దానిలో కాన్ఫిగర్ చేస్తాను. డెమో మోడ్ - ప్రామాణీకరణ లేకుండా, అందరికీ కనిపిస్తుంది మరియు అందుబాటులో ఉంటుంది. ఉత్పాదక వాతావరణంలో, మీరు ప్రామాణీకరణను కాన్ఫిగర్ చేయాలనుకుంటున్నారు - కానీ ఇది కేవలం వినోదం కోసం ఈరోజు చేసే వ్యాయామానికి కొంచెం దూరంగా ఉంటుంది.

/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

డెమో మోడ్ కోసం లక్ష్యాన్ని కాన్ఫిగర్ చేద్దాం:

# 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 దీన్ని అర్థం చేసుకుంటుంది మరియు పని చేస్తుంది, హైపర్-V అర్థం చేసుకోదు - దీనికి SCSI లాక్‌లు అవసరం). కెర్నల్ నుండి Ceph క్లయింట్ కాషింగ్‌ను ఉపయోగించనందున, ఇది చాలా పని చేయగలదు. లేదా మరో ఐచ్ఛికం ఏమిటంటే, మూడు భాగాల యొక్క క్లస్టర్ వనరును సృష్టించడం - అంకితమైన లక్ష్య IP చిరునామా మరియు rbdmap మరియు scsi-టార్గెట్ సేవలు మరియు క్లస్టరింగ్ సాధనాల ద్వారా ఈ వనరును నిర్వహించడం (పేస్‌మేకర్‌ని ఎవరు చెప్పారు?)

బదులుగా ఒక పదవీకాలం

స్పష్టంగా ఉన్నట్లుగా, ఈ కథనం కొంచెం జోక్ - కానీ ఇందులో నేను "త్వరగా మరియు ఉదాహరణలతో" ఒకే సమయంలో చాలా ప్రజాదరణ పొందిన అనేక అంశాలను పరిగణించడానికి ప్రయత్నించాను - iSCSI లక్ష్యం, ఇది తప్పనిసరిగా Ceph చిత్రాలను ఎగుమతి చేయకపోవచ్చు - కానీ ఉదాహరణకు, LVM వాల్యూమ్‌లను ఎగుమతి చేయండి, iSCSI ఇనిషియేటర్‌తో పని చేసే ప్రాథమిక అంశాలు ( లక్ష్యాన్ని ఎలా స్కాన్ చేయాలి, లక్ష్యానికి ఎలా కనెక్ట్ చేయాలి, డిస్‌కనెక్ట్ చేయడం, డేటాబేస్ నుండి టార్గెట్ ఎంట్రీని తొలగించడం), systemd కోసం మీ స్వంత యూనిట్‌ను వ్రాయడం మరియు మరికొన్ని

మీరు ఈ మొత్తం ప్రయోగాన్ని పూర్తిగా పునరావృతం చేయకపోయినా, ఈ వ్యాసం నుండి కనీసం ఏదైనా మీకు ఉపయోగకరంగా ఉంటుందని నేను ఆశిస్తున్నాను.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి