Строим кластер на CentOS 6 и iscsi в Nas4Free
В данной статье я Вам расскажу о построении кластера на основе CentOS 6 и таргетов iSCSI.
Задача: экономичность дискового пространства, увеличить отказоустойчивость и производительность системы.
Сервера:
storage (установлен Nas4Free на флешку, диски собраны на аппаратном RAID 10)
rcstar-node01 – 160gb SATA 2
rcstar-node02 – 160gb SATA 2
rcstar-node03 – 160gb SATA 2
rcstar-manager – 320gb SATA 2
В качестве файловой системы я выбрал GFS2 – кластерная система.
Работаем с CentOS.
Для начала мы отключим не нужное и обновим систему (все сервера):
Приводим строку в файле /etc/selinux/config к виду:
1 | SELINUX=disabled |
И выполняем:
1 2 3 4 | yum clean all yum -y upgrade yum -y install gfs2-utils setenforce 0 |
Если у Вас установлен репозиторий epel отрубите перед установкой кластера, либо добавьте ricci и luci в список исключаемых пакетов для epel. Иначе будете иметь проблемы ;)
После загрузки всех серверов продолжим установку кластера. Выполняем на всех серверах
1 | yum groupinstall "High Availability" "Resilient Storage" |
И на нашем менеджере еще ставим:
1 | yum groupinstall "High Availability Management" |
Добавляем правила на всех серверах:
1 2 3 4 5 | iptables -A INPUT -s 192.168.0.0/23 -m udp --dport 5404 -j ACCEPT iptables -A INPUT -s 192.168.0.0/23 -m udp --dport 5405 -j ACCEPT iptables -A INPUT -s 192.168.0.0/23 -m tcp --dport 1111 -j ACCEPT iptables -A INPUT -s 192.168.0.0/23 -m tcp --dport 21064 -j ACCEPT iptables -A INPUT -s 192.168.0.0/23 -m tcp --dport 16851 -j ACCEPT |
И на менеджере выполняем еще одну:
1 | iptables -A INPUT -s 192.168.0.1/23 -m tcp --dport 8084 -j ACCEPT |
И снова на всех
1 | service iptables save |
таблица сервисов:
1 2 3 4 5 | 5404, 5405 UDP corosync/cman (Cluster Manager) 11111 TCP ricci (вещает все ноды об изменениях в кластере) 21064 TCP dlm (Distributed Lock Manager) 16851 TCP modclusterd 8084 TCP luci (вебморда на менеджере) |
На всех нодах устанавливаем пароль пользователю ricci
1 | passwd ricci |
Выполняем команды на всех серверах
1 2 3 4 5 6 | chkconfig ricci on service ricci start chkconfig cman on chkconfig clvmd on chkconfig rgmanager on chkconfig modclusterd on |
Только на менеджере:
1 2 | chkconfig luci on service luci start |
Редактируем файл /etc/hosts на всех серверах:
1 2 3 4 5 6 | 127.0.0.1 localhost.localdomain localhost 192.168.0.1 rcstar-node01 rcstar-node01.rcstar.net 192.168.0.2 rcstar-node02 rcstar-node02.rcstar.net 192.168.0.3 rcstar-node03 rcstar-node03.rcstar.net 192.168.0.10 manager manager.rcstar.net 192.168.0.11 storage storage.rcstar.net |
Заходим по IP
https://192.168.0.10:8084
Дальнейшие два действия выполняются в веб-интерфейсе и интуитивно понятны, по этому я не буду их детально описывать.
Вводим пароль к учетной запись root, создаем кластер с именем RcSTAR, вводим в ноды в кластер (выбирайте перезагрузку ноды и шаринг медиа).
Создаем в Nas4Free iscsi порталы и цели, в аутентификации указываем пароли и пользователи. На каждой ноде настраиваем таргет, указываем CHAP и пароль с Nas4Free.
На любой из нод выполняем:
1 2 | iscsiadm -m discovery -t sendtargets -p storage service iscsi restart |
смотрим как подключился диск iscsi:
1 | dmesq| tail |
У меня он определился, как sdb. Создаем первичный раздел и форматируем в GFS2 на sdb1:
fdisk /dev/sdb
vgcreate stor_vg /dev/sdb1
vcreate -L +1TB -n stor_lv stor_vg
1 | mkfs.gfs2 -p lock_dlm -t RcSTAR:storage -j 2 /dev/mapper/stor_vg-stor_lv |
Я создал 2 журнала, и допустил ошибку. Вы можете создать сразу больше журналов, либо выполнить команду gfs2_jadd -j2 /home после монтирования. Эта команда добавит еще 2 журнала.
В параметре -t Указывайте имя Вашего кластера (у меня RcSTAR) и имя тома.
Добавляем строку в ftsab для автомонтирования раздела в каждой ноде.
1 | /dev/mapper/stor_vg-stor_lv /home gfs2 defaults 0 0 |
Перезагружаем все ноды. При правильной настройке все ноды должны подхватить таргет, который настраивался на одной ноде. Если же нет – смотрим логи.
Настраиваем сервисы как надо ;) Можете добавить в сеть лоадбалансер (haproxy,Varnish) и спокойно дальше дышать.
При настройке кластера я использовал также bonding (LACP, агрегация каналов). Напишу чуть пожже свою статью.
Пока что есть эти –
Ви маєте увійти, щоб оприлюднити коментар.