Este artículo describe cómo agregar y eliminar servidores GlusterFS de su matriz de servidores.
Crear un nuevo servidor
Usa el nova boot
comando del artículo anterior para crear un servidor llamado web3:
nova boot --image bb02b1a3-bc77-4d17-ab5b-421d89850fca --flavor performance1-4 web3
También puede usar el panel de control de Rackspace Cloud para crear el nuevo servidor.
Agregue el servidor a la red personalizada de Rackspace
En el artículo anterior, agregó una red personalizada de Rackspace.
-
Obtenga el identificador único universal (UUID) de la red utilizando el siguiente
nova
comando:nova network-list
-
Una vez que tenga el UUID, asocie el nuevo host con él.
Reemplazar
UUID
en el siguiente comando con el UUID real (por ejemplo,5492de89-1497-4aa0-96eb-bcdd55e1195c1
).web03
es el nombre de host del servidor que desea agregar.nova network-associate-host UUID web03
También puede usar el panel de control de Rackspace Cloud para asociar un servidor con su red existente.
Cuando haya terminado, el nuevo servidor debe tener la dirección IP 192.168.0.3 en la interfaz /dev/eth3
. Esa es la dirección que usa GlusterFS para comunicarse con el otro servidor.
Formatear la partición e instalar GlusterFS
Utilice los siguientes pasos para formatear la partición del servidor e instalar GlusterFS:
-
Utilice Secure Shell (SSH) para iniciar sesión en el servidor.
-
Siguiendo las instrucciones del artículo anterior, instale GlusterFS y formatee los
bricks
partición de la siguiente manera:apt-get update apt-get install -y glusterfs-server glusterfs-client apt-get install -y xfsprogs mkfs.xfs /dev/xvde1 mkdir /srv/.bricks echo /dev/xvde1 /srv/.bricks xfs rw 0 1 >> /etc/fstab mount /srv/.bricks ufw allow in on eth2
Incorporar el nuevo ladrillo en el volumen Gluster
-
Use SSH para iniciar sesión en
web01
oweb02
. -
El siguiente comando le indica al volumen GlusterFS que confíe en el nuevo servidor:
root@web02 :~# gluster peer probe 192.168.0.3 peer probe: success
-
Agregue el ladrillo al volumen usando los siguientes comandos:
root@web02 :~# gluster volume add-brick www replica 3 192.168.0.3:/srv/.bricks/www volume add-brick: success
El comando incluye las siguientes partes:
gluster
- El comando es para GlusterFS.volume
- El comando está relacionado con un volumen.add-brick
- Estás agregando un ladrillo al volumen.www
- Este es el nombre del volumen.replica 3
- Después de agregar este bloque, el volumen conserva al menos tres copias de cada archivo, una copia por bloque y, en este caso, una copia por servidor (porque solo hay un bloque en cada servidor).192.168.0.3:/srv/.bricks/www
- Esta parte del comando es la dirección IP del servidor Gluster, seguida de la ruta absoluta donde se almacenan los datos del bloque.
Estrategias de almacenamiento de volumen
GlusterFS ofrece los siguientes tipos de estrategias de almacenamiento de volumen:
- Distribuido - Un archivo está en un bloque y el siguiente archivo está en el siguiente bloque. Esta estrategia te da más espacio porque tu volumen es la suma de todos los ladrillos.
- Replicado (Recomendado ) - Cada archivo se copia en cada servidor.
- A rayas - Los archivos se cortan en fragmentos, y un fragmento se escribe en el primer bloque, otro fragmento se escribe en el segundo bloque y así sucesivamente.
También puede combinar estrategias, por ejemplo, replicadas y distribuidas, como se ilustra en el siguiente ejemplo:
gluster volume create www replica 2 transport tcp
192.168.0.1:/srv/.bricks/www 192.168.0.2:/srv/.bricks/www
192.168.0.3:/srv/.bricks/www 192.168.0.4:/srv/.bricks/www
El número de réplica es el número de ladrillos que componen un conjunto de réplicas, es decir, contienen una copia completa de los archivos. En el ejemplo anterior 192.168.0.1
y 192.168.0.2
mantenga una copia completa de los archivos, al igual que 192.168.0.3
y 192.168.0.4
. El orden de los ladrillos es significativo. Si ordenó 1,3,2,4, entonces 1 y 3 y 2 y 4 contendrían los archivos completos. Si 1 y 2 fallaran, perdería la mitad de sus archivos y tendría dos copias de la otra mitad.
Tener una combinación de un volumen replicado y distribuido le brinda un poco más de velocidad y más espacio a cambio de la seguridad de los datos.
Se recomienda una combinación de volúmenes seccionados y replicados solo cuando tiene archivos que son más grandes que un ladrillo o muchos archivos grandes que se someten a muchas operaciones de E/S.
Ver el estado de los servidores
Los siguientes comandos lo ayudan a obtener más información sobre lo que sucede en su clúster. Utilizará estos comandos en artículos posteriores de GlusterFS.
estado de pares
Si ejecuta el siguiente comando desde cualquier servidor, muestra todos los servidores del mismo nivel que conoce:
root@web01:~# gluster peer status
Number of Peers: 2
Hostname: 192.168.0.3
Uuid: ba502dc2-447f-466a-a732-df989e71b551
State: Peer in Cluster (Connected)
Hostname: 192.168.0.2
Uuid: 56e02356-d2c3-4787-ae25-6b46e867751a
State: Peer in Cluster (Connected)
estado del volumen
El siguiente comando es un comando útil para solucionar problemas. Proporciona información sobre todos los volúmenes y tareas de GlusterFS en cola y en curso.
root@web03:~# gluster volume status
Status of volume: www
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.0.2:/srv/.bricks/www 49152 Y 13673
Brick 192.168.0.1:/srv/.bricks/www 49152 Y 10249
Brick 192.168.0.3:/srv/.bricks/www 49153 Y 13783
NFS Server on localhost 2049 Y 13793
Self-heal Daemon on localhost N/A Y 13800
NFS Server on 192.168.0.2 2049 Y 13900
Self-heal Daemon on 192.168.0.2 N/A Y 13907
NFS Server on 192.168.0.1 2049 Y 10286
Self-heal Daemon on 192.168.0.1 N/A Y 10293
There are no active volume tasks
Quitar un ladrillo
Puede reducir los volúmenes según sea necesario mientras el clúster está en línea y disponible. Utilice el siguiente comando para eliminar un ladrillo:
# gluster volume remove-brick <volName> <brickName> start
Ejecutando remove-brick
con el start
La opción activa automáticamente una operación de reequilibrio para migrar los datos de los bloques eliminados al resto del volumen.
El siguiente ejemplo elimina el ladrillo 2:
root@web01:~# gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www start
Removing brick(s) can result in data loss. Do you want to Continue? (y/n) y
volume remove-brick commit force: success
Este comando le dice a GlusterFS que www
El volumen ahora mantendrá solo 2 copias de cada archivo. Le advierte que podría perder datos y le pide que continúe.
Si desea eliminar un bloque en un volumen distribuido, debe ejecutar el siguiente comando en su lugar:
root@web01:~# gluster volume remove-brick www 192.168.0.2:/srv/.bricks/www start
Puede ver el estado de remove-brick
operación usando el siguiente comando:
root@web01:~# watch gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www status
Volver a agregar un ladrillo
Esta sección explica cómo volver a agregar un bloque.
Intente volver a agregar web02 al volumen, de la siguiente manera:
root@web02:~# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: failed:
Falló. Mire los registros en web02 para ver por qué falló el comando:
root@web02:/srv/.bricks# tail /var/log/glusterfs/*log -f | grep E
[2014-05-25 00:19:04.954410] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:19:12.958620] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:40:46.923747] E [glusterd-utils.c:5377:glusterd_is_path_in_use] 0-management: /srv/.bricks/www or a prefix of it is already part of a volume
[2014-05-25 00:40:46.923789] E [glusterd-op-sm.c:3719:glusterd_op_ac_stage_op] 0-management: Stage failed on operation 'Volume Add brick', Status : -1
El problema es que /srv/.bricks/www
aún contiene los datos del momento en que web02 era miembro del volumen.
Necesita un lugar limpio para almacenar los datos. La forma más fácil de limpiar es simplemente eliminar todos los datos usando el siguiente comando:
root@web02:~# rm -rf /srv/.bricks/www
Advertencia :tenga cuidado de realizar esta acción en el host correcto (web02, que actualmente está fuera del volumen). Si comete un error, el siguiente artículo le muestra cómo recuperarse. Las acciones alternativas son mover el www
directorio fuera del camino, o para agregar el bloque usando otro directorio, como www2
.
Ahora que tiene una ubicación limpia en la que almacenar el ladrillo, agregar el ladrillo es un éxito:
root@web01:/srv# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: success
Pasos siguientes
- Cómo recuperarse de un servidor fallido en una matriz GlusterFS