Конфигурация отказоустойчивого NFS хранилища для VmWare используя GLUSTERFS
Введение.
Glusterfs используется нами для решений различных задач более года. Один при примеров использования - общее хранилище для VmWare.
Схема.
Схема | Описание |
| 1.Конфигурация железа: 2 CPU Xeon E5410/DDR2 8GB/RAID Promise/2 HDD SAS 15k 300GB/2 HDD SAS 15k 600GB/2xEthernet 1Gbit 2xports
(RAID configuration - RAID1 - mirror)
2.Сетевая конфигурация: Каждая сеть обслуживается стеком из двух коммутаторов. Каждый сервер подключен к двум коммутаторам каждой сети
3.адресация:
gluster backend network (GBN) - 172.18.0.0/24
gluster frontend network (GFN) - 10.255.254.0/24
4.gluster servers IP адресация:
glustre-vmware1 - GBN:172.18.0.1,GFN:10.255.254.1
glustre-vmware2 - GBN:172.18.0.2,GFN:10.255.254.2 |
Развертывание и базовая конфигурация
Процесс развертывания ОС и базовая конфигурация не будет рассматриваться в деталях.
1. Установка Linux Centos 6.3 x64 на 300GB raid disk.
Форматируем (ext3) и монтирум 600GB raid disk в директорию /big. (используйте UUID для указания точек монтирования в /etc/fstab)
Создайте дирректорию - /small
2. Конфигурация сети.
Необходимо создать два bonds интерфейса mode=6 ALB
echo "alias bond0 bonding" >> /etc/modprobe.d/bonding.conf
echo "alias bond1 bonding" >> /etc/modprobe.d/bonding.conf
Конфигурация интерфейсов (для примера описан только один)
cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE="bond0"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=172.18.0.1
NETMASK=255.255.255.0
TYPE="bond"
BONDING_OPTS="miimon=100 mode=6"
cat /etc/sysconfig/network-scripts/ifcfg-eth0 (for ifcfg-eth1 the same)
DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
SLAVE="yes"
TYPE="ethernet"
MASTER="bond0"
3. Установка ПО
cd /etc/yum.repos.d/
wget http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/glusterfs-epel.repo
mkdir /backup
cd /backup
wget http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -i epel-release-6-8.noarch.rpm
yum update
yum install mc htop blktrace ntp dstat nfs glusterfs* pacemaker corosync openssh-clients
4. Желательно отключить Selinux
cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
5. Обнуление IPTABLES. (All accept, возможно создание правил см. документацию)
6. Настройка запуска сервисов при загрузке
chkconfig ntpd on
chkconfig glusterd on
chkconfig corosync on
chkconfig pacemaker on
7. Перезагрузка серверов
reboot
Конфигурация сервисов
1. Сконфигурируйте файл hosts:
echo "172.18.0.1" gluster-vmware1" >> /etc/hosts
echo "172.18.0.1" gluster-vmware2" >> /etc/hosts
2. Сконфигурируйте ntpd
3. Сконфигурируйте GLUSTERFS (конигурацию проводить на одном из серверов, например gluster-vmware1)
gluster peer probe gluster-vmware2
gluster volume create small replica 2 transport tcp gluster-vmware1:/small gluster-vmware2:/small
gluster volume create big replica 2 transport tcp gluster-vmware1:/big gluster-vmware2:/big
gluster start small
gluster start big
Проверите, что все volume запущены :
gluster volume info
Добавьте IP для доступа по NFS
gluster volume set small nfs.rpc-auth-allow <через запятую IP адреса или имена хостов узлов %%VmWare%%>
gluster volume set big nfs.rpc-auth-allow <через запятую IP адреса или имена хостов узлов %%VmWare%%>
4. Сконфигурируйте corosync
На обоих сервера gluster
cat /etc/corosync/corosync.conf
compatibility: whitetank
totem {
version: 2
secauth: on
threads: 0
interface {
ringnumber: 0
bindnetaddr: 10.255.254.N # где N - IP адрес front end network
mcastaddr: 226.94.1.1
mcastport: 5405
ttl: 1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: yes
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
cat /etc/corosync/service.d/pcmk
service {
# Load the Pacemaker Cluster Resource Manager
name: pacemaker
ver: 1
}
END
Создайте authkey на одном из серверов и скопируйте его на другой.
corosync-keygen
Перезагрузите сервисы.
service corosync restart
service pacemaker restart
Проверите работоспособность
crm status
Last updated: Fri Jan 11 09:31:55 2013
Last change: Tue Dec 11 14:33:11 2012 via crm_resource on gluster-vmware1
Stack: openais
Current DC: gluster-vmware1 - partition with quorum
Version: 1.1.7-6.el6-148fccfd5985c5590cc601123c6c16e966b85d14
2 Nodes configured, 2 expected votes
============
Online: [ gluster-vmware1 gluster-vmware2 ]
5. Сконфигурируйте pacemaker
crm
crm(live)#
crm(live)#configure
crm(live)configure#
crm(live)configure#crm configure property no-quorum-policy=true
crm(live)configure#crm configure property stonith-enabled=false
crm(live)configure#primitive FirstIP ocf:heartbeat:IPaddr2 params ip="10.255.254.30" cidr_netmask="24" op monitor interval="30s" on_fail="standby"
crm(live)configure#commit
Тюнинг
ОС:
cat /etc/sysctl.conf
# increase Linux TCP buffer limits
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
# increase default and maximum Linux TCP buffer sizes
net.ipv4.tcp_rmem = 4096 262144 8388608
net.ipv4.tcp_wmem = 4096 262144 8388608
# increase max backlog to avoid dropped packets
net.core.netdev_max_backlog=2500
net.ipv4.tcp_mem=8388608 8388608 8388608
GLUSTER:
gluster volume set big nfs.trusted-sync on
gluster volume set small nfs.trusted-sync on
Тестирование
1. Подмонтируйте партиции к узлам VmWare.
IP адрес для монтирования: 10.255.254.30
2. Создание тестовой VM
Мы развернули win7 x86 на thick disk размером 40GB. На виртуалку установили Performance Test
3. Результаты тестов
gluster nfs.trusted-sync параметр | результаты тестов |
off | |
on | |
PS.
Из опыта работы с glusterfs я рекомендую использовать минимум три узла.
В случае трех узлов для pacemaker:
crm configure property no-quorum-policy=false
для gluster:
gluster volume set VOLUMENAME cluster.quorum-count 2
Centos/Redhat 6.4
Сегодня обновил систему до centos 6.4.
Команда Crm в новом pacemaker-cli исчезла.
Если хотите использовать команду crm с centos/redhat 6.4 необходимо установить crmsh: yum install crmsh
Я использую следующий репозиторий:
[network_ha-clustering]
name=High Availability/Clustering server technologies (RedHat_RHEL-6)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/network:/ha-clustering/RedHat_RHEL-6/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/network:/ha-clustering/RedHat_RHEL-6/repodata/repomd.xml.key
enabled=1
Или используйте pcs (yum install pcs)
Об авторе