Кластер файлового сервера linux

Кластер файлового сервера linux

Все-таки система получается необновляемой. Неужели действительно тяжело собрать через rpmbuild нативно, и написать в спеке те опции сборки, что нравятся?

А кто будет следить за _версиями_ (не коммитов, а ПО), за необходимостью обновления, и т д?
Может быть, еще парсилку комментариев напишем, и внесем в скрипт, который будет по ssh в цикле обходить машины, проверять, и т д?

Чем это лучше LFS? Зачем вообще тогда брать какой-то дистрибутив?

Альтернатива, не изобретение велосипедов. Например, для RH платформы, использованной автором(CentOS, RHEL, Fedora и все остальные) есть очень и очень удобный инструмент для управления ПО:

(если закрыть глаза на Жабу и Оракл, каналы с ПО просто потрясающе удобно!)

У SLE (ZenWorks) и у Ubuntu (LaunchPad) есть аналогичные решения (я с ними не работала, и удобность, плюсы и минусы прокомментировать не могу)

Даже чистые rpm(что стоит только rpm -V), dpkg, yum, up2date, zypper, apt/aptitude, если не боятся ими пользоваться, умеют гораздо больше, и являются инструментами, созданными специально для этой цели.
В конце концов, есть порты в той же Gentoo и FreeBSD, хотите все собирать, но ленитесь править спек rpm-а (а поправить строчку с configure в секции %build в vim можно парой-тройкой команд 🙂 ), мешает религия? Есть системы, которые ориентированы на source-бэйсед подход (что и там, особенно во фре, не мешает пользоваться бинарными пакетами)

А зачем? Работает — нетрож, глючит проверяй.

Вон блин, в Дебиане, grub самообновился до grub2, а я его с утра и не узнал.

Записываем: за версиями будет следить друхх павлина Глючит-Проверяй! |-)

где-то туда, иногда надо переносить не бинарники, а строку для кофигуре Вот у . текст свёрнут, показать

И Истина открылась непросвещённым И возрадовались они И поверили в Путь Бээсдэ. текст свёрнут, показать

Ну, я тоже те спеки, что правила, в Subversion храню И все-таки Вы не правы . текст свёрнут, показать

gt оверквотинг удален zypper up Загрузка данных о репозиториях Чтение уст. большой текст свёрнут, показать

Ждем пока собирутся пакеты

8 * 4 = 32 Мбит — это скорость в хреновой сети на хабах, с сетевухами Realtek 8139

>Samba без CTDB
>2,15
>2,16
>2,13
>2,09

см. выше
>Samba + CTDB
>24,73
>23,42
>23,26
>23,15
> Сервер был доступен по кналу 1 Гб/с,
>поэтому суммарно использовано около 75% пропускной способности.

А по-моему 19.2% пропускной способности.
24,73 * 8 бит = 192 Mbit в сек.

Господа, у Вас проблемы с сетью.

> Скорость записи идентична, не намного уступает, определяется
> скорее возможностями файловой системы.

Ага. но только после 400 Mb/sec, и для FC SAS II

— это просто номера клиентов, которые одновременно используют сервер.
>24,73
>23,42
>23,26
>23,15

результаты dbench в студию!

http://ctdb.samba.org/
особенно это:
— CTDB is the core component that provides pCIFS («parallel CIFS») with Samba3/4.
— CTDB provides HA features such as node monitoring, node failover, and IP takeover.
>Ну и тесты я думаю здесь если и нужно проводить то уже никак не копированием файлов.

Читайте также:  Назначить владельца папки линукс

а чем? и чем не устраивает?

В данном случае использован следующий набор ПО для High-Aviability:
Операционная система — CentOS 5.4
Кластерное ПО — все от RedHat (группы пакетов «Cluster» и «Cluster Storage»)
Файловая система для общего хранилища — GFS2.
Репликация дисков DRBD8 (замечу, все узлы в режиме «primary»)
Механизм «сердцебиения» — опционально(далее поясню, почему) — HeartBeat.

автор, не могли бы вы перечислить вообще софт используемый для этого, а то из вашего текста выходит — что заведется это на любом дистре, стоит только там поставить самбу и ctdb.

а ниче что spec файл уже есть в исходниках, видать разработчики самбы для прикола его туда положили 🙂

> А зачем? Работает — нетрож, глючит проверяй.

> с чего вообще взяли, что он должен объяснять, что такое CTDB?

а какой тогда глубокий смысл в статье?

> Samba использует легковесную базу данных (TDB) для приведения соответствия Windows SID к Unix UID/GID

Источник

Кластерное хранилище Pacemaker + DRBD (Dual primary) + samba

В продолжение статьи «Кластерное хранилище Pacemaker + DRBD (Dual primary) + ctdb» представляю полностью готовый и рабочий вариант HA кластера файловой шары на 2-4 ноды для centos 6 и centos 7. Если вы хотите реализовать такое, вы либо извращенец, либо вам не дали никакого выбора, и реализовать надо хоть как-то.

Я просто опишу слоёный пирог, который мы будем собирать:

На блочном устройстве создаём таблицу gpt => один раздел на всё пространство под лвм => группу томов лвм на всё доступное пространство => лвм том на всё доступное пространство => drbd устройство => dlm => размечаем как физический том лвм на всё доступное пространство => на него кластерную группу томов лвм => лвм том на всё доступное пространство => размечаем фс gfs2 => подключаем в точку монтирования.
И рулить всем этим будет pacemaker c virtual ip адресом.

Процессор 1 ядро
1 Гб минимум оперативной памяти
15 Гб диск + место на котором вы будете хранить данные
Дисков может быть сколько угодно, даже один.

Если у вас один диск, то лучше размечать его следующим образом:
Таблица разделов gpt => раздел 200 Мб для efi (опционально) => раздел 1Гб для /boot => всё остальное место под лвм.

На лвм томе вам необходимо создать 2 группы томов. Первая группа томов под ОС размером 10 Гб + удвоенному размеру оперативной памяти, но не более 4 Гб.

Кто бы, что не говорил, но подкачка иногда очень выручает, поэтому на лвм группе создаём лвм раздел для подкачки равный удвоенному размеру оперативной памяти, но не более 4 Гб и оставшееся место отводим под корень ОС.

Читайте также:  Linux set date with timezone

Вторая группа лвм под хранение данных. Создаём лвм раздел на всё оставшееся место.

По условиям нам дали 2 виртуальные машины и на этом всё. Ceph для корректной работы лучше ставить на 6 нодах, минимум 4, плюс было бы неплохо иметь какой-нибудь опыт работы с ним, а то получится как у cloudmouse. Gluster для сотен тысяч мелких файлов по производительности не пройдёт, это обмусолено на просторах хабра много раз. ipfs, lustre и тому подобные имеют такие же требования как у ceph или даже больше.

Начнём сражение! У меня было две виртуальные машины на CentOS 7 с 2мя дисками.

1) Pacemaker версии 1.1 не работает с ip корректно, поэтому для надёжности добавляем в /etc/hosts записи:

192.168.0.1 node1 192.168.0.2 node2 

2) В стандартных репозиториях DRBD нет, поэтому надо подключить сторонний.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum localinstall -y http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/$(curl -s http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/ | grep -oP ">elrepo-release.*rpm" | cut -c 2-)

3) Устанавливаем drbd версии 8.4

yum install -y kmod-drbd84 drbd84-utils

4) Активируем и включаем в автозагрузку модуль ядра drbd

modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf 

5) Создаём раздел диска и настраиваем лвм

echo -e "g\nn\n\n\n\nt\n8e\nw\n" | fdisk /dev/sdb vgcreate drbd_vg /dev/sdb1 lvcreate -l +100%FREE --name r0 drbd_vg 

6) Создаем конфигурационный файл ресурса drbd /etc/drbd.d/r0.res

resource r0 < protocol C; device /dev/drbd1; meta-disk internal; disk /dev/mapper/drbd_vg-r0; net < allow-two-primaries; >disk < fencing resource-and-stonith; >handlers < fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; >startup < become-primary-on both; >on node1 < address 192.168.0.1:7788; >on node2

7) Убираем сервис drbd из авозагрузки (позже его за него будет отвечать pacemaker), создаем метаданные для диска drbd, поднимаем ресурс

systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

8) На первой ноде делаем ресурс первичным

yum install -y pacemaker corosync pcs resource-agents fence-agents-all

10) Устанавливаем пароль для пользователя hacluster для авторизации на нодах

echo CHANGEME | passwd --stdin hacluster 

11) Запускаем pcsd на обоих нодах

systemctl enable pcsd systemctl start pcsd 

12) Авторизуемся в кластере. C этого этапа делаем все на одной ноде

pcs cluster auth node1 node2 -u hacluster -p CHANGEME --force 

13) Создаем кластер с именем samba_cluster

pcs cluster setup --force --name samba_cluster node1 node2

14) активируем ноды и добавляем сервисы в автозагрузку и запускаем их

pcs cluster enable --all pcs cluster start --all systemctl start corosync pcsd pacemaker systemctl enable corosync pcsd pacemaker 

15) Так как в качестве серверов у нас выступают виртуальные машины, то отключаем механизм STONITH, так как мы не имеем никаких механизмов для управления ими. Так же у нас машин всего 2, поэтому кворум тоже отключаем, он работает только при 3х и более машинах.

pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore 
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=32 nic=eth0 clusterip_hash=sourceip-sourceport op monitor interval=1s 
pcs resource create DRBD1 ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s master master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true op start interval=0s timeout=240 promote interval=0s timeout=130 monitor interval=150s role=Master monitor interval=155s role=Slave 

18) Устанавливаем необходимые пакеты для clvm и подготавливаем clvm

yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster 

19) Добавляем ресурс dlm и clvd в pacemaker

pcs resource create dlm ocf:pacemaker:controld allow_stonith_disabled=true clone meta interleave=true pcs resource create clvmd ocf:heartbeat:clvm clone meta interleave=true 

20) Запрещаем LVM писать кэш и очищаем его. На обоих нодах

sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/* 

21) Создаем CLVM раздел. Делаем только на одной ноде

vgcreate -A y -c y cl_vg /dev/drbd1 lvcreate -l 100%FREE -n r0 cl_vg 

22) Размечаем раздел в gfs2, здесь важно чтобы таблица блокировок имела тоже имя что и наш кластер в peacemaker. Делаем только на одной ноде

mkfs.gfs2 -j 2 -p lock_dlm -t samba_cluster:r0 /dev/cl_vg/r0

23) Дальше добавляем монтирование этого раздела в pacemaker и говорим ему грузиться после clvmd

pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt" fstype="gfs2" clone interleave=true

24) Теперь наcтал черед ctdb, который будет запускать samba

yum install -y samba ctdb cifs-utils

25) Правим конфиг /etc/ctdb/ctdbd.conf

CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE 

26) Создаем файл со списком нод /etc/ctdb/nodes
ВНИМАНИЕ! После каждого адреса в списке должен присутствовать перевод строки. Иначе нода не будет включаться при инициализации.

Читайте также:  Linux driver make module

27) И наконец создаем ресурс ctdb

pcs resource create samba systemd:ctdb clone meta interleave=true 

28) Задаем очередь загрузки и зависимости ресурсов для запуска

pcs constraint colocation add dlm-clone with DRBD1-master pcs constraint colocation add clvmd-clone with dlm-clone pcs constraint colocation add fs-clone with clvmd-clone pcs constraint colocation add samba-clone with fs-clone pcs constraint colocation add virtual_ip with samba-clone pcs constraint order promote DRBD1-master then dlm-clone pcs constraint order start dlm-clone then clvmd-clone pcs constraint order start clvmd-clone then fs-clone pcs constraint order start fs-clone then samba-clone 

29) Задаем очередь остановки ресурсов, без этого ваша машина может зависнуть на моменте выключения

pcs constraint order stop fs-clone then stop clvmd-clone pcs constraint order stop clvmd-clone then stop dlm-clone pcs constraint order stop dlm-clone then stop DRBD1-master pcs constraint order stop samba-clone then stop fs-clone 

P.S.

Сама шара может быть и на nfs, и на samba, но подключение к ним fail-over по IP, хотя само хранилище HA. Если вы хотите полный HA, то вместо samba и nfs вам надо ставить iSCSI и подключать через multipath. К тому же можно получить splitbrain в случае если одна из нод умрёт, а когда поднимется мастера не будет. Я проверил, что если ОС корректно выключается, то после поднятия ноды, когда мастера нет, она переходит в режим out-of-date и не становится мастером во избежание сплит брейна. Варианты с кворумом(DRBD и\или pacemaker) и любые извращения из каскадных конструкций DRBD после вашей настройки несостоятельны по причине высокой сложности, другой админ будет долго разбираться. Хотя с тем, что я написал не лучше, не делайте так.

Источник

Оцените статью
Adblock
detector