Кластер складиште за мале веб кластере засноване на дрбд+оцфс2

О чему ћемо причати:
Како брзо применити дељено складиште за два сервера на основу дрбд+оцфс2 решења.

Коме ће ово бити корисно:
Водич ће бити користан системским администраторима и свима који изаберу метод имплементације складиштења или желе да испробају решење.

Које смо одлуке одбили и зашто?

Често се суочавамо са ситуацијом у којој морамо да имплементирамо дељено складиште са добрим перформансама читања и писања на малом веб кластеру. Испробали смо различите опције за имплементацију заједничког складиштења за наше пројекте, али мало ко је успео да нас задовољи на неколико показатеља одједном. Сада ћемо вам рећи зашто.

  • Глустерфс нас није задовољио перформансама читања и писања, било је проблема са истовременим читањем великог броја датотека, а било је и велико оптерећење ЦПУ-а. Проблем са читањем датотека може се решити приступом директно са цигле, али то није увек применљиво и генерално је нетачно.

  • Цепх-у се није допао превелика сложеност, која може бити штетна на пројектима са 2-4 сервера, посебно ако се пројекат накнадно одржава. Опет, постоје озбиљна ограничења перформанси која нас приморавају да изградимо одвојене кластере за складиштење, као што је случај са глустерфовима.

  • Коришћење једног НФС сервера за имплементацију дељеног складиштења поставља питања у погледу толеранције грешака.

  • с3 је одлично популарно решење за одређени опсег задатака, али није систем датотека, што сужава његов обим.

  • лсинцд. Ако смо већ почели да причамо о „системима без датотека“, онда је вредно прећи преко овог популарног решења. Не само да није погодан за двосмерну размену (али ако заиста желите, онда можете), такође не ради стабилно на великом броју датотека. Леп додатак целој ствари је то што је једнонит. Разлог је у архитектури програма: он користи инотифи за праћење радних објеката, које додељује при покретању и током поновног скенирања. рсинц се користи као медиј за пренос.

Водич: како да примените дељено складиште засновано на дрбд+оцфс2

Једно од најпогоднијих решења за нас је била веза оцфс2+дрбд. Сада ћемо вам рећи како можете брзо да примените дељено складиште за два сервера на основу базе података решења. Али прво, мало о компонентама:

ДРБД - систем за складиштење из стандардне Линук дистрибуције који вам омогућава да реплицирате податке између сервера у блоковима. Главна примена је да се изгради складиште отпорно на грешке.

ОЦФС2 - систем датотека који омогућава заједничко коришћење истог складишта од стране више система. Укључено у Линук дистрибуцију и представља модул кернела и алате корисничког простора за рад са ФС-ом. ОЦФС2 се може користити не само преко ДРБД-а, већ и преко иСЦСИ-а са више конекција. У нашем примеру користимо ДРБД.

Све радње се изводе на убунту серверу 18.04 у минималној конфигурацији.

Корак 1. Конфигуришите ДРБД:

У датотеци /етц/дрбд.д/дрбд0.рес описујемо наш виртуелни блок уређај /дев/дрбд0:

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;
}
}

интерни мета-диск — користите исте блок уређаје за складиштење метаподатака
уређај /дев/дрбд0 — користите /дев/дрбд0 као путању до дрбд волумена.
диск /дев/вдб1 - користите /дев/вдб1
синцер { рате 1000М; } — користите гигабитни пропусни опсег канала
дозволи-два-примарна - важна опција која омогућава прихватање промена на два примарна сервера
после-сб-0при, после-сб-1при, после-сб-2при — опције одговорне за радње чвора када се открије подељени мозак. Више детаља можете пронаћи у документацији.
постати-примарни-на оба — поставља оба чвора на примарни.

У нашем случају имамо два апсолутно идентична ВМ-а, са наменском виртуелном мрежом са пропусношћу од 10 гигабита.

У нашем примеру, имена мреже два чвора кластера су дрбд1 и дрбд2. За исправан рад, потребно је да ускладите имена и ИП адресе хостова у /етц/хостс.

10.10.10.192 drbd1
10.10.10.193 drbd2

Корак 2. Подесите чворове:

На оба сервера покрећемо:

drbdadm create-md drbd0

Кластер складиште за мале веб кластере засноване на дрбд+оцфс2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Добијамо следеће:

Кластер складиште за мале веб кластере засноване на дрбд+оцфс2

Можете започети синхронизацију. На првом чвору треба да извршите:

drbdadm primary --force drbd0

Погледајмо статус:

cat /proc/drbd

Кластер складиште за мале веб кластере засноване на дрбд+оцфс2

Одлично, синхронизација је почела. Чекамо до краја и видимо слику:

Кластер складиште за мале веб кластере засноване на дрбд+оцфс2

Корак 3. Покрените синхронизацију на другом чвору:

drbdadm primary --force drbd0

Добијамо следеће:

Кластер складиште за мале веб кластере засноване на дрбд+оцфс2

Сада можемо писати у дрбд са два сервера.

Корак 4. Инсталирајте и конфигуришите оцфс2.

Користићемо прилично тривијалну конфигурацију:

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

То треба записати у /етц/оцфс2/цлустер.цонф на оба чвора.

Креирамо ФС на дрбд0 на било ком чвору:

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

Овде смо креирали систем датотека са ознаком тестВол на дрбд0, користећи подразумеване параметре.

Кластер складиште за мале веб кластере засноване на дрбд+оцфс2

У /етц/дефаулт/о2цб морате да подесите (као у нашој конфигурационој датотеци)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

и изврши на сваком чвору:

o2cb register-cluster ocfs2cluster

Затим укључујемо и додајемо све јединице које су нам потребне за аутоматско покретање:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Нешто од овога ће већ бити покренуто током процеса подешавања.

Корак 5. Додајте тачке монтирања у фстаб на оба чвора:

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

Именик /медиа/схаред мора се унапред креирати.

Овде користимо опције ноауто, што значи да датотека неће бити монтирана при покретању (ја радије монтирам мрежне датотеке преко системд-а) и хеартбеат=лоцал, што значи коришћење услуге хеартбеат на сваком чвору. Постоји и глобални откуцај срца, који је погоднији за велике кластере.

Затим можете монтирати /медиа/схаред и проверите синхронизацију садржаја.

Готово! Као резултат, добијамо мање или више толерантно складиште са скалабилности и пристојним перформансама.

Извор: ввв.хабр.цом

Додај коментар