drbd+ocfs2 ఆధారంగా చిన్న వెబ్ క్లస్టర్‌ల కోసం క్లస్టర్ నిల్వ

మేము దేని గురించి మాట్లాడుతాము:
drbd+ocfs2 సొల్యూషన్స్ ఆధారంగా రెండు సర్వర్‌ల కోసం భాగస్వామ్య నిల్వను త్వరగా ఎలా అమలు చేయాలి.

ఇది ఎవరికి ఉపయోగపడుతుంది:
సిస్టమ్ నిర్వాహకులకు మరియు నిల్వ అమలు పద్ధతిని ఎంచుకునే లేదా పరిష్కారాన్ని ప్రయత్నించాలనుకునే ఎవరికైనా ట్యుటోరియల్ ఉపయోగకరంగా ఉంటుంది.

మేము ఏ నిర్ణయాలను తిరస్కరించాము మరియు ఎందుకు?

చిన్న వెబ్ క్లస్టర్‌లో మంచి రీడ్-రైట్ పనితీరుతో భాగస్వామ్య నిల్వను అమలు చేయాల్సిన పరిస్థితిని మనం తరచుగా ఎదుర్కొంటాము. మేము మా ప్రాజెక్ట్‌ల కోసం భాగస్వామ్య నిల్వను అమలు చేయడానికి వివిధ ఎంపికలను ప్రయత్నించాము, కానీ కొద్దిమంది ఒకేసారి అనేక సూచికలలో మమ్మల్ని సంతృప్తిపరచగలిగారు. ఎందుకు అని ఇప్పుడు మేము మీకు చెప్తాము.

  • Glusterfs మాకు చదవడం మరియు వ్రాయడం పనితీరుతో సంతృప్తి చెందలేదు; పెద్ద సంఖ్యలో ఫైల్‌లను ఏకకాలంలో చదవడంలో సమస్యలు ఉన్నాయి మరియు CPUపై అధిక లోడ్ ఉంది. ఫైల్‌లను చదవడంలో సమస్య నేరుగా ఇటుక నుండి వాటిని యాక్సెస్ చేయడం ద్వారా పరిష్కరించబడుతుంది, అయితే ఇది ఎల్లప్పుడూ వర్తించదు మరియు సాధారణంగా తప్పు.

  • Ceph మితిమీరిన సంక్లిష్టతను ఇష్టపడలేదు, ఇది 2-4 సర్వర్‌లతో ప్రాజెక్ట్‌లపై హానికరం, ప్రత్యేకించి ప్రాజెక్ట్ తర్వాత నిర్వహించబడితే. మళ్ళీ, గ్లస్టర్ఫ్‌ల మాదిరిగానే ప్రత్యేక స్టోరేజ్ క్లస్టర్‌లను నిర్మించమని బలవంతం చేసే తీవ్రమైన పనితీరు పరిమితులు ఉన్నాయి.

  • భాగస్వామ్య నిల్వను అమలు చేయడానికి ఒక NFS సర్వర్‌ని ఉపయోగించడం వలన తప్పు సహనం పరంగా ప్రశ్నలు తలెత్తుతాయి.

  • s3 అనేది నిర్దిష్ట శ్రేణి పనుల కోసం ఒక అద్భుతమైన ప్రజాదరణ పొందిన పరిష్కారం, కానీ ఇది ఫైల్ సిస్టమ్ కాదు, ఇది దాని పరిధిని తగ్గిస్తుంది.

  • lsyncd. మేము ఇప్పటికే "నాన్-ఫైల్ సిస్టమ్స్" గురించి మాట్లాడటం ప్రారంభించినట్లయితే, ఈ ప్రసిద్ధ పరిష్కారంపై వెళ్లడం విలువైనదే. ఇది రెండు-మార్గం మార్పిడికి తగినది కాదు (కానీ మీరు నిజంగా కోరుకుంటే, అప్పుడు మీరు చేయగలరు), ఇది పెద్ద సంఖ్యలో ఫైళ్లలో స్థిరంగా పని చేయదు. మొత్తం విషయానికి ఒక చక్కని అదనంగా ఇది సింగిల్-థ్రెడ్‌గా ఉంటుంది. కారణం ప్రోగ్రామ్ యొక్క నిర్మాణంలో ఉంది: ఇది పని వస్తువులను పర్యవేక్షించడానికి inotifyని ఉపయోగిస్తుంది, ఇది ప్రారంభంలో మరియు పునఃస్కానింగ్ సమయంలో కేటాయించబడుతుంది. rsync బదిలీ మాధ్యమంగా ఉపయోగించబడుతుంది.

ట్యుటోరియల్: drbd+ocfs2 ఆధారంగా భాగస్వామ్య నిల్వను ఎలా అమలు చేయాలి

మాకు అత్యంత అనుకూలమైన పరిష్కారాలలో ఒకటి లింక్ ocfs2+drbd. సొల్యూషన్ డేటాబేస్ ఆధారంగా మీరు రెండు సర్వర్‌ల కోసం షేర్డ్ స్టోరేజ్‌ని త్వరగా ఎలా డిప్లయి చేయవచ్చో ఇప్పుడు మేము మీకు తెలియజేస్తాము. కానీ మొదట, భాగాల గురించి కొంచెం:

DRBD - బ్లాక్‌లలో సర్వర్‌ల మధ్య డేటాను పునరావృతం చేయడానికి మిమ్మల్ని అనుమతించే ప్రామాణిక Linux పంపిణీ నుండి నిల్వ సిస్టమ్. ప్రధాన అప్లికేషన్ తప్పు-తట్టుకునే నిల్వను నిర్మించడం.

OCFS2 - అనేక సిస్టమ్‌ల ద్వారా ఒకే స్టోరేజ్‌ని షేర్డ్ వినియోగాన్ని అందించే ఫైల్ సిస్టమ్. Linux పంపిణీలో చేర్చబడింది మరియు ఇది FSతో పని చేయడానికి కెర్నల్ మాడ్యూల్ మరియు యూజర్‌స్పేస్ సాధనాలు. OCFS2ని DRBD ద్వారా మాత్రమే కాకుండా, బహుళ కనెక్షన్‌లతో iSCSI ద్వారా కూడా ఉపయోగించవచ్చు. మా ఉదాహరణలో మేము DRBDని ఉపయోగిస్తాము.

అన్ని చర్యలు ఉబుంటు సర్వర్ 18.04లో కనీస కాన్ఫిగరేషన్‌లో నిర్వహించబడతాయి.

దశ 1. DRBDని కాన్ఫిగర్ చేయండి:

/etc/drbd.d/drbd0.res ఫైల్‌లో మేము మా వర్చువల్ బ్లాక్ పరికరాన్ని వివరిస్తాము /dev/drbd0:

resource drbd0 {
    syncer { rate 1000M; }
    net {
        allow-two-primaries;
        after-sb-0pri discard-zero-changes;
        after-sb-1pri discard-secondary;
        after-sb-2pri disconnect;
    }
    startup { become-primary-on both; }
    on drbd1 {
        meta-disk internal;
        device /dev/drbd0;
        disk /dev/vdb1;
        address 10.10.10.192:7789;
}
    on drbd2 {
        meta-disk internal;
        device /dev/drbd0;
        disk /dev/vdb1;
        address 10.10.10.193:7789;
}
}

మెటా-డిస్క్ అంతర్గత — మెటాడేటాను నిల్వ చేయడానికి అదే బ్లాక్ పరికరాలను ఉపయోగించండి
పరికరం /dev/drbd0 — drbd వాల్యూమ్‌కు మార్గంగా /dev/drbd0ని ఉపయోగించండి.
డిస్క్ /dev/vdb1 - /dev/vdb1 ఉపయోగించండి
సమకాలీకరణ {రేటు 1000M; } — గిగాబిట్ ఛానెల్ బ్యాండ్‌విడ్త్ ఉపయోగించండి
అనుమతించు-రెండు-ప్రైమరీలు - రెండు ప్రాథమిక సర్వర్‌లలో మార్పులను ఆమోదించడానికి అనుమతించే ముఖ్యమైన ఎంపిక
తర్వాత-sb-0pri, తర్వాత-sb-1pri, తర్వాత-sb-2pri - స్ప్లిట్‌బ్రేన్ గుర్తించబడినప్పుడు నోడ్ యొక్క చర్యలకు బాధ్యత వహించే ఎంపికలు. మరిన్ని వివరాలను డాక్యుమెంటేషన్‌లో చూడవచ్చు.
రెండింటిలోనూ ప్రాథమికంగా మారండి - రెండు నోడ్‌లను ప్రైమరీకి సెట్ చేస్తుంది.

మా విషయంలో, మేము 10 గిగాబిట్‌ల నిర్గమాంశతో అంకితమైన వర్చువల్ నెట్‌వర్క్‌తో రెండు పూర్తిగా ఒకేలాంటి VMలను కలిగి ఉన్నాము.

మా ఉదాహరణలో, రెండు క్లస్టర్ నోడ్‌ల నెట్‌వర్క్ పేర్లు drbd1 మరియు drbd2. సరైన ఆపరేషన్ కోసం, మీరు /etc/hostsలో హోస్ట్‌ల పేర్లు మరియు IP చిరునామాలను సరిపోల్చాలి.

10.10.10.192 drbd1
10.10.10.193 drbd2

దశ 2. నోడ్‌లను సెటప్ చేయండి:

రెండు సర్వర్‌లలో మేము అమలు చేస్తాము:

drbdadm create-md drbd0

drbd+ocfs2 ఆధారంగా చిన్న వెబ్ క్లస్టర్‌ల కోసం క్లస్టర్ నిల్వ

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

మేము ఈ క్రింది వాటిని పొందుతాము:

drbd+ocfs2 ఆధారంగా చిన్న వెబ్ క్లస్టర్‌ల కోసం క్లస్టర్ నిల్వ

మీరు సమకాలీకరణను ప్రారంభించవచ్చు. మొదటి నోడ్‌లో మీరు అమలు చేయాలి:

drbdadm primary --force drbd0

స్థితిని చూద్దాం:

cat /proc/drbd

drbd+ocfs2 ఆధారంగా చిన్న వెబ్ క్లస్టర్‌ల కోసం క్లస్టర్ నిల్వ

గొప్పది, సమకాలీకరణ ప్రారంభమైంది. మేము చివరి వరకు వేచి ఉండి చిత్రాన్ని చూడండి:

drbd+ocfs2 ఆధారంగా చిన్న వెబ్ క్లస్టర్‌ల కోసం క్లస్టర్ నిల్వ

దశ 3. రెండవ నోడ్‌లో సమకాలీకరణను ప్రారంభించండి:

drbdadm primary --force drbd0

మేము ఈ క్రింది వాటిని పొందుతాము:

drbd+ocfs2 ఆధారంగా చిన్న వెబ్ క్లస్టర్‌ల కోసం క్లస్టర్ నిల్వ

ఇప్పుడు మనం రెండు సర్వర్ల నుండి drbdకి వ్రాయవచ్చు.

దశ 4. ocfs2ని ఇన్‌స్టాల్ చేసి కాన్ఫిగర్ చేయండి.

మేము చాలా అల్పమైన కాన్ఫిగరేషన్‌ని ఉపయోగిస్తాము:

cluster:
     node_count = 2
     name = ocfs2cluster

node:
     number = 1
     cluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.192
     name = drbd1

node:
     number = 2
     cluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.193
     name = drbd2

ఇది వ్రాయబడాలి /etc/ocfs2/cluster.conf రెండు నోడ్లపై.

మేము ఏదైనా నోడ్‌లో drbd0పై FSని సృష్టిస్తాము:

mkfs.ocfs2 -L "testVol" /dev/drbd0

ఇక్కడ మేము డిఫాల్ట్ పారామితులను ఉపయోగించి drbd0 పై testVol లేబుల్‌తో ఫైల్ సిస్టమ్‌ను సృష్టించాము.

drbd+ocfs2 ఆధారంగా చిన్న వెబ్ క్లస్టర్‌ల కోసం క్లస్టర్ నిల్వ

/etc/default/o2cbలో మీరు సెట్ చేయాలి (మా కాన్ఫిగరేషన్ ఫైల్‌లో వలె)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

మరియు ప్రతి నోడ్‌పై అమలు చేయండి:

o2cb register-cluster ocfs2cluster

అప్పుడు మేము ఆన్ చేసి, ఆటోరన్ చేయడానికి అవసరమైన అన్ని యూనిట్లను జోడిస్తాము:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

సెటప్ ప్రాసెస్ సమయంలో వీటిలో కొన్ని ఇప్పటికే రన్ అవుతాయి.

దశ 5. రెండు నోడ్‌లలోని fstabకి మౌంట్ పాయింట్‌లను జోడించండి:

/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0

డైరెక్టరీ /మీడియా/షేర్డ్ అది ముందుగానే సృష్టించబడాలి.

ఇక్కడ మేము noauto ఎంపికలను ఉపయోగిస్తాము, అంటే ఫైల్ స్టార్టప్‌లో మౌంట్ చేయబడదు (నేను systemd ద్వారా నెట్‌వర్క్ ఫైల్‌లను మౌంట్ చేయడానికి ఇష్టపడతాను) మరియు heartbeat=local, అంటే ప్రతి నోడ్‌లో హృదయ స్పందన సేవను ఉపయోగించడం. ప్రపంచ హృదయ స్పందన కూడా ఉంది, ఇది పెద్ద సమూహాలకు మరింత అనుకూలంగా ఉంటుంది.

తదుపరి మీరు మౌంట్ చేయవచ్చు /మీడియా/షేర్డ్ మరియు కంటెంట్ సమకాలీకరణను తనిఖీ చేయండి.

పూర్తయింది! ఫలితంగా, మేము స్కేలబిలిటీ మరియు మంచి పనితీరుతో ఎక్కువ లేదా తక్కువ తప్పు-తట్టుకునే నిల్వను పొందుతాము.

మూలం: www.habr.com

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