Este artículo se actualizó para cubrir la instalación de GlusterFS® 7 en CentOS® 7 y Ubuntu® 18.04. Todo el trabajo original en este documento es el mismo, excepto por el paso donde creas el volumen con la réplica palabra clave.
Antes de comenzar a usar GlusterFS, debe decidir qué tipo de volumen necesita para su entorno. Los siguientes métodos se utilizan con mayor frecuencia para lograr diferentes resultados.
Volumen replicado
Este tipo de volumen proporciona replicación de archivos en varios bloques. Es la mejor opción para entornos que requieren alta disponibilidad, alta confiabilidad y almacenamiento escalable. Este tipo de volumen funciona bien si planea automontar el volumen GlusterFS, por ejemplo, como la raíz del documento del servidor web (/var/www
) o similar donde todos los archivos deben residir en ese nodo. El valor pasado a réplica es el mismo número de nodos en el volumen.
Los archivos se copian en cada bloque del volumen, de forma similar a una matriz redundante de discos independientes (RAID-1). Sin embargo, puede tener tres o más ladrillos o un número impar de ladrillos. El espacio utilizable es del tamaño de un bloque, y todos los archivos escritos en un bloque se replican en todos los demás. Los volúmenes de este tipo también ofrecen un rendimiento de lectura mejorado en la mayoría de los entornos y son el tipo de volumen más común que se usa cuando los clientes son externos a los propios nodos de GlusterFS.
Volumen replicado-distribuido
Similar a un RAID-10, se debe usar un número par de ladrillos. El espacio utilizable es el tamaño de los ladrillos combinados pasados a la réplica valor. Por ejemplo, si hay cuatro bloques de 20 Gigabytes (GB) y pasas réplica 2 a la creación, sus archivos se distribuyen a dos nodos (40 GB) y se replican a dos nodos. Con seis bricks de 20 GB y réplica 3 , sus archivos se distribuyen a tres nodos (60 GB) y se replican a tres nodos. Si usó la réplica 2, luego se distribuyen a dos nodos (40 GB) y se replican a cuatro nodos en pares. Esta distribución y replicación se utilizan cuando sus clientes son externos al clúster, no automontajes locales.
Requisitos
- Dos o más servidores con almacenamiento independiente. Los ejemplos de este artículo se basan en servidores CentOS 7 y Ubuntu 18.04.
- Una red privada entre servidores. Los ejemplos de este artículo usan
192.168.0.0/24
.
Configuración de compilación
La compilación descrita en este documento utiliza la siguiente configuración:
- Cuatro imágenes de servidor de Rackspace Cloud con
/dev/xvde
tabique listo para usar para cada ladrillo - Red privada de una nube en
192.168.0.0/24
para comunicación GlusterFS - GlusterFS 7.1 instalado desde el repositorio de paquetes del proveedor
Preparando los servidores
Realice las siguientes configuraciones e instalaciones para preparar los servidores:
- Configurar
/etc/hosts
. - Instalar las actualizaciones del sistema operativo (SO).
- Instale el software GlusterFS.
- Configurar el acceso a la red.
- Conectar nodos GlusterFS.
Configure /etc/hosts para la comunicación dentro del nodo
En lugar de usar DNS, prepare /etc/hosts
en cada servidor y asegúrese de que los servidores puedan comunicarse entre sí. Todos los servidores tienen el nombre glusterN como nombre de host, use glusN para la capa de comunicación privada entre servidores.
# vi /etc/hosts
192.168.0.1 glus-01
192.168.0.2 glus-02
192.168.0.3 glus-03
192.168.0.4 glus-04
# ping -c2 glus-01; ping -c2 glus-02; ping -c2 glus-03; ping -c2 glus-04
Instalar paquetes
Ejecute los comandos de esta sección para realizar los siguientes pasos:
- Instalar actualizaciones del sistema operativo.
- Instale el repositorio de GlusterFS y los paquetes de GlusterFS.
CentOS
yum update -y
yum install -y centos-release-gluster7
yum install -y glusterfs-server
Sistema operativo Ubuntu
El repositorio predeterminado de Ubuntu tiene instalado GlusterFS 3.13.2. Use los siguientes comandos para instalar 7.1:
apt update
apt upgrade -y
add-apt-repository -y ppa:gluster/glusterfs-7
apt install -y glusterfs-server
Configurar acceso a la red
CentOS
Use los siguientes comandos para permitir el tráfico de Gluster entre sus nodos y permitir montajes de clientes:
firewall-cmd --add-service=glusterfs
firewall-cmd --add-service=glusterfs --permanent
Sistema operativo Ubuntu
Utilice los siguientes comandos para permitir todo el tráfico en su segmento de red privada para facilitar la comunicación de Gluster:
ufw enable
ufw allow from 192.168.0.0/24
Preparar los ladrillos
Ejecute los comandos de esta sección para realizar los siguientes pasos:
- Dispositivos de bloques de partición.
- Cree la base del administrador de volúmenes lógicos (LVM).
- Preparar ladrillos de volumen.
Los ladrillos subyacentes son un sistema de archivos estándar y un punto de montaje. Monte cada bloque de tal manera que desaliente a cualquier usuario de cambiar al directorio y escribir en los propios bloques subyacentes.
Advertencia: Escribir directamente en un bloque corrompe el volumen.
Los bloques deben ser únicos por nodo y debe haber un directorio dentro del punto de montaje para usar en la creación del volumen. Intentar crear un volumen replicado usando el nivel superior de los puntos de montaje da como resultado un error con instrucciones para usar un subdirectorio.
Todos los nodos
parted -s -- /dev/xvde mktable gpt
parted -s -- /dev/xvde mkpart primary 2048s 100%
parted -s -- /dev/xvde set 1 lvm on
pvcreate /dev/xvde1
vgcreate vgglus-01 /dev/xvde1
lvcreate -l 100%VG -n gbrick1 vgglus-01
mkfs.xfs /dev/vgglus-01/gbrick1
echo '/dev/vgglus-01/gbrick1 /var/lib/gvol0 xfs defaults 0 0' >> /etc/fstab
mkdir /var/lib/gvol0
mount /var/lib/gvol0
-
glus-01
mkdir /var/lib/gvol0/brick1
-
glus-02
mkdir /var/lib/gvol0/brick2
-
glus-03
mkdir /var/lib/gvol0/brick3
-
glus-04
mkdir /var/lib/gvol0/brick4
Configurar GlusterFS
Siga los pasos a continuación para ejecutar la configuración de GlusterFS.
Iniciar el demonio glusterfsd
Puede reiniciar el daemon en tiempo de ejecución usando los siguientes comandos:
systemctl enable glusterd
systemctl start glusterd
Construir un grupo de pares
Un grupo de pares se conoce como un grupo de almacenamiento de confianza en GlusterFS.
-
glus-01
gluster peer probe glus-02 gluster peer probe glus-03 gluster peer probe glus-04 gluster peer status
-
glus-02
gluster peer status
-
glus-03
gluster peer status
-
glus-04
gluster peer status
Ahora puede verificar el estado de su nodo y el grupo de servidores gluster:
[root@gluster1 ~]# gluster pool list
UUID Hostname State
734aea4c-fc4f-4971-ba3d-37bd5d9c35b8 glus-04 Connected
d5c9e064-c06f-44d9-bf60-bae5fc881e16 glus-03 Connected
57027f23-bdf2-4a95-8eb6-ff9f936dc31e glus-02 Connected
e64c5148-8942-4065-9654-169e20ed6f20 localhost Connected
Crear el volumen
De forma predeterminada, glusterd NFS permite la lectura/escritura global durante la creación del volumen, por lo que debe configurar restricciones de autorización básicas solo para la subred privada. glusterd
inicia automáticamente NFSd en cada servidor y exporta el volumen a través de él desde cada uno de los nodos. El motivo de este comportamiento es que para utilizar el sistema de archivos del cliente nativo en el espacio de usuario (FUSE) para montar el volumen en los clientes, los clientes deben ejecutar exactamente la misma versión de los paquetes de GlusterFS. Si las versiones son diferentes, podría haber diferencias en los algoritmos hash utilizados por los servidores y los clientes, y los clientes no podrán conectarse.
Volumen replicado
El siguiente ejemplo crea la replicación en los cuatro nodos. Cada nodo contiene una copia de todos los datos y el tamaño del volumen es del tamaño de un solo ladrillo. Tenga en cuenta que la salida muestra 1 x 4 = 4
.
Solo un nodo :
gluster volume create gvol0 replica 4 transport tcp \
glus-01:/var/lib/gvol0/brick1 \
glus-02:/var/lib/gvol0/brick2 \
glus-03:/var/lib/gvol0/brick3 \
glus-04:/var/lib/gvol0/brick4
gluster volume start gvol0
[root@gluster1 ~]# gluster volume info gvol0
Volume Name: gvol0
Type: Replicate
Volume ID: 8d12cb5a-77ad-43a3-bdd1-ab48405ff1da
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Volumen distribuido-replicado
Este ejemplo crea una replicación distribuida en nodos 2x2. Cada par de nodos contiene los datos y el tamaño del volumen es del tamaño de dos ladrillos. Tenga en cuenta que la salida muestra 2 x 2 = 4
.
Solo un nodo :
gluster volume create gvol0 replica 2 transport tcp \
glus-01:/var/lib/gvol0/brick1 \
glus-02:/var/lib/gvol0/brick2 \
glus-03:/var/lib/gvol0/brick3 \
glus-04:/var/lib/gvol0/brick4
gluster volume start gvol0
[root@gluster1 ~]# gluster volume info gvol0
Volume Name: gvol0
Type: Distributed-Replicate
Volume ID: b2ddd34b-ffb4-4fd8-ae60-b90adbd4c2ab
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Eliminar el volumen
Después de asegurarse de que ningún cliente (ya sea local o remoto) esté montando el volumen, puede detener el volumen y eliminarlo mediante los siguientes comandos:
gluster volume stop gvol0
gluster volume delete gvol0
Limpiar ladrillos
Si se usan ladrillos en un volumen y es necesario quitarlos, puede usar uno de los siguientes métodos:
GlusterFS establece un atributo en los subdirectorios de ladrillos. Si borra este atributo, los ladrillos se pueden reutilizar.
-
glus-01:
setfattr -x de confianza.gvol0.volume-id /var/lib/gvol0/brick1/setfattr -x de confianza.gfid /var/lib/gvol0/brick1rm -rf /var/lib/gvol0/brick1/.glusterfs
-
glus-02:
setfattr -x Trusted.glusterfs.volume-id /var/lib/gvol0/brick2/setfattr -x Trusted.gfid /var/lib/gvol0/brick2rm -rf /var/lib/gvol0/brick2/.glusterfs
-
glus-03:
setfattr -x de confianza.gvol0.volume-id /var/lib/gvol0/brick3/setfattr -x de confianza.gfid /var/lib/gvol0/brick3rm -rf /var/lib/gvol0/brick3/.glusterfs
-
glus-04:
setfattr -x de confianza.glusterfs.volume-id /var/lib/gvol0/brick4/setfattr -x de confianza.gfid /var/lib/gvol0/brick4rm -rf /var/lib/gvol0/brick4/.glusterfs
Alternativamente, puede eliminar los subdirectorios y luego volver a crearlos.
-
glus-01
rm -rf /var/lib/gvol0/brick1mkdir /var/lib/gvol0/brick1
-
glus-02:
rm -rf /var/lib/gvol0/brick2mkdir /var/lib/gvol0/brick2
-
glus-03:
rm -rf /var/lib/gvol0/brick3mkdir /var/lib/gvol0/brick3
-
glus-04:
rm -rf /var/lib/gvol0/brick4mkdir /var/lib/gvol0/brick4
Añadir ladrillos
Puede agregar más ladrillos a un volumen en ejecución. Agregue un ladrillo adicional a nuestro ejemplo de volumen replicado anterior usando el siguiente comando:
gluster volume add-brick gvol0 replica 5 gluster5:/var/lib/gvol0/brick5
Puedes usar el add-brick
comando para cambiar el diseño de su volumen, por ejemplo, para cambiar un volumen distribuido de dos nodos a un volumen replicado distribuido de cuatro nodos. Después de tal operación, debe reequilibrar su volumen. Los nuevos archivos se crean automáticamente en los nuevos nodos, pero los antiguos no se mueven.
gluster volume add-brick gvol0 replica 2 \
gluster5:/var/lib/gvol0/brick5 ;
gluster6:/var/lib/gvol0/brick6
gluster volume rebalance gvol0 start
gluster volume rebalance gvol0 status
## If needed (something didn't work right)
gluster volume rebalance gvol0 stop
Opciones de volumen
Para ver las opciones de volumen configuradas, ejecute el siguiente comando:
gluster volume info gvol0
El siguiente es un resultado de ejemplo:
Volume Name: gvol0
Type: Replicate
Volume ID: 8d12cb5a-77ad-43a3-bdd1-ab48405ff1da
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Para establecer una opción para un volumen, use el establecer palabra clave de la siguiente manera:
gluster volume set gvol0 performance.write-behind off
volume set: success
Para borrar una opción de un volumen a su valor predeterminado, use el botón restablecer palabra clave de la siguiente manera:
gluster volume reset gvol0 performance.read-ahead
volume reset: success: reset volume successful
Montaje de cliente
El método preferido para que un cliente monte un volumen GlusterFS es usar el cliente FUSE nativo. Los montajes NFS son posibles cuando GlusterFS se implementa junto con NFS-Ganesha®.
cliente FUSE
El cliente FUSE permite que el montaje se realice con una conexión de estilo "round robin" de GlusterFS. En /etc/fstab , se utiliza el nombre de un nodo. Sin embargo, los mecanismos internos permiten que ese nodo falle y los clientes pasan a otros nodos conectados en el grupo de almacenamiento de confianza.
CentOS :
yum install -y centos-release-gluster7
yum install -y glusterfs-fuse
Ubuntu :
add-apt-repository -y ppa:gluster/glusterfs-7
apt install glusterfs-client
Común :
vi /etc/hosts
192.168.0.2 glus-01
192.168.0.4 glus-02
192.168.0.1 glus-03
192.168.0.3 glus-04
`modprobe fuse
echo 'glus-01:/gvol0 /mnt/gluster/gvol0 glusterfs _netdev 0 0' >> /etc/fstab
mkdir -p /mnt/gluster/gvol0
mount /mnt/gluster/gvol0`
Referencias
- https://www.gluster.org/anunciando-gluster-7-0/
- https://docs.gluster.org/en/latest/
- https://wiki.centos.org/HowTos/GlusterFSonCentOS
- https://kifarunix.com/instalar-y-configurar-glusterfs-en-ubuntu-18-04/
- https://launchpad.net/~gluster
Siguiente artículo
Solución de problemas de GlusterFS