Friday, February 21, 2014

Como Instalar GlusterFS en Modo Replica con 4 Nodos en Debian Wheezy 7.4

Tenia bastante rato que no escribía, esta vez muestro como instalar un filesystem distribuido llamado glusterFS. Los 4 servidores tienen una instalación mínima de Debian con 512MB de ram y 5GB de espacio en disco para / (en LVM).

Colocar la ip de manera estatica en todos los servidores modificando el archivo /etc/network/interfaces
iface eth0 inet static 
       address 192.168.0.106
       netmask 255.255.255.0
       network 192.168.0.0
       broadcast 192.168.0.255
       gateway 192.168.0.1
       dns-nameservers 8.8.8.8
Agregar los nombres de los servidores en /etc/hosts de los 4 servidores
192.168.0.106 gls-brick-1
192.168.0.107 gls-brick-1-replica
192.168.0.108 gls-brick-2
192.168.0.109 gls-brick-2-replica
Añadir la llave GPG to apt
wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.4/3.4.2/Debian/pubkey.gpg | apt-key add -
Añadir la fuente y actualizar el repositorio
echo deb http://download.gluster.org/pub/gluster/glusterfs/3.4/3.4.2/Debian/apt wheezy main > /etc/apt/sources.list.d/gluster.list
aptitude update 
Instalar el paquete glusterfs-server en los 4 servidores
aptitude install glusterfs-server
The following NEW packages will be installed:
fuse{a} glusterfs-client{a} glusterfs-common{a} glusterfs-server libaio1{a} libibverbs1{a} liblvm2app2.2{a} librdmacm1{a}
Los discos que van a ser utilizados fueron agregados en caliente, para poder usarlos sin reniciar hay que primero escanear el bus
Discos actuales
fdisk -l |grep sd
...
Disk /dev/sda: 5368 MB, 5368709120 bytes
Scan del host bus
echo "- - -" > /sys/class/scsi_host/host0/scan
Nuevo disco agregado /dev/sdb
fdisk -l |grep sd
...
Disk /dev/sda: 5368 MB, 5368709120 bytes
Disk /dev/sdb: 53.7 GB, 53687091200 bytes
Agregar los servidores al repositorio de confianza desde el servidor gls-brick-1 ejecutamos el comando gluster peer probe a los demas servidores. Nota: hacer un auto probe del servidor gls-brick-1 da un error, porque por defecto el ya esta agregado como al repositorio seguro.
root@gls-brick-1:~# gluster peer probe gls-brick-1-replica
peer probe: success
root@gls-brick-1:~# gluster peer probe gls-brick-2
peer probe: success
root@gls-brick-1:~# gluster peer probe gls-brick-2-replica
peer probe: success
Formatear el disco /dev/sdb con fdisk y crear una sola particion (/dev/sdb1). Formatear en xfs para montar el brick. Aplicar en los 4 sevidores. Nota: instalar el paquete xfsprogs.
fdisk /dev/sdb
aptitude install xfsprogs
mkfs.xfs -i size=512 /dev/sdb1
Crear el punto de montura y montar la partición como un Gluster "Brick" en los 4 servidores.
mkdir -p /data/cloudstack && mount /dev/sdb1 /data/cloudstack && mkdir -p /data/cloudstack/brick

root@gls-brick-1:~# df -h Filesystem Size Used Avail Use% Mounted on rootfs 4.3G 823M 3.2G 21% / udev 10M 0 10M 0% /dev tmpfs 49M 256K 49M 1% /run /dev/mapper/gls--brick--1-root 4.3G 823M 3.2G 21% / tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 98M 0 98M 0% /run/shm /dev/sda1 228M 18M 199M 9% /boot /dev/sdb1 50G 33M 50G 1% /data/cloudstack
Colocar el punto de montura en los 4 servidores
echo "/dev/sdb1 /data/cloudstack xfs defaults 0 0"  >> /etc/fstab
Crear el volume en gluster. Cabe destacar que el orden en el que se ponga los bricks determinara como van a hacer replicados los nodos. Desde gls-brick-1 ejecutamos el siguente comando
root@gls-brick-1:~# gluster volume create cloudstack-primary-volume replica 2 transport tcp gls-brick-1:/data/cloudstack/brick gls-brick-1-replica:/data/cloudstack/brick gls-brick-2:/data/cloudstack/brick gls-brick-2-replica:/data/cloudstack/brick
volume create: cloudstack-primary-volume: success:
please start the volume to access data
Arrancar el volumen
root@gls-brick-1:~# gluster volume start cloudstack-primary-volume
volume start: cloudstack-primary-volume: success
En cualquier servidor ejecutar el comando para obetener informacion del volumen.
root@gls-brick-2-replica:~# gluster volume info

Volume Name: cloudstack-primary-volume
Type: Distributed-Replicate
Volume ID: a76e8102-e5d5-489f-979c-ce1b519669ba
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: gls-brick-1:/data/cloudstack/brick
Brick2: gls-brick-1-replica:/data/cloudstack/brick
Brick3: gls-brick-2:/data/cloudstack/brick
Brick4: gls-brick-2-replica:/data/cloudstack/brick