drbd+ocfs2 මත පදනම් වූ කුඩා වෙබ් පොකුරු සඳහා පොකුරු ආචයනය

අපි කතා කරන දේ:
drbd+ocfs2 විසඳුම් මත පදනම්ව සේවාදායකයන් දෙකක් සඳහා හවුල් ආචයනය ඉක්මනින් යොදවන්නේ කෙසේද.

මෙය ප්‍රයෝජනවත් වන්නේ කාටද:
නිබන්ධනය පද්ධති පරිපාලකයින්ට සහ ගබඩා ක්‍රියාත්මක කිරීමේ ක්‍රමයක් තෝරා ගන්නා හෝ විසඳුම උත්සාහ කිරීමට කැමති ඕනෑම කෙනෙකුට ප්‍රයෝජනවත් වනු ඇත.

අපි ප්‍රතික්ෂේප කළ තීරණ මොනවාද සහ ඇයි?

බොහෝ විට අපි කුඩා වෙබ් පොකුරක් මත හොඳ කියවීමේ-ලිවීමේ කාර්ය සාධනයක් සමඟ හවුල් ගබඩාව ක්‍රියාත්මක කිරීමට අවශ්‍ය තත්වයකට මුහුණ දී සිටිමු. අපගේ ව්‍යාපෘති සඳහා හවුල් ආචයනය ක්‍රියාත්මක කිරීම සඳහා අපි විවිධ විකල්ප උත්සාහ කළ නමුත් කිහිප දෙනෙකුට එකවර දර්ශක කිහිපයකින් අපව තෘප්තිමත් කිරීමට හැකි විය. දැන් අපි ඔබට කියන්නම් ඇයි කියලා.

  • Glusterfs කියවීමේ සහ ලිවීමේ කාර්ය සාධනයෙන් අපව සෑහීමකට පත් කළේ නැත; ගොනු විශාල සංඛ්‍යාවක් එකවර කියවීමේ ගැටළු ඇති අතර CPU මත ඉහළ බරක් තිබුණි. ලිපිගොනු කියවීමේ ගැටලුව ගඩොල්වලින් සෘජුවම ප්‍රවේශ වීමෙන් විසඳා ගත හැකි නමුත් මෙය සැමවිටම අදාළ නොවන අතර සාමාන්‍යයෙන් වැරදිය.

  • Ceph අධික සංකීර්ණත්වයට කැමති වූයේ නැත, 2-4 සේවාදායකයන් සහිත ව්යාපෘති මත හානිකර විය හැක, විශේෂයෙන්ම ව්යාපෘතිය පසුව නඩත්තු කරන්නේ නම්. නැවතත්, glusterfs මෙන් වෙනම ගබඩා පොකුරු තැනීමට අපට බල කරන බරපතල කාර්ය සාධන සීමාවන් තිබේ.

  • හවුල් ආචයනය ක්‍රියාත්මක කිරීම සඳහා එක් NFS සේවාදායකයක් භාවිතා කිරීම වැරදි ඉවසීම සම්බන්ධයෙන් ප්‍රශ්න මතු කරයි.

  • s3 යනු යම් පරාසයක කාර්යයන් සඳහා විශිෂ්ට ජනප්‍රිය විසඳුමකි, නමුත් එය එහි විෂය පථය පටු කරන ගොනු පද්ධතියක් නොවේ.

  • lsyncd. අපි දැනටමත් "ගොනු නොවන පද්ධති" ගැන කතා කිරීමට පටන් ගෙන තිබේ නම්, මෙම ජනප්රිය විසඳුම ඉක්මවා යාම වටී. එය ද්වි-මාර්ග හුවමාරුව සඳහා සුදුසු නොවනවා පමණක් නොව (නමුත් ඔබට සැබවින්ම අවශ්‍ය නම්, ඔබට එය කළ හැකිය), එය ගොනු විශාල සංඛ්‍යාවක් මත ස්ථායීව ක්‍රියා නොකරයි. මුළු දේටම ලස්සන එකතු කිරීමක් වන්නේ එය තනි නූල් එකක් වීමයි. හේතුව වැඩසටහනේ ගෘහ නිර්මාණ ශිල්පයේ ය: එය වැඩ වස්තු නිරීක්ෂණය කිරීමට inotify භාවිතා කරයි, එය ආරම්භයේදී සහ නැවත පරිලෝකනය කිරීමේදී පවරයි. rsync හුවමාරු මාධ්‍යය ලෙස භාවිතා කරයි.

නිබන්ධනය: drbd+ocfs2 මත පදනම්ව හවුල් ආචයනය යෙදවිය යුතු ආකාරය

අපට වඩාත් පහසු විසඳුමක් වූයේ සබැඳියයි ocfs2+drbd. විසඳුම් දත්ත සමුදායක් මත පදනම්ව සේවාදායකයන් දෙකක් සඳහා හවුල් ගබඩාව ඉක්මනින් යෙදවිය හැකි ආකාරය අපි දැන් ඔබට කියන්නෙමු. නමුත් පළමුව, සංරචක ගැන ටිකක්:

DRBD - බ්ලොක් වල සේවාදායකයන් අතර දත්ත අනුකරණය කිරීමට ඔබට ඉඩ සලසන සම්මත ලිනක්ස් බෙදාහැරීමේ ගබඩා පද්ධතියකි. ප්‍රධාන යෙදුම වන්නේ දෝෂ වලට ඔරොත්තු දෙන ගබඩා ගොඩනැගීමයි.

OCFS2 - පද්ධති කිහිපයකින් එකම ආචයනය හවුල් භාවිතය සපයන ගොනු පද්ධතියකි. Linux බෙදාහැරීමේ ඇතුළත් කර ඇති අතර FS සමඟ වැඩ කිරීම සඳහා කර්නල් මොඩියුලයක් සහ පරිශීලක අවකාශය මෙවලම් වේ. OCFS2 DRBD හරහා පමණක් නොව, බහු සම්බන්ධතා සහිත iSCSI හරහාද භාවිතා කළ හැක. අපගේ උදාහරණයේදී අපි DRBD භාවිතා කරමු.

සියලුම ක්‍රියා ubuntu server 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;
}
}

meta-disk අභ්යන්තර — පාර-දත්ත ගබඩා කිරීමට එම බ්ලොක් උපාංග භාවිතා කරන්න
උපාංගය /dev/drbd0 — drbd පරිමාව සඳහා මාර්ගය ලෙස /dev/drbd0 භාවිතා කරන්න.
තැටිය /dev/vdb1 - /dev/vdb1 භාවිතා කරන්න
සමමුහුර්ත {අනුපාතය 1000M; } - gigabit නාලිකා කලාප පළල භාවිතා කරන්න
අවසර-ද්වි-ප්‍රාථමික - ප්‍රාථමික සේවාදායකයන් දෙකක වෙනස්කම් පිළිගැනීමට ඉඩ සලසන වැදගත් විකල්පයකි
after-sb-0pri, after-sb-1pri, after-sb-2pri - splitbrain අනාවරණය වූ විට node හි ක්රියා සඳහා වගකිව යුතු විකල්ප. වැඩි විස්තර ලේඛනයෙන් සොයාගත හැකිය.
දෙකෙහිම ප්‍රාථමික වීම - නෝඩ් දෙකම ප්‍රාථමික ලෙස සකසයි.

අපගේ නඩුවේදී, අපට ගිගාබිට් 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

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