Cómo instalar y configurar GlusterFS en Ubuntu
GlusterFS es un sistema de archivos de red gratuito, de código abierto y escalable, desarrollado primero por Gluster Inc. y más tarde por Redhat. Está diseñado específicamente para cargas de trabajo intensivas en datos, como almacenamiento en la nube, CDN y streaming multimedia. Es capaz de manejar petabytes de datos y, por tanto, puede servir a miles de clientes. Admite varios protocolos, como NFS, SMB, CIFS, HTTP y FTP. Con GlusterFS, puedes combinar diferentes recursos de almacenamiento en disco en un único espacio de nombres global.
En este tutorial aprenderemos a configurar un volumen GlusterFS replicado en Ubuntu 18.04.
Requisitos
- Dos servidores ejecutando Ubuntu 18.04 con 2 GB de disco duro externo en cada uno.
- Se configura una dirección IP estática 172.20.10.5 en el nodo1 y 172.20.10.6 en el nodo2.
- Se ha configurado una contraseña de root en ambos servidores.
Cómo empezar
Antes de empezar, tendrás que actualizar ambos servidores con la última versión. Puedes actualizarlos ejecutando el siguiente comando en ambos servidores.
apt-get update -y apt-get upgrade -y
Una vez actualizados ambos servidores reinícialos para aplicar los cambios.
A continuación, tendrás que configurar la resolución de nombres de host en ambos servidores para que cada servidor pueda comunicarse entre sí por nombre de host. Puedes hacerlo editando el archivo /etc/hosts en ambos servidores:
nano /etc/hosts
Añade las siguientes líneas:
172.20.10.5 node1 172.20.10.6 node2
Guarda y cierra el archivo cuando hayas terminado.
Instalar GlusterFS
En primer lugar, tendrás que instalar el paquete GlusterFS en ambos servidores. Por defecto, GlusterFS no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que añadir el repositorio de GlusterFS en ambos servidores.
Primero, instala el paquete necesario con el siguiente comando:
apt-get install software-properties-common -y
A continuación, añade el repositorio con el siguiente comando:
add-apt-repository ppa:gluster/glusterfs-5
A continuación, instala el servidor GlusterFS con el siguiente comando:
apt-get install glusterfs-server -y
Una vez finalizada la instalación, inicia el servicio GlusterFS y habilítalo para que se inicie al arrancar con el siguiente comando:
systemctl start glusterd systemctl enable glusterd
También puedes comprobar el estado del servicio GlusterFS con el siguiente comando:
systemctl status glusterd
Deberías ver la siguiente salida:
? glusterd.service - GlusterFS, a clustered file-system server Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-11-07 12:51:15 UTC; 48s ago Main PID: 7199 (glusterd) Tasks: 8 (limit: 505) CGroup: /system.slice/glusterd.service ??7199 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO Nov 07 12:51:06 ubuntu systemd[1]: Starting GlusterFS, a clustered file-system server... Nov 07 12:51:15 ubuntu systemd[1]: Started GlusterFS, a clustered file-system server.
Crear almacenamiento GlusterFS
A continuación, tendrás que crear una partición en el disco duro externo(/dev/sdb) de ambos servidores.
Para crear una nueva partición en /dev/sdb, ejecuta el siguiente comando:
fdisk /dev/sdb
Deberías ver la siguiente salida:
Welcome to fdisk (util-linux 2.31.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x06091fe8. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-4194303, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303): Created a new partition 1 of type 'Linux' and of size 2 GiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
A continuación, formatea la partición con el siguiente comando:
mkfs.xfs /dev/sdb1
Deberías ver el siguiente resultado:
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131008 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0 data = bsize=4096 blocks=524032, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
A continuación, crea un directorio para el almacenamiento GlusterFS en ambos servidores con el siguiente comando:
mkdir /glusterdata
A continuación, monta el disco /dev/sdb1 en un directorio /glusterdata.
mount.xfs /dev/sdb1 /glusterdata
A continuación, haz que el montaje sea persistente tras el reinicio editando el archivo /etc/fstab:
nano /etc/fstab
Añade la siguiente línea:
/dev/sdb1 /glusterdata xfs defaults 0 0
Guarda y cierra el archivo y ejecuta el siguiente comando para aplicar los cambios:
mount -a
Ahora puedes comprobar el directorio montado con el siguiente comando:
df -h
Deberías ver la siguiente salida:
Filesystem Size Used Avail Use% Mounted on udev 211M 0 211M 0% /dev tmpfs 49M 1016K 48M 3% /run /dev/sda2 30G 4.3G 25G 16% / tmpfs 241M 12K 241M 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 241M 0 241M 0% /sys/fs/cgroup /dev/loop0 87M 87M 0 100% /snap/core/4486 tmpfs 49M 0 49M 0% /run/user/0 /dev/loop1 90M 90M 0 100% /snap/core/7917 /dev/sdb1 2.0G 35M 2.0G 2% /glusterdata
Configurar volumen GlusterFS
En primer lugar, tendrás que crear un grupo de almacenamiento de confianza añadiendo el nodo2 al nodo1. Para ello, ejecuta el siguiente comando en el nodo1:
gluster peer probe node2
Puedes listar el pool de almacenamiento con el siguiente comando:
gluster pool list
Deberías obtener la siguiente salida:
UUID Hostname State d049b519-9210-4bfa-a1c6-0d1454a88ea0 node2 Connected dbb9252e-6082-4d31-aaef-1b99e0e0c369 localhost Connected
A continuación, crea un directorio brick en ambos nodos con el siguiente comando:
mkdir /glusterdata/vol1
A continuación, crea un volumen llamado vol1 con dos réplicas:
gluster volume create vol1 replica 2 node1:/glusterdata/vol1 node2:/glusterdata/vol1
A continuación, inicia el volumen con el siguiente comando:
gluster volume start vol1
Puedes comprobar el estado del volumen creado con el siguiente comando:
gluster volume status
Deberías obtener la siguiente salida:
Status of volume: vol1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick node1:/glusterdata/vol1 49152 0 Y 7987 Brick node2:/glusterdata/vol1 49152 0 Y 18565 Self-heal Daemon on localhost N/A N/A Y 8010 Self-heal Daemon on node2 N/A N/A Y 18588 Task Status of Volume vol1 ------------------------------------------------------------------------------ There are no active volume tasks
También puedes ver la información sobre el volumen creado con el siguiente comando:
gluster volume info vol1
Deberías obtener la siguiente salida:
Volume Name: vol1 Type: Replicate Volume ID: e093ae7a-70ac-42b8-ab3f-a8bd186c5740 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: node1:/glusterdata/vol1 Brick2: node2:/glusterdata/vol1 Options Reconfigured: transport.address-family: inet nfs.disable: on performance.client-io-threads: off
A continuación, monta el volumen creado en el directorio /mnt de ambos nodos editando el archivo /etc/fstab para que tu volumen esté disponible cuando arranque el servidor.
nano /etc/fstab
Añade la siguiente línea:
localhost:/vol1 /mnt glusterfs defaults,_netdev 0 0
Guarda y cierra el archivo cuando hayas terminado. A continuación, ejecuta el siguiente comando para aplicar los cambios:
mount -a
Probar Replicación
El servidor GlusterFS ya está instalado y configurado. Es hora de probar la replicación entre dos nodos.
Primero, crea dos archivos en el nodo1:
touch /mnt/file1 /mnt/file2
Ahora, ve al nodo2 y ejecuta el siguiente comando:
ls -l /mnt/
Deberías ver los mismos archivos que has creado en el nodo1:
total 0 -rw-r--r-- 1 root root 0 Nov 7 13:42 file1 -rw-r--r-- 1 root root 0 Nov 7 13:42 file2
Ahora, detén el servicio GlusterFS en el nodo2 con el siguiente comando:
service glusterd stop
A continuación, ve al nodo1 y comprueba el estado de los pares:
gluster peer status
Deberías ver que el nodo2 se ha desconectado:
Number of Peers: 1 Hostname: node2 Uuid: d049b519-9210-4bfa-a1c6-0d1454a88ea0 State: Peer in Cluster (Disconnected)
También puedes comprobar el estado del volumen con el siguiente comando:
gluster volume status
Deberías ver la siguiente salida:
Status of volume: vol1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick node1:/glusterdata/vol1 49152 0 Y 7987 Self-heal Daemon on localhost N/A N/A Y 8010 Task Status of Volume vol1 ------------------------------------------------------------------------------ There are no active volume tasks
A continuación, crea otros dos archivos en el nodo1:
touch /mnt/file3 /mnt/file4
Ahora, ve al nodo2 e inicia el servicio GlusterFS con el siguiente comando:
service glusterd start
Ahora, comprueba el directorio /mnt en el nodo2:
ls -l /mnt/
Deberías ver que todos los archivos del nodo1 se han replicado y ahora están disponibles.
total 0 -rw-r--r-- 1 root root 0 Nov 7 13:42 file1 -rw-r--r-- 1 root root 0 Nov 7 13:42 file2 -rw-r--r-- 1 root root 0 Nov 7 13:44 file3 -rw-r--r-- 1 root root 0 Nov 7 13:44 file4
Conclusión
Enhorabuena! has instalado y configurado con éxito el Volumen Glusterfs Replicado de dos nodos en el servidor Ubuntu 18.04. También puedes configurar Volumen Glusterfs Distribuido, Volumen Glusterfs Replicado Distribuido, Volumen Glusterfs Rayado y Volumen Glusterfs Rayado Distribuido.