drbd+ocfs2 அடிப்படையிலான சிறிய வலை கிளஸ்டர்களுக்கான கிளஸ்டர் சேமிப்பு

நாம் எதைப் பற்றி பேசுவோம்:
drbd+ocfs2 தீர்வுகளின் அடிப்படையில் இரண்டு சேவையகங்களுக்கான பகிரப்பட்ட சேமிப்பிடத்தை விரைவாக எவ்வாறு வரிசைப்படுத்துவது.

இது யாருக்கு பயனுள்ளதாக இருக்கும்:
கணினி நிர்வாகிகள் மற்றும் சேமிப்பக செயலாக்க முறையைத் தேர்ந்தெடுக்கும் அல்லது தீர்வை முயற்சிக்க விரும்பும் எவருக்கும் இந்த பயிற்சி பயனுள்ளதாக இருக்கும்.

நாங்கள் என்ன முடிவுகளை மறுத்தோம், ஏன்?

ஒரு சிறிய வலை கிளஸ்டரில் நல்ல வாசிப்பு-எழுத செயல்திறன் கொண்ட பகிர்ந்த சேமிப்பகத்தை செயல்படுத்த வேண்டிய சூழ்நிலையை நாம் அடிக்கடி எதிர்கொள்கிறோம். எங்கள் திட்டங்களுக்கான பகிர்ந்த சேமிப்பகத்தை செயல்படுத்த பல்வேறு விருப்பங்களை நாங்கள் முயற்சித்தோம், ஆனால் சிலரால் ஒரே நேரத்தில் பல குறிகாட்டிகளில் எங்களை திருப்திப்படுத்த முடிந்தது. ஏன் என்று இப்போது நாங்கள் உங்களுக்குச் சொல்வோம்.

  • Glusterfs வாசிப்பு மற்றும் எழுதும் செயல்திறனில் எங்களை திருப்திப்படுத்தவில்லை; அதிக எண்ணிக்கையிலான கோப்புகளை ஒரே நேரத்தில் படிப்பதில் சிக்கல்கள் இருந்தன, மேலும் CPU இல் அதிக சுமை இருந்தது. கோப்புகளைப் படிப்பதில் உள்ள சிக்கலை செங்கல் மூலம் நேரடியாக அணுகுவதன் மூலம் தீர்க்க முடியும், ஆனால் இது எப்போதும் பொருந்தாது மற்றும் பொதுவாக தவறானது.

  • 2-4 சேவையகங்களைக் கொண்ட திட்டங்களுக்கு தீங்கு விளைவிக்கும் அதிகப்படியான சிக்கலான தன்மையை Ceph விரும்பவில்லை, குறிப்பாக திட்டம் பின்னர் பராமரிக்கப்பட்டால். மீண்டும், தீவிர செயல்திறன் வரம்புகள் உள்ளன, அவை க்ளஸ்டர்ஃப்களைப் போலவே தனித்தனி சேமிப்பக கிளஸ்டர்களை உருவாக்க நம்மை கட்டாயப்படுத்துகின்றன.

  • பகிரப்பட்ட சேமிப்பகத்தை செயல்படுத்த ஒரு NFS சேவையகத்தைப் பயன்படுத்துவது தவறு சகிப்புத்தன்மையின் அடிப்படையில் கேள்விகளை எழுப்புகிறது.

  • s3 என்பது குறிப்பிட்ட அளவிலான பணிகளுக்கு ஒரு சிறந்த பிரபலமான தீர்வாகும், ஆனால் இது ஒரு கோப்பு முறைமை அல்ல, இது அதன் நோக்கத்தை குறைக்கிறது.

  • lsyncd. "கோப்பு அல்லாத அமைப்புகள்" பற்றி நாங்கள் ஏற்கனவே பேசத் தொடங்கியிருந்தால், இந்த பிரபலமான தீர்வைக் கவனிப்பது மதிப்பு. இது இருவழி பரிமாற்றத்திற்கு ஏற்றது அல்ல (ஆனால் நீங்கள் உண்மையிலேயே விரும்பினால், உங்களால் முடியும்), இது அதிக எண்ணிக்கையிலான கோப்புகளில் நிலையானதாக வேலை செய்யாது. முழு விஷயத்திற்கும் ஒரு நல்ல கூடுதலாக, இது ஒற்றை நூல் ஆகும். காரணம் நிரலின் கட்டமைப்பில் உள்ளது: இது வேலைப் பொருட்களைக் கண்காணிக்க inotify ஐப் பயன்படுத்துகிறது, இது தொடக்கத்திலும் மறுபரிசீலனை செய்யும் போதும் ஒதுக்குகிறது. rsync பரிமாற்ற ஊடகமாக பயன்படுத்தப்படுகிறது.

பயிற்சி: drbd+ocfs2 அடிப்படையில் பகிர்ந்த சேமிப்பகத்தை எவ்வாறு வரிசைப்படுத்துவது

எங்களுக்கு மிகவும் வசதியான தீர்வுகளில் ஒன்று இணைப்பு ocfs2+drbd. தீர்வு தரவுத்தளத்தின் அடிப்படையில் இரண்டு சேவையகங்களுக்கான பகிரப்பட்ட சேமிப்பிடத்தை எவ்வாறு விரைவாக வரிசைப்படுத்தலாம் என்பதை இப்போது நாங்கள் உங்களுக்குக் கூறுவோம். ஆனால் முதலில், கூறுகளைப் பற்றி கொஞ்சம்:

DRBD - நிலையான லினக்ஸ் விநியோகத்திலிருந்து ஒரு சேமிப்பக அமைப்பு, இது தொகுதிகளில் உள்ள சேவையகங்களுக்கு இடையில் தரவை நகலெடுக்க அனுமதிக்கிறது. முக்கிய பயன்பாடு தவறு-சகிப்புத்தன்மை சேமிப்பகத்தை உருவாக்குவதாகும்.

OCFS2 - ஒரு கோப்பு முறைமை, ஒரே சேமிப்பகத்தைப் பல அமைப்புகளால் பகிரப்படும். லினக்ஸ் விநியோகத்தில் சேர்க்கப்பட்டுள்ளது மற்றும் இது கர்னல் தொகுதி மற்றும் 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, after-sb-1pri, after-sb-2pri — splitbrain கண்டறியப்படும்போது முனையின் செயல்களுக்குப் பொறுப்பான விருப்பங்கள். மேலும் விவரங்களை ஆவணத்தில் காணலாம்.
இரண்டிலும் முதன்மை ஆக - இரண்டு முனைகளையும் முதன்மையாக அமைக்கிறது.

எங்கள் விஷயத்தில், எங்களிடம் இரண்டு முற்றிலும் ஒரே மாதிரியான VMகள் உள்ளன, 10 ஜிகாபிட்களின் செயல்திறன் கொண்ட ஒரு பிரத்யேக மெய்நிகர் நெட்வொர்க் உள்ளது.

எங்கள் எடுத்துக்காட்டில், இரண்டு கிளஸ்டர் முனைகளின் பிணைய பெயர்கள் 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

கருத்தைச் சேர்