GNU/Linux >> Tutoriales Linux >  >> Debian

Instale y configure GlusterFS en Ubuntu 16.04 / Debian 8

En el mundo de la tecnología, siempre es crucial mantener los datos altamente disponibles para garantizar que sean accesibles para la aplicación o el usuario. Aquí se logra una alta disponibilidad mediante la distribución de los datos entre varios volúmenes/nodos.

Los usuarios/máquinas cliente pueden acceder al almacenamiento como almacenamiento local. Siempre que el usuario cree datos en el almacenamiento de Gluster, los datos se duplicarán/distribuirán a otros nodos de almacenamiento.

¿Qué es GlusterFS?

GlusterFS es un sistema de archivos de red escalable y de código abierto adecuado para cargas de trabajo con un uso intensivo de datos, como transmisión de medios, almacenamiento en la nube y CDN (red de entrega de contenido). GlusterFS fue desarrollado inicialmente por Gluster Inc y luego por Redhat, como resultado de la adquisición.

Terminologías:

A continuación se encuentran las terminologías importantes que usamos a lo largo de este artículo.

Ladrillo – es almacenamiento básico (directorio) en un servidor en el grupo de almacenamiento de confianza.

Volumen – es una colección lógica de ladrillos.

Clúster – es un grupo de computadoras vinculadas que trabajan juntas como una sola computadora.

Sistema de archivos distribuidos – Un sistema de archivos en el que los datos se distribuyen entre varios nodos de almacenamiento y permite que los clientes accedan a ellos a través de una red.

Cliente – es una máquina que monta el volumen.

Servidor – es una máquina donde se aloja el sistema de archivos real en el que se almacenarán los datos.

Replicar – Realización de múltiples copias de datos para lograr una alta redundancia.

Fusible – es un módulo del kernel cargable que permite a los usuarios sin privilegios crear sus propios sistemas de archivos sin editar el código del kernel.

enfadado – es un demonio que se ejecuta en todos los servidores del grupo de almacenamiento de confianza.

INCURRIMIENTO – La matriz redundante de discos económicos (RAID) es una tecnología que proporciona una mayor confiabilidad de almacenamiento a través de la redundancia.

Volúmenes:

Como se dijo anteriormente, el volumen es la colección de ladrillos, y la mayoría de las operaciones de glúteo, como la lectura y la escritura, ocurren en el volumen. GlusterFS admite diferentes tipos de volúmenes según los requisitos; adecuado para escalar el tamaño de almacenamiento o mejorar el rendimiento o para ambos.

En este artículo, configuraremos el volumen GlusterFS replicado en Ubuntu 16.04/Debian 8. Esta guía también debería funcionar en versiones anteriores de Ubuntu como Ubuntu 14.04/Ubuntu 12.04.

Volumen de Glusterfs replicado es como un RAID 1 y el volumen mantiene copias exactas de los datos en todos los ladrillos. Puede decidir la cantidad de réplicas mientras crea el volumen, por lo que necesitaría tener al menos dos ladrillos para crear un volumen con dos réplicas o tres ladrillos para crear un volumen de 3 réplicas.

Este volumen proporciona una mejor confiabilidad de datos y redundancia de datos.

¿Por qué no leer sobre los tipos restantes de volúmenes GlusterFS?

Requisitos:

Aquí, vamos a configurar el volumen GlusterFS con dos réplicas. Asegúrese de tener dos sistemas de 64 bits (virtuales o físicos) con 1 GB de memoria y un disco duro de repuesto en cada sistema.

Para una demostración, estoy usando una distribución de Linux diferente para cada nodo de almacenamiento aquí. Le recomiendo que use una única distribución de Linux en todo el clúster, lo que le facilitará la resolución de los problemas que surjan en la producción.

Configurar DNS:

Los componentes de GlusterFS usan DNS para las resoluciones de nombres, así que configure DNS o configure una entrada de hosts. Si no tiene un DNS en su entorno, modifique el archivo /etc/hosts y actualícelo según corresponda.

sudo vi /etc/hosts

192.168.12.16  gluster1.itzgeek.local  gluster1
192.168.12.17  gluster2.itzgeek.local  gluster2
192.168.12.20 client.itzgeek.local client

Añadir repositorio GlusterFS:

Antes de continuar con la instalación, debemos configurar el repositorio de GlusterFS en ambos nodos de almacenamiento. Siga las instrucciones para agregar el repositorio a su sistema.

Debian:

Instale el paquete de soporte para transacciones https.

sudo apt-get install -y lsb-release
sudo apt-get install -y apt-transport-https

Agregue la clave pública para el repositorio de GlusterFS.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | sudo apt-key add -
echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/$(lsb_release -sc)/apt $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/gluster.list

Ubuntu 16.04/14.04:

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-3.8

Instalar GlusterFS:

Una vez que haya agregado el repositorio en sus sistemas, podemos continuar con la instalación de GlusterFS.

Actualice la memoria caché del repositorio.

sudo apt-get update

Instale el paquete GlusterFS usando el siguiente comando.

sudo apt-get install -y glusterfs-server

Inicie el servicio glusterfs-server en todos los nodos gluster.

sudo service glusterfs-server start

Verifique que el servicio glusterfs funcione correctamente.

raj@gluster1:~$ sudo service glusterfs-server status

● glusterfs-server.service - LSB: GlusterFS server
   Loaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled)
   Active: active (running) since Sat 2016-09-24 21:47:20 IST; 1min 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1570 ExecStop=/etc/init.d/glusterfs-server stop (code=exited, status=0/SUCCESS)
  Process: 1664 ExecStart=/etc/init.d/glusterfs-server start (code=exited, status=0/SUCCESS)
    Tasks: 7 (limit: 512)
   Memory: 25.5M
      CPU: 3.552s
   CGroup: /system.slice/glusterfs-server.service
           └─1673 /usr/sbin/glusterd -p /var/run/glusterd.pid

Sep 24 21:47:16 gluster1.itzgeek.local systemd[1]: Starting LSB: GlusterFS server...
Sep 24 21:47:16 gluster1.itzgeek.local glusterfs-server[1664]:  * Starting glusterd service glusterd
Sep 24 21:47:20 gluster1.itzgeek.local glusterfs-server[1664]:    ...done.
Sep 24 21:47:20 gluster1.itzgeek.local systemd[1]: Started LSB: GlusterFS server.

Configurar cortafuegos:

Deberá deshabilitar el firewall o configurar el firewall para permitir todas las conexiones dentro de un clúster.

sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT

Añadir almacenamiento:

Suponiendo que tiene un disco duro de repuesto en su máquina, /dev/sdb es el que usaré aquí para un ladrillo. Cree una única partición en el disco duro de repuesto que se muestra a continuación.

Deberá realizar los pasos a continuación en ambos nodos.

sudo fdisk /dev/sdb

Formatee la partición creada con el sistema de archivos de su elección.

sudo mkfs.ext4 /dev/sdb1

Monte el disco en un directorio llamado /data/gluster .

sudo mkdir -p /data/gluster
sudo mount /dev/sdb1 /data/gluster

Agregue una entrada a /etc/fstab para mantener el montaje persistente durante el reinicio.

echo "/dev/sdb1 /data/gluster ext4 defaults 0 0" | sudo tee --append /etc/fstab

Configurar GlusterFS en Ubuntu 16.04:

Antes de crear un volumen, debemos crear un grupo de almacenamiento de confianza agregando gluster2.itzgeek.local . Puede ejecutar los comandos de configuración de GlusterFS en cualquier servidor del clúster y ejecutará el mismo comando en todos los demás servidores.

Aquí ejecutaré todos los comandos de GlusterFS en gluster1.itzgeek.local nodo.

raj@gluster1:~$ sudo gluster peer probe gluster2.itzgeek.local
peer probe: success.

Verifique el estado del grupo de almacenamiento de confianza.

raj@gluster1:~$ sudo gluster peer status

Number of Peers: 1

Hostname: gluster2.itzgeek.local
Uuid: 51470928-dfa8-42e1-a221-d7bbcb8c13bd
State: Peer in Cluster (Connected)

Enumere el grupo de almacenamiento.

raj@gluster1:~$ sudo gluster pool list

UUID                                    Hostname                State
51470928-dfa8-42e1-a221-d7bbcb8c13bd    gluster2.itzgeek.local  Connected
dc7c1639-d21c-4adf-b28f-5150229e6980    localhost               Connected

Configurar volumen de GlusterFS:

Cree un bloque (directorio) llamado “gvol0 ” en el sistema de archivos montado en ambos nodos.

sudo mkdir -p /data/gluster/gvol0

Dado que vamos a utilizar un volumen replicado, cree el volumen llamado "gvol0 ” con dos réplicas.

raj@gluster1:~$ sudo gluster volume create gvol0 replica 2 gluster1.itzgeek.local:/data/gluster/gvol0 gluster2.itzgeek.local:/data/gluster/gvol0
volume create: gvol0: success: please start the volume to access data

Inicia el volumen.

raj@gluster1:~$ sudo gluster volume start gvol0
volume start: gvol0: success

Verifique el estado del volumen creado.

raj@gluster1:~$ sudo gluster volume info gvol0

Volume Name: gvol0
Type: Replicate
Volume ID: ca102e4b-6cd1-4d9d-9c5a-03b882c76da0
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster1.itzgeek.local:/data/gluster/gvol0
Brick2: gluster2.itzgeek.local:/data/gluster/gvol0
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on

Configurar cliente GlusterFS:

Instalar glusterfs-client paquete para admitir el montaje de sistemas de archivos GlusterFS. Ejecute todos los comandos como raíz usuario.

$ su -

### CentOS / RHEL ###
yum install -y glusterfs-client

### Ubuntu / Debian ###
apt-get install -y glusterfs-client

Cree un directorio para montar el sistema de archivos GlusterFS.

mkdir -p /mnt/glusterfs

Ahora, monte el sistema de archivos GlusterFS en /mnt/glusterfs usando el siguiente comando.

mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt/glusterfs

También puedes usar gluster2.itzgeek.local en lugar de gluster1.itzgeek.com en el comando anterior.

Verifique el sistema de archivos GlusterFS montado.

[root@client ~]# df -hP /mnt/glusterfs
Filesystem                     Size  Used Avail Use% Mounted on
gluster1.itzgeek.local:/gvol0  4.8G   11M  4.6G   1% /mnt/glusterfs

También puede usar el siguiente comando para verificar el sistema de archivos GlusterFS.

[root@client ~]# cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=490448k,nr_inodes=122612,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0
/dev/mapper/centos-home /home xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=100136k,mode=700 0 0
gluster1.itzgeek.local:/gvol0 /mnt/glusterfs fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0

Agregue la siguiente entrada a /etc/fstab para montar automáticamente durante el arranque del sistema.

gluster1.itzgeek.local:/gvol0 /mnt/glusterfs glusterfs  defaults,_netdev 0 0

Pruebe la replicación y la alta disponibilidad de GlusterFS:

Lado del servidor GlusterFS:

Para verificar la replicación, monte el volumen GlusterFS creado en el mismo nodo de almacenamiento.

raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt
raj@gluster2:~$ sudo mount -t glusterfs gluster2.itzgeek.local:/gvol0 /mnt

Datos dentro de /mnt El directorio de ambos nodos siempre será el mismo (replicación).

Lado del cliente GlusterFS:

Vamos a crear algunos archivos en el sistema de archivos montado en client.itzgeek.local.

touch /mnt/glusterfs/file1
touch /mnt/glusterfs/file2

Verifique los archivos creados.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2

Pruebe los dos nodos de GlusterFS para ver si tienen los mismos datos dentro de /mnt .

raj@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:52 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2


raj@gluster2:~$ ls -al /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 06:30 .
drwxr-xr-x 23 root root 4096 Sep 24 08:39 ..
-rw-r--r--  1 root root    0 Sep 26  2016 file1
-rw-r--r--  1 root root    0 Sep 26  2016 file2

Como saben, hemos montado el volumen GlusterFS desde gluster1.itzgeek.local en cliente.itzgeek.local , ahora es el momento de probar la alta disponibilidad del volumen cerrando el nodo.

raj@gluster1:~$ sudo poweroff

Ahora pruebe la disponibilidad de los archivos, verá los archivos que creamos recientemente aunque el nodo esté inactivo.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2
Es posible que experimente lentitud al ejecutar comandos en el sistema de archivos GlusterFS montado debido al cambio de GlusterFS a gluster2.itzgeek.local cuando el client.itzgeek.local no se puede llegar a gluster1.itzgeek.local .

Cree algunos archivos más en el sistema de archivos GlusterFS para verificar la replicación.

touch /mnt/glusterfs/file3
touch /mnt/glusterfs/file4

Verifique el conteo de archivos.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2
-rw-r--r--. 1 root root 0 Sep 26 11:26 file3
-rw-r--r--. 1 root root 0 Sep 26 11:26 file4

Desde el gluster1 está inactivo, todos sus datos ahora están escritos en gluster2.itzgeek.local debido a la alta disponibilidad. Ahora encienda el nodo1 (gluster1.itzgeek.local ).

Compruebe el /mnt del gluster1.itzgeekk.local; debería ver los cuatro archivos en el directorio, esto confirma que la replicación funciona como se esperaba.

raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt
[sudo] password for raj:

raj@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:59 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2
-rw-r--r--  1 root root    0 Sep 26 20:56 file3
-rw-r--r--  1 root root    0 Sep 26 20:56 file4

Eso es todo.


Debian
  1. Cómo instalar y configurar docker en Debian 11

  2. Cómo instalar y configurar Mariadb 10 en Debian 11

  3. Cómo instalar y configurar MongoDB 5 en Debian 11

  4. Cómo instalar y configurar Redis 6 en Debian 11

  5. Instalar y configurar Apache y PHP con cgi en Ubuntu o Debian

Cómo instalar y configurar ELK Stack en Ubuntu y Debian

Cómo instalar y configurar Git en Debian 11

Instalar y configurar OwnCloud en Ubuntu 21 / Debian 11

Instalar y configurar Virtualmin en el servidor Ubuntu 20.04 / Debian 10

¿Cómo instalar y configurar Apache en Debian 11?

Instalar y configurar Fail2ban en Debian 11

    Nombre de host Dirección IP SO Memoria Disco Propósito
    gluster1.itzgeek.local 192.168.12.16 Ubuntu 16.04 LTS 1GB /dev/sdb (5GB) Nodo de almacenamiento 1
    gluster2.itzgeek.local 192.168.12.17 Debian 8 1GB /dev/sdb (5GB) Nodo de almacenamiento 2
    cliente.itzgeek.local 192.168.12.8 CentOS 7/Debian NA NA Máquina cliente