Конфигурация отказоустойчивого NFS хранилища для VmWare используя GLUSTERFS

Введение.

Glusterfs используется нами для решений различных задач более года. Один при примеров использования - общее хранилище для VmWare.

Схема.

Схема Описание
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, возможно создание правил см. документацию)

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 700
on 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)

Об авторе

Profile автора

ru/jobs/linux_gluster_nfs_for_vmware.txt · Last modified: 2015/03/12 17:11 by admin
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki