=======Конфигурация отказоустойчивого NFS хранилища для VmWare используя GLUSTERFS ======= ==== Введение. ==== [[http://gluster.org|Glusterfs]] используется нами для решений различных задач более года. Один при примеров использования - общее хранилище для %%VmWare%%. ==== Схема. ==== ^Схема ^Описание ^ | {{:ru:jobs:gluster_scheme.jpg?400|400}} | 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, возможно создание правил см. [[http://www.gluster.org/community/documentation/index.php/Main_Page|документацию]]) 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. На виртуалку установили [[http://www.passmark.com/products/pt.htm|Performance Test]] 3. Результаты тестов ^ gluster nfs.trusted-sync параметр ^ результаты тестов ^ | **off** | {{:ru:jobs:perfresglustersync.jpg?700|700}} | | **on** |{{:ru:jobs:perfresglusterasync.jpg?700|700}} | ==== 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) ==== Об авторе ==== [[https://www.linkedin.com/pub/alexey-vyrodov/59/976/16b|Profile]] автора