Almacenamiento de alta disponibilidad con GlusterFS en Debian 8 - Mirror en dos servidores de almacenamiento

Almacenamiento de alta disponibilidad con GlusterFS en Debian 8 - Mirror en dos servidores de almacenamiento

Este tutorial muestra cómo configurar un almacenamiento de alta disponibilidad con dos servidores de almacenamiento (Debian Jessie) que utiliza GlusterFS. Cada servidor de almacenamiento será un espejo del otro servidor de almacenamiento, y los archivos se replicarán automáticamente en ambos nodos de almacenamiento. El sistema del cliente (Debian 8 también) podrá acceder al almacenamiento como si fuera un sistema de archivos local. GlusterFS es un sistema de archivos en clúster capaz de escalar hasta varios peta-bytes. Agrega varios ladrillos de almacenamiento sobre la interconexión Infiniband RDMA o TCP / IP en un gran sistema de archivos de red paralelos. Los bloques de almacenamiento se pueden hacer de cualquier hardware básico, como los servidores x86_64 con SATA-II RAID e Infiniband HBA.

Nota preliminar de 1

En este tutorial, usaré tres sistemas, dos servidores y un cliente:

  • server1.example.com: dirección IP 192.168.1.100 (servidor)
  • server2.example.com: dirección IP 192.168.1.101 (servidor)
  • client1.example.com: dirección IP 192.168.1.102 (cliente)

Los tres sistemas deberían poder resolver los nombres de host de los otros sistemas. Si esto no se puede hacer a través de DNS, debe editar el archivo / etc / hosts para que se vea como sigue en los tres sistemas:

nano / etc / hosts

127.0.0.1 servidor local 192.168.1.100 servidor1.example.com servidor1 192.168.1.101 servidor2.example.com servidor2 192.168.1.102 cliente1.example.com cliente1 # Las siguientes líneas son deseables para hosts con capacidad IPv6 :: 1 localhost ip6-localhost ip6-loopback ff02 :: 1 ip6-allnodes ff02 :: 2 ip6-allrouters

(También es posible usar direcciones IP en lugar de nombres de host en la siguiente configuración. Si prefiere usar direcciones IP, no tiene que preocuparse de si los nombres de host pueden resolverse o no).

2 Configuración de los servidores GlusterFS

server1.example.com/server2.example.com:

La última versión de GlusterFS está disponible como paquete Debian de gluster.org. Podemos instalarlo de la siguiente manera:

Agregamos la clave pública del repositorio de Debian de gluster.org en ambos servidores.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key add -

A continuación, agregue el repositorio GlusterFS (¡el comando es una línea!)

echo deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main> /etc/apt/sources.list.d/gluster.list

y actualiza la lista de repositorios.

apt-get update

Ahora podemos instalar el software del servidor GlusterFS con apt.

apt-get -y install glusterfs-server

El comando

glusterfsd –version

Ahora debería mostrar la versión de GlusterFS que acaba de instalar (3.7.9 en este caso):

[correo electrónico protegido]: / # glusterfsd –version
glusterfs 3.7.9 construido en Mar 23 2016 05: 24: 49
Revisión del repositorio: git: //git.gluster.com/glusterfs.git
Copyright (c) 2006-2013 Red Hat, Inc. <http://www.redhat.com/>
GlusterFS viene SIN ABSOLUTAMENTE NINGUNA GARANTÍA.
Se le autoriza bajo su elección del GNU Lesser
Licencia pública general, versión 3 o cualquier versión posterior (LGPLv3)
o posterior), o la Licencia Pública General de GNU, versión 2 (GPLv2),
en todos los casos, según lo publicado por la Free Software Foundation.
[correo electrónico protegido]: / #

Si usa un firewall, asegúrese de que los puertos TCP 111, 24007, 24008, 24009- (24009 + número de bloques en todos los volúmenes) estén abiertos en server1.example.com y server2.example.com.

Glusterfs almacenará sus datos en el directorio / datos en los servidores. Esta ubicación puede ser un directorio normal si tiene una instalación más pequeña o si usa una partición de disco duro separada y la monta como / data.

Ejecutar en ambos servidores:

mkdir / data

para crear el directorio de datos.

A continuación, debemos agregar server2.example.com al grupo de almacenamiento de confianza (tenga en cuenta que estoy ejecutando todos los comandos de configuración de GlusterFS desde server1.example.com, pero también puede ejecutarlos desde server2.example.com porque la configuración se repite entre los nodos de GlusterFS; solo asegúrese de usar los nombres de host o direcciones IP correctos):

server1.example.com:

En server1.example.com, ejecuta

sondeo de pares de gluster server2.example.com

[correo electrónico protegido]: / # gluster peer probe server2.example.com
sonda de pares: éxito.
[correo electrónico protegido]: / #

El estado del grupo de almacenamiento confiable ahora debería ser similar a esto:

estado de grupo de Gluster

[correo electrónico protegido]: / # gluster peer status
Número de pares: 1

Nombre de host: server2.example.com
Uuid: 0f7ee46c-6a71-4a31-91d9-6076707eff95
Estado: Peer in Cluster (Conectado)
[correo electrónico protegido]: / #

A continuación, creamos el recurso compartido llamado testvol con dos réplicas (tenga en cuenta que el número de réplicas es igual al número de servidores en este caso porque queremos configurar la creación de reflejo) en server1.example.com y server2.example.com en el Directorio / data / testvol (esto será creado si no existe):

gluster volume create testvol replica 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force

[email protected]: / # volumen de gluster create testvol replica 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force
volume create: testvol: success: inicia el volumen para acceder a los datos
[correo electrónico protegido]: / #

Comience el volumen:

gluster volume start testvol

[correo electrónico protegido]: / # volumen de gluster start testvol
inicio de volumen: testvol: éxito
[correo electrónico protegido]: / #

Nuestro volumen de prueba se ha iniciado con éxito.

Es posible que el comando anterior te diga que la acción no fue exitosa:

[correo electrónico protegido]: ~ # volumen de gluster start testvol
El volumen de inicio testvol no ha tenido éxito
[correo electrónico protegido]: ~ #

En este caso deberías comprobar la salida de ...

server1.example.com/server2.example.com:

netstat -tap | grep glusterfsd

en ambos servidores.

Si obtienes una salida como esta ...

[correo electrónico protegido]: / # netstat -tap | grep glusterfsd
tcp 0 0 *: 49152 *: * ESCUCHAR 8007 / glusterfsd
tcp 0 0 server1.example.c: 65533 server1.example.c: 24007 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server2.example.c: 65531 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server1.example.c: 65532 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server1.example.c: 65531 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server2.example.c: 65526 ESTABLISHED 8007 / glusterfsd
[correo electrónico protegido]: / #

... todo está bien, pero si no obtienes ningún resultado ...

[correo electrónico protegido]: ~ # netstat -tap | grep glusterfsd
[correo electrónico protegido]: ~ #

… Reinicie el daemon de GlusterFS en el servidor correspondiente (server1.example.com en este caso):

server2.example.com:

service glusterfs-server restart

A continuación, compruebe la salida de ...

netstat -tap | grep glusterfsd

... otra vez en ese servidor - ahora debería verse así:

[correo electrónico protegido]: / # netstat -tap | grep glusterfsd
tcp 0 0 *: 49152 *: * ESCUCHAR 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server2.example.c: 65532 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server1.example.c: 65526 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server2.example.c: 65525 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 65533 server2.example.c: 24007 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server1.example.c: 65524 ESTABLISHED 7852 / glusterfsd
[correo electrónico protegido]: / #

Ahora volvamos a server1.example.com:

server1.example.com:

Puede verificar el estado del volumen con el comando

información de volumen de gluster

[correo electrónico protegido]: / # información de volumen de glosa

Nombre del volumen: testvol
Tipo: Replicar
Volume ID: 3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Estado: iniciado
Número de ladrillos: 1 x 2 = 2
Tipo de transporte: tcp
Ladrillos:
Brick1: server1.example.com:/data/testvol
Brick2: server2.example.com:/data/testvol
Opciones reconfiguradas:
performance.readdir-ahead: en
[correo electrónico protegido]: / #

De forma predeterminada, todos los clientes pueden conectarse al volumen. Si desea otorgar acceso a client1.example.com (= 192.168.1.102) solamente, ejecute:

volumen de deslumbramiento establecido testvol auth.allow 192.168.1.102

[correo electrónico protegido]: / # conjunto de volúmenes de gluster testvol auth.allow 192.168.1.102
conjunto de volúmenes: éxito
[correo electrónico protegido]: / #

Tenga en cuenta que es posible utilizar comodines para las direcciones IP (como 192.168. *) Y que puede especificar varias direcciones IP separadas por comas (por ejemplo, 192.168.1.102,192.168.1.103).

La información del volumen ahora debería mostrar el estado actualizado:

información de volumen de gluster

[correo electrónico protegido]: / # información de volumen de glosa

Nombre del volumen: testvol
Tipo: Replicar
Volume ID: 3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Estado: iniciado
Número de ladrillos: 1 x 2 = 2
Tipo de transporte: tcp
Ladrillos:
Brick1: server1.example.com:/data/testvol
Brick2: server2.example.com:/data/testvol
Opciones reconfiguradas:
auth.allow: 192.168.1.102
performance.readdir-ahead: en
[correo electrónico protegido]: / #

3 Configuración del cliente GlusterFS

client1.example.com:

En el sistema cliente, primero agregamos la clave pública del repositorio Debian de gluster.org.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key add -

A continuación, agregue el repositorio GlusterFS (¡el comando es una línea!)

echo deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main> /etc/apt/sources.list.d/gluster.list

y actualiza la lista de repositorios.

apt-get update

Ahora podemos instalar el cliente GlusterFS de la siguiente manera.

apt-get -y install glusterfs-client

Luego creamos el siguiente directorio:

mkdir / mnt / glusterfs

¡Eso es! Ahora podemos montar el sistema de archivos GlusterFS en / mnt / glusterfs con el siguiente comando:

mount.glusterfs server1.example.com:/testvol / mnt / glusterfs

(¡En lugar de server1.example.com, también puede usar server2.example.com en el comando anterior!)

Ahora debería ver el nuevo recurso compartido en las salidas de ...

montar

[correo electrónico protegido]: / # mount
sysfs en / sys tipo sysfs (rw, nosuid, nodev, noexec, relatime)
proc / proc tipo proc (rw, nosuid, nodev, noexec, relatime)
udev en / dev tipo devtmpfs (rw, relatime, tamaño = 10240k, nr_inodes = 125556, modo = 755)
devpts en / dev / pts tipo devpts (rw, nosuid, noexec, relatime, gid = 5, modo = 620, ptmxmode = 000)
tmpfs on / run tipo tmpfs (rw, nosuid, relatime, tamaño = 204220k, modo = 755)
/ dev / sda1 on / tipo ext4 (rw, relatime, errors = remount-ro, data = ordered)
securityfs en / sys / kernel / tipo de seguridad securityfs (rw, nosuid, nodev, noexec, relatime)
tmpfs en / dev / shm tipo tmpfs (rw, nosuid, nodev)
tmpfs on / run / lock type tmpfs (rw, nosuid, nodev, noexec, relatime, size = 5120k)
tmpfs en / sys / fs / cgroup tipo tmpfs (ro, nosuid, nodev, noexec, modo = 755)
cgroup en / sys / fs / cgroup / systemd tipo cgroup (rw, nosuid, nodev, noexec, relatime, xattr, release_agent = / lib / systemd / systemd-cgroups-agent, name = systemd)
pstore en / sys / fs / pstore tipo pstore (rw, nosuid, nodev, noexec, relatime)
cgroup en / sys / fs / cgroup / cpuset tipo cgroup (rw, nosuid, nodev, noexec, relatime, cpuset)
cgroup en / sys / fs / cgroup / cpu, cpuacct tipo cgroup (rw, nosuid, nodev, noexec, relatime, cpu, cpuacct)
cgroup en / sys / fs / cgroup / devices tipo cgroup (rw, nosuid, nodev, noexec, relatime, dispositivos)
cgroup en / sys / fs / cgroup / freezer tipo cgroup (rw, nosuid, nodev, noexec, relatime, congelador)
cgroup en / sys / fs / cgroup / net_cls, net_prio tipo cgroup (rw, nosuid, nodev, noexec, relatime, net_cls, net_prio)
cgroup en / sys / fs / cgroup / blkio tipo cgroup (rw, nosuid, nodev, noexec, relatime, blkio)
cgroup en / sys / fs / cgroup / perf_event tipo cgroup (rw, nosuid, nodev, noexec, relatime, perf_event)
systemd-1 en / proc / sys / fs / binfmt_misc tipo autofs (rw, relatime, fd = 23, pgrp = 1, timeout = 300, minproto = 5, maxproto = 5, directo)
mqueue en / dev / mqueue tipo mqueue (rw, relatime)
depuraciones en / sys / kernel / debug tipo debugfs (rw, relatime)
hugetlbfs en / dev / hugepages tipo hugetlbfs (rw, relatime)
rpc_pipefs on / run / rpc_pipefs tipo rpc_pipefs (rw, relatime)
fusectl en / sys / fs / fusible / conexiones tipo fusectl (rw, relatime)
server1.example.com:/testvol en / mnt / glusterfs tipo fuse.glusterfs (rw, relatime, user_id = 0, group_id = 0, default_permissions, allow_other, max_read = 131072)
[correo electrónico protegido]: / #

... y ...

df -h

[correo electrónico protegido]: / # df -h
Tamaño del sistema de archivos utilizado Utilizar Use% Mounted on
/ dev / sda1 57G 1.1G 53G 2% /
udev 10M 0 10M 0% / dev
tmpfs 200M 4.6M 195M 3% / ejecutar
tmpfs 499M 0 499M 0% / dev / shm
tmpfs 5.0M 0 5.0M 0% / ejecutar / bloqueo
tmpfs 499M 0 499M 0% / sys / fs / cgroup
server1.example.com:/testvol 57G 21G 34G 39% / mnt / glusterfs
[correo electrónico protegido]: / #

En lugar de montar el recurso compartido GlusterFS de forma manual en el cliente, puede modificar / etc / fstab para que el recurso compartido se monte automáticamente cuando se inicia el cliente.

Abra / etc / fstab y añada la siguiente línea:

nano / etc / fstab

[...] server1.example.com:/testvol / mnt / glusterfs glusterfs por defecto, _netdev 0 0

(De nuevo, en lugar de server1.example.com, también puedes usar server2.example.com).

Para probar si su / etc / fstab modificado está funcionando, reinicie el cliente:

reiniciar

Después del reinicio, debe encontrar la parte en las salidas de ...

df -h

... y ...

montar

4 Prueba de replicación GlusterFS

Ahora vamos a crear algunos archivos de prueba en el recurso compartido de GlusterFS:

client1.example.com:

touch / mnt / glusterfs / test1
touch / mnt / glusterfs / test2

Ahora revisemos el directorio / data en server1.example.com y server2.example.com. Los archivos test1 y test2 deben estar presentes en cada nodo:

server1.example.com/server2.example.com:

ls -l / data / testvol

[correo electrónico protegido]: / # ls -l / data / testvol /
0 totales
-rw-r – r– raíz raíz de 2 0 Mar 23 2016 test1
-rw-r – r– raíz raíz de 2 0 Mar 23 2016 test2

Ahora apagamos server1.example.com y agregamos / borramos algunos archivos en el recurso compartido de GlusterFS en client1.example.com.

server1.example.com:

shutdown-h now

client1.example.com:

touch / mnt / glusterfs / test3
touch / mnt / glusterfs / test4
rm -f / mnt / glusterfs / test2

Los cambios deben ser visibles en el directorio / data / testvol en server2.example.com:

server2.example.com:

ls -l / data / testvol

[correo electrónico protegido]: / # ls -l / data / testvol
8 totales
-rw-r – r– raíz raíz de 2 0 Mar 23 08: 06 test1
-rw-r – r– raíz raíz de 2 0 Mar 23 08: 09 test3
-rw-r – r– raíz raíz de 2 0 Mar 23 08: 09 test4
[correo electrónico protegido]: / #

Vamos a iniciar server1.example.com nuevamente y echemos un vistazo al directorio / data:

server1.example.com:

ls -l / data / testvol

[correo electrónico protegido]: / # ls -l / data / testvol
0 totales
-rw-r – r– raíz raíz de 2 0 Mar 23 08: 06 test1
-rw-r – r– raíz raíz de 2 0 Mar 23 08: 09 test3
-rw-r – r– raíz raíz de 2 0 Mar 23 08: 09 test4
[correo electrónico protegido]: / #

Como puede ver, server1.example.com sincronizó automáticamente el cambio. En caso de que el cambio no se haya sincronizado aún, entonces esto es fácil de solucionar, todo lo que tenemos que hacer es invocar un comando de lectura en el recurso compartido GlusterFS en client1.example.com, por ejemplo:

client1.example.com:

ls -l / mnt / glusterfs /

[correo electrónico protegido]: / # ls -l / mnt / glusterfs /
0 totales
-rw-r – r– raíz raíz de 1 0 Mar 23 08: 06 test1
-rw-r – r– raíz raíz de 1 0 Mar 23 08: 09 test3
-rw-r – r– raíz raíz de 1 0 Mar 23 08: 09 test4
[correo electrónico protegido]: / #

5 Enlaces

Publicación relacionada

Deje un comentario.

Este sitio usa Akismet para reducir el correo no deseado. Descubra cómo se procesan los datos de sus comentarios.