drbd+ocfs2 негізіндегі шағын веб-кластерлерге арналған кластер қоймасы

Біз не туралы сөйлесетін боламыз:
drbd+ocfs2 шешімдеріне негізделген екі сервер үшін ортақ жадты жылдам орналастыру жолы.

Бұл кімге пайдалы болады:
Оқулық жүйе әкімшілеріне және сақтауды іске асыру әдісін таңдайтын немесе шешімді қолданғысы келетін кез келген адамға пайдалы болады.

Біз қандай шешімдерден бас тарттық және неге?

Көбінесе біз шағын веб-кластерде оқу-жазу өнімділігі жақсы ортақ сақтауды енгізу қажет болатын жағдайға тап боламыз. Біз жобаларымыз үшін ортақ жадты енгізудің әртүрлі нұсқаларын қолданып көрдік, бірақ бірнеше индикаторлар бізді бірден қанағаттандыра алды. Енді неге екенін айтамыз.

  • Glusterfs бізді оқу және жазу өнімділігімен қанағаттандырмады, көптеген файлдарды бір уақытта оқуда проблемалар туындады және процессорға үлкен жүктеме болды. Файлдарды оқу мәселесін оларға тікелей кірпіштен кіру арқылы шешуге болады, бірақ бұл әрқашан қолданыла бермейді және әдетте дұрыс емес.

  • Цеф 2-4 сервері бар жобаларға зиян келтіруі мүмкін шамадан тыс күрделілікті ұнатпады, әсіресе жоба кейіннен жүргізілсе. Тағы да, бізді glusterfs сияқты бөлек сақтау кластерлерін құруға мәжбүрлейтін елеулі өнімділік шектеулері бар.

  • Ортақ жадты енгізу үшін бір NFS серверін пайдалану ақауларға төзімділік тұрғысынан сұрақтар тудырады.

  • s3 - белгілі бір тапсырмалар ауқымы үшін тамаша танымал шешім, бірақ бұл оның қолданылу аясын тарылтатын файлдық жүйе емес.

  • lsyncd. Егер біз «файлдық емес жүйелер» туралы айта бастасақ, онда бұл танымал шешімді қарастырған жөн. Ол екі жақты алмасуға жарамсыз болып қана қоймайды (бірақ шынымен қаласаңыз, сіз жасай аласыз), сонымен қатар көптеген файлдарда тұрақты жұмыс істемейді. Барлығына жақсы қосымша - бұл бір жіпті. Мұның себебі бағдарламаның архитектурасында: ол іске қосу кезінде және қайта сканерлеу кезінде тағайындайтын жұмыс нысандарын бақылау үшін inotify пайдаланады. rsync тасымалдаушы ретінде пайдаланылады.

Оқулық: drbd+ocfs2 негізіндегі ортақ жадты қалай орналастыру керек

Біз үшін ең қолайлы шешімдердің бірі сілтеме болды ocfs2+drbd. Енді біз шешім дерекқорына негізделген екі сервер үшін ортақ жадты қалай жылдам орналастыруға болатынын айтамыз. Бірақ алдымен компоненттер туралы аздап:

DRBD - блоктардағы серверлер арасында деректерді көшіруге мүмкіндік беретін стандартты Linux дистрибутивінің сақтау жүйесі. Негізгі қолданба ақауларға төзімді жадты құру болып табылады.

OCFS2 - бір жадты бірнеше жүйенің ортақ пайдалануын қамтамасыз ететін файлдық жүйе. Linux дистрибутивіне кіреді және ядро ​​модулі және FS-мен жұмыс істеуге арналған пайдаланушы кеңістігі құралдары болып табылады. OCFS2 тек DRBD арқылы ғана емес, сонымен қатар бірнеше қосылымдары бар iSCSI арқылы да пайдаланылуы мүмкін. Біздің мысалда біз DRBD қолданамыз.

Барлық әрекеттер ubuntu серверінде 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 пайдаланыңыз
синсер (бағасы 1000М); } — гигабиттік арна өткізу қабілеттілігін пайдалану
рұқсат-екі бастапқы - екі негізгі серверде өзгертулерді қабылдауға мүмкіндік беретін маңызды опция
кейін-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

пікір қалдыру