-Almacenamiento de alta disponibilidad con GlusterFS en Debian 8 - Espejo a través de dos servidores de almacenamiento

-Almacenamiento de alta disponibilidad con GlusterFS en Debian 8 - Espejo a través de 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 replican automáticamente a través de ambos nodos de almacenamiento. El sistema cliente (Debian 8 también) será capaz de acceder al almacenamiento como si fuera un sistema de archivos local. GlusterFS es un sistema de archivos en clúster capaz de escalar a varios peta-bytes. Agrega varios ladrillos de almacenamiento de más de Infiniband RDMA o interconexión de TCP / IP en un gran sistema de archivos de red en paralelo. ladrillos de almacenamiento pueden estar hechas de cualquier hardware de los productos básicos, tales como servidores de x86_64 con SATA-II RAID y Infiniband HBA.

1 Nota preliminar

En este tutorial, Voy a utilizar 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 deben ser capaces de resolver los nombres de host de los de 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 localhost
192.168.1.100 server1.example.com server1
192.168.1.101 server2.example.com servidor2
192.168.1.102 client1.example.com client1
# Las siguientes líneas son deseables para hosts capaces IPv6
:: 1 localhost ip6-localhost ip6-bucle invertido
FF02 :: 1 IP6-allnodes
FF02 :: 2 IP6-allrouters

(También es posible utilizar direcciones IP en lugar de nombres de host en la siguiente configuración. Si prefiere utilizar direcciones IP, usted no tiene que preocuparse acerca 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 GlusterFS está disponible como paquete Debian desde gluster.org. Podemos instalarlo de la siguiente manera:

Añadimos la clave pública del gluster.org fuente de la distribución 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, añadir el repositorio GlusterFS (el comando es una línea!)

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

y actualizar la lista de repositorios.

apt-get update

Ahora podemos instalar el software de servidor GlusterFS con apt.

apt-get -y install GlusterFS-servidor

El comando

glusterfsd --version

debe mostrar ahora la versión GlusterFS que acaba de instalar (3.7.9 en este caso):

[Email protected]: / # glusterfsd --version
GlusterFS 3.7.9 construida sobre Mar 23 2016 05: 24: 49
revisión del repositorio: git: //git.gluster.com/glusterfs.git
Copyright (C) 2006-2013 sombrero rojo, Cª. <http://www.redhat.com/>
GlusterFS se ofrece SIN GARANTÍA.
Se concede con licencia según su elección de la GNU Lesser
Licencia publica general, versión 3 o cualquier versión posterior (LGPLv3
o después), o la Licencia Pública General de GNU, versión 2 (GPLv2),
en todos los casos según lo publicado por la Fundación para el Software Libre.
[Email protected]: / #

Si utiliza un servidor de seguridad, asegurar que los puertos TCP 111, 24007, 24008, 24009-(24009 + número de ladrillos en todos los volúmenes) están abiertas en server1.example.com y server2.example.com.

GlusterFS deberá 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 utilizar una partición de disco duro independiente y montarlo como / data.

Ejecutar en ambos servidores:

mkdir / data

para crear el directorio de datos.

Siguiente, hay que añadir server2.example.com a la agrupación de almacenamiento de confianza (Tenga en cuenta que estoy corriendo todos los comandos de configuración de GlusterFS server1.example.com, pero que también les puede ejecutar desde server2.example.com debido a que la configuración se repliacted entre los nodos GlusterFS - Sólo asegúrese de usar los nombres de host o direcciones IP correctas):

server1.example.com:

en server1.example.com, correr

Gluster sonda pares server2.example.com

[Email protected]: / # sonda Gluster pares server2.example.com
sonda de pares: el éxito.
[Email protected]: / #

El estado de la agrupación de almacenamiento de confianza ahora debe ser similar a esto:

estado de Gluster pares

[Email protected]: / # estado de Gluster pares
Número de pares: 1

Nombre de host: server2.example.com
Uuid: 0f7ee46c-6a71-4a31-91d9-6076707eff95
Estado: Peer en Racimo (Conectado)
[Email protected]: / #

A continuación, creamos el recurso 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 el duplicado) en server1.example.com y en el server2.example.com datos / directorio / testvol (esto se crea si no existe):

volumen Gluster crear testvol réplica 2 transporte TCP fuerza server2.example.com:/data/testvol server1.example.com:/data/testvol

[Email protected]: / # volumen Gluster crear testvol réplica 2 transporte TCP fuerza server2.example.com:/data/testvol server1.example.com:/data/testvol
Crear volumen: testvol: éxito: tiene que iniciar el volumen de acceder a datos
[Email protected]: / #

Comience el volumen:

Gluster testvol inicio volumen

[Email protected]: / # volumen Gluster testvol inicio
inicio volumen: testvol: éxito
[Email protected]: / #

Nuestro volumen de prueba se ha iniciado con éxito.

Es posible que el comando anterior le indica que la acción no tuvo éxito:

[Email protected]: ~ # volumen Gluster empezar testvol
A partir testvol volumen no ha tenido éxito
[Email protected]: ~ #

En este caso se debe comprobar la salida del ...

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

netstat -tap | glusterfsd grep

en ambos servidores.

Si se obtiene una salida como esta ...

[Email protected]: / # netstat -tap | glusterfsd grep
tcp 0 0 *: 49152 *: * LISTEN 8007 / glusterfsd
tcp 0 0 server1.example.c: 65533 server1.example.c: 24007 ESTABLECIDO 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server2.example.c: 65531 ESTABLECIDO 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server1.example.c: 65532 ESTABLECIDO 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server1.example.c: 65531 ESTABLECIDO 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server2.example.c: 65526 ​​ESTABLECIDO 8007 / glusterfsd
[Email protected]: / #

... todo esta bien, pero si usted no recibe ninguna salida ...

[Email protected]: ~ # netstat -tap | glusterfsd grep
[Email protected]: ~ #

... reiniciar el demonio GlusterFS en el servidor correspondiente (server1.example.com en este caso):

server2.example.com:

GlusterFS-servidor de servicios de reinicio

A continuación, comprobar la salida del ...

netstat -tap | glusterfsd grep

... de nuevo en ese servidor - ahora debería tener este aspecto:

[Email protected]: / # netstat -tap | glusterfsd grep
tcp 0 0 *: 49152 *: * LISTEN 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server2.example.c: 65532 ESTABLECIDO 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server1.example.c: 65526 ​​ESTABLECIDO 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server2.example.c: 65525 ESTABLECIDO 7852 / glusterfsd
tcp 0 0 server2.example.c: 65533 server2.example.c: 24007 ESTABLECIDO 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server1.example.c: 65524 ESTABLECIDO 7852 / glusterfsd
[Email protected]: / #

Ahora, de vuelta a server1.example.com:

server1.example.com:

Puede comprobar el estado del volumen con el comando

información del volumen Gluster

[Email protected]: / # volumen de información Gluster

Nombre de volumen: testvol
Tipo: Replicar
ID de volumen: 3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Estado: Iniciado
Número de Ladrillos: 1 X 2 = 2
Transporte de tipo: tcp
ladrillos:
Brick1: server1.example.com:/data/testvol
Brick2: server2.example.com:/data/testvol
Opciones reconfigurado:
performance.readdir visto bueno: el
[Email protected]: / #

Por defecto, todos los clientes pueden conectarse al volumen. Si desea conceder acceso a client1.example.com (= 192.168.1.102) solamente, correr:

volumen Gluster establecer testvol auth.allow 192.168.1.102

[Email protected]: / # Gluster volumen ajustado auth.allow testvol 192.168.1.102
conjunto de volúmenes: el éxito
[Email protected]: / #

Tenga en cuenta que es posible utilizar caracteres comodín para las direcciones IP (como 192.168.*) Y que se pueden especificar varias direcciones IP separadas por comas (por ejemplo. 192.168.1.102,192.168.1.103).

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

información del volumen Gluster

[Email protected]: / # volumen de información Gluster

Nombre de volumen: testvol
Tipo: Replicar
ID de volumen: 3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Estado: Iniciado
Número de Ladrillos: 1 X 2 = 2
Transporte de tipo: tcp
ladrillos:
Brick1: server1.example.com:/data/testvol
Brick2: server2.example.com:/data/testvol
Opciones reconfigurado:
auth.allow: 192.168.1.102
performance.readdir visto bueno: el
[Email protected]: / #

3 Configuración del cliente GlusterFS

client1.example.com:

En el sistema cliente le añadimos la clave pública de la fuente de la distribución gluster.org primera.

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

A continuación, añadir el repositorio GlusterFS (el comando es una línea!)

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

y actualizar la lista de repositorios.

apt-get update

Ahora podemos instalar el cliente de la siguiente manera GlusterFS.

apt-get -y install GlusterFS-cliente

Entonces se crea el directorio siguiente:

mkdir / mnt / GlusterFS

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

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

(En lugar de server1.example.com se puede también utilizar server2.example.com en el comando anterior!)

Ahora debería ver la nueva participación en las salidas de ...

montar

[Email protected]: # mount /
sysfs en sysfs / tipo sys (rw, nosuid, nodev, noexec, relatime)
proc en el tipo / proc proc (rw, nosuid, nodev, noexec, relatime)
udev en / dev tipo devtmpfs (rw, relatime, tamaño = 10240k, nr_inodes = 125.556, modo = 755)
devpts en / dev / pts escriba devpts (rw, nosuid, noexec, relatime, gid = 5, mode = 620, ptmxmode = 000)
tmpfs sobre / tmpfs escriba Ejecutar (rw, nosuid, relatime, tamaño = 204220k, modo = 755)
/dev / sda1 en / tipo ext4 (rw, relatime, errores = remount-ro, data = ordered)
securityfs en securityfs / sys / kernel / Tipo de seguridad (rw, nosuid, nodev, noexec, relatime)
tmpfs sobre dev / tmpfs / tipo SHM (rw, nosuid, nodev)
tmpfs en tmpfs / run / tipo de bloqueo (rw, nosuid, nodev, noexec, relatime, tamaño = 5120k)
tmpfs en tmpfs / sys / fs / tipo cgroup (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-agente, name = systemd)
PStore en / sys / fs / tipo PStore 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, tipo cpuacct cgroup (rw, nosuid, nodev, noexec, relatime, cpu, cpuacct)
cgroup en / sys / fs / cgroup / dispositivos tipo cgroup (rw, nosuid, nodev, noexec, relatime, dispositivos)
cgroup en / sys / fs / cgroup / congelador tipo cgroup (rw, nosuid, nodev, noexec, relatime, congelador)
cgroup en / sys / fs / cgroup / net_cls, tipo net_prio cgroup (rw, nosuid, nodev, noexec, relatime, net_cls, net_prio)
cgroup en / sys / fs / cgroup / tipo cgroup blkio (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 autofs / fs / tipo binfmt_misc (rw, relatime, fd = 23, pgrp = 1, timeout = 300, minproto = 5, maxproto = 5, directa)
mqueue en / dev / tipo mqueue mqueue (rw, relatime)
debugfs en debugfs / sys / kernel / tipo de depuración (rw, relatime)
hugetlbfs en / dev / hugepages hugetlbfs tipo (rw, relatime)
rpc_pipefs on / RUN / rpc_pipefs tipo rpc_pipefs (rw, relatime)
fusectl en / sys / fs tipo / fusible / conexiones fusectl (rw, relatime)
server1.example.com:/testvol en fuse.glusterfs tipo / mnt / GlusterFS (rw, relatime, user_id = 0, group_id = 0, default_permissions, allow_other, max_read = 131072)
[Email protected]: / #

... y...

df -h

[Email protected]: / # df -h
Tamaño del sistema de ficheros usados ​​Disp Uso% Montado en
/dev / sda1 57G 53G 1.1G 2% /
udev 10M 0 10METRO 0% /dev
tmpfs 200M 4,6 M 195M 3% /correr
tmpfs 499M 0 499METRO 0% /Dev / Shan
tmpfs 5.0M 0 5.0METRO 0% /RUN / bloqueo
tmpfs 499M 0 499METRO 0% /sys / fs / cgroup
34G 57G 21G server1.example.com:/testvol 39% /mnt / GlusterFS
[Email protected]: / #

En lugar de montar los GlusterFS comparten manualmente en el cliente, podría modificar / etc / fstab para que la cuota se monta automáticamente cuando se inicia el cliente.

Abrir / etc / fstab y añadir la siguiente línea:

nano / etc / fstab

[...]
server1.example.com:/testvol / mnt / GlusterFS GlusterFS valores predeterminados, _netdev 0 0

(De nuevo, en lugar de server1.example.com se puede también utilizar server2.example.com!)

Para probar si su / etc / fstab modificado está trabajando, reiniciar el cliente:

reiniciar

Después del reinicio, usted debe encontrar la participación en las salidas de ...

df -h

... y...

montar

4 Las pruebas de replicación GlusterFS

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

client1.example.com:

touch / mnt / GlusterFS / test1
touch / mnt / GlusterFS / test2

Ahora vamos a ver el directorio / datos sobre 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

[Email protected]: / # ls -l / datos / testvol /
total 0
-rw-r - r-- 2 root 0 Mar 23 2016 test1
-rw-r - r-- 2 root 0 Mar 23 2016 test2

Ahora cerramos server1.example.com y añadir / borrar algunos archivos del recurso compartido 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

[Email protected]: / # ls -l / datos / testvol
total 8
-rw-r - r-- 2 root 0 Mar 23 0806: test1
-rw-r - r-- 2 root 0 Mar 23 0809: test3
-rw-r - r-- 2 root 0 Mar 23 0809 test4
[Email protected]: / #

Vamos a arrancar server1.example.com de nuevo y echar un vistazo al directorio / datos:

server1.example.com:

ls -l / data / testvol

[Email protected]: / # ls -l / datos / testvol
total 0
-rw-r - r-- 2 root 0 Mar 23 0806: test1
-rw-r - r-- 2 root 0 Mar 23 0809: test3
-rw-r - r-- 2 root 0 Mar 23 0809 test4
[Email protected]: / #

Como ves, server1.example.com sincronizará automáticamente el cambiado. En caso de que el cambio no se ha sincronizado todavía, 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 /

[Email protected]: / # ls -l / mnt / GlusterFS /
total 0
-rw-r - r-- 1 root 0 Mar 23 0806: test1
-rw-r - r-- 1 root 0 Mar 23 0809: test3
-rw-r - r-- 1 root 0 Mar 23 0809 test4
[Email protected]: / #

5 Campo de golf

Publicación relacionada

Deja una respuesta

Este sitio utiliza para reducir el spam Akismet. Aprender cómo se procesa sus datos comentario.