Glusterfs используется нами для решений различных задач более года. Один при примеров использования - общее хранилище для VmWare.
Процесс развертывания ОС и базовая конфигурация не будет рассматриваться в деталях.
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. Результаты тестов
Из опыта работы с glusterfs я рекомендую использовать минимум три узла.
В случае трех узлов для pacemaker:
crm configure property no-quorum-policy=false
для gluster:
gluster volume set VOLUMENAME cluster.quorum-count 2
Сегодня обновил систему до 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)
Profile автора