drbd+ocfs2 негизиндеги кичинекей веб кластерлер үчүн кластердик сактагыч

Биз эмне жөнүндө сүйлөшөбүз:
drbd+ocfs2 чечимдеринин негизинде эки сервер үчүн жалпы сактагычты кантип тез жайылтуу керек.

Бул ким үчүн пайдалуу болот:
Окуу куралы тутумдук администраторлор жана сактоону ишке ашыруу ыкмасын тандаган же чечимди сынап көргүсү келгендер үчүн пайдалуу болот.

Кандай чечимдерден баш тарттык жана эмне үчүн?

Көбүнчө биз кичинекей веб-кластерде окуу-жазуу көрсөткүчтөрү жакшы болгон жалпы сактоону ишке ашыруу керек болгон кырдаалга туш болобуз. Биз долбоорлорубуз үчүн жалпы сактагычты ишке ашыруунун ар кандай варианттарын сынап көрдүк, бирок бир нечеси бизди бир эле учурда бир нече көрсөткүчтөр боюнча канааттандыра алган. Эми эмне үчүн экенин айтабыз.

  • Glusterfs окуу жана жазуу көрсөткүчтөрү менен бизди канааттандырган жок; Файлдарды окуу маселеси кирпичтен түздөн-түз кирүү аркылуу чечилиши мүмкүн, бирок бул дайыма эле колдонула бербейт жана жалпысынан туура эмес.

  • Ceph ашыкча татаалдыкты жактырган жок, ал 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 колдонуңуз
синсер { чен 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

Directory /media/shared аны алдын ала түзүү керек.

Бул жерде биз noauto параметрлерин колдонобуз, бул файл ишке киргенде орнотулбайт (мен тармактык файлдарды systemd аркылуу туташтырууну артык көрөм) жана heartbeat=local, башкача айтканда, ар бир түйүндө жүрөктүн согушу кызматын колдонууну билдирет. Ошондой эле чоң кластерлер үчүн ылайыктуу болгон глобалдык жүрөктүн согушу бар.

Андан кийин сиз орното аласыз /media/shared жана мазмунун синхрондоштурууну текшерүү.

Кереги жок! Натыйжада, биз масштабдуу жана татыктуу аткаруу менен аздыр-көптүр катага чыдамдуу сактагычка ээ болобуз.

Source: www.habr.com

Комментарий кошуу