Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa Próxima revisión Ambos lados, revisión siguiente | ||
es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers [2021/04/17 10:56] 0.0.0.0 created |
es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers [2021/11/03 11:25] jimmy.olano |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Compartición del directorio de intercambio entre varios servidores ====== | ||
+ | |||
+ | {{indexmenu_n> | ||
+ | |||
+ | [[: | ||
+ | |||
+ | ===== Introducción ===== | ||
+ | |||
+ | Pandora FMS Dataserver utiliza los directorios contenidos en la carpeta común / | ||
+ | |||
+ | Ese directorio también debe ser accesible por la consola de Pandora para que las instrucciones que emitamos contra los agentes lleguen a estos. Ya sean configuraciones o colecciones. | ||
+ | |||
+ | Si tenemos varios servidores con varias consolas, en una instalación por defecto, cada consola podrá gestionar los agentes del servidor en el que está alojada. | ||
+ | |||
+ | Supongamos que en nuestra implantación tenemos varios Pandora FMS Datacenter trabajando en un entorno común. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Cada uno de los agentes que gestione cada servidor, se comunicará con el Dataserver que tenga asignado utilizando la carpeta // | ||
+ | |||
+ | <WRAP center round tip 60%> Se recomienda compartir también la carpeta // | ||
+ | ==== ¿Qué método utilizar? ==== | ||
+ | |||
+ | A pesar de que tanto NFS como GlusterFS nos permiten compartir los ficheros que necesitamos, | ||
+ | |||
+ | * Si los datos van a almacenarse en un **servidor externo** | ||
+ | * Si los datos van a almacenarse **en los propios servidores** | ||
+ | |||
+ | <WRAP center round tip 60%> En entornos HA es obligatorio compartir los directorios //conf//, //md5//, // | ||
+ | |||
+ | ===== Configuración de NFS ===== | ||
+ | |||
+ | ==== Primeros pasos ==== | ||
+ | |||
+ | Instalamos el paquete // | ||
+ | < | ||
+ | |||
+ | yum install -y nfs-utils | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Configurando el servidor NFS ==== | ||
+ | |||
+ | <WRAP center round important 60%> Es importante que el servidor NFS sea una **máquina independiente** | ||
+ | |||
+ | Editamos el archivo /// | ||
+ | |||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Donde // | ||
+ | |||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | En caso de que tengamos el firewall levantado en nuestro sistema, abrimos los puertos correspondientes: | ||
+ | |||
+ | < | ||
+ | # CentOS | ||
+ | firewall-cmd --permanent --zone=public --add-service=nfs | ||
+ | firewall-cmd --reload | ||
+ | |||
+ | </ | ||
+ | |||
+ | Una vez hecho esto, iniciamos los servicios: | ||
+ | |||
+ | < | ||
+ | **# CentOS** | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Configuramos NFS para que arranque en el inicio del sistema: | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Para refrescar cualquier cambio en la configuración de /etc/export reiniciar nfs-server | ||
+ | |||
+ | < | ||
+ | service nfs-server restart | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Configurando los clientes NFS ==== | ||
+ | |||
+ | Primero hacemos un backup del directorio: | ||
+ | |||
+ | < | ||
+ | mv / | ||
+ | |||
+ | </ | ||
+ | |||
+ | **__Observación__: | ||
+ | |||
+ | < | ||
+ | echo " | ||
+ | echo " | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ajustamos los permisos de la carpeta en la que vamos a montar las unidades: | ||
+ | |||
+ | < | ||
+ | chown pandora: | ||
+ | chmod 770 / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Comprobamos que podemos montar con éxito las carpetas remotas: | ||
+ | |||
+ | < | ||
+ | mount -t nfs [IP_SERVIDOR_NFS]:/ | ||
+ | mount -t nfs [IP_SERVIDOR_NFS]:/ | ||
+ | mount -t nfs [IP_SERVIDOR_NFS]:/ | ||
+ | mount -t nfs [IP_SERVIDOR_NFS]:/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Donde [IP_SERVIDOR_NFS] es la dirección IP del servidor que presta el servicio NFS. Por ejemplo: | ||
+ | |||
+ | < | ||
+ | mount -t nfs 192.168.70.10:/ | ||
+ | mount -t nfs 192.168.70.10:/ | ||
+ | mount -t nfs 192.168.70.10:/ | ||
+ | mount -t nfs 192.168.70.10:/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Si el comando anterior falla, comprobamos: | ||
+ | |||
+ | * El estado de los firewall. | ||
+ | * Si estamos lanzando el comando como root. | ||
+ | * Si la carpeta donde vamos a realizar el montaje existe. | ||
+ | |||
+ | Si todo es correcto hasta aquí, configuramos el sistema para que se monte de manera automática la carpeta al inicio mediante la edición del fichero **/ | ||
+ | |||
+ | < | ||
+ | # Agregamos las siguientes líneas al fichero de configuración /etc/fstab | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | [IP_SERVIDOR_NFS]:/ | ||
+ | [IP_SERVIDOR_NFS]:/ | ||
+ | [IP_SERVIDOR_NFS]:/ | ||
+ | [IP_SERVIDOR_NFS]:/ | ||
+ | [IP_SERVIDOR_NFS]:/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Donde [IP_SERVIDOR_NFS] es la dirección IP del servidor que presta el servicio NFS. | ||
+ | |||
+ | ===== Configuración de GlusterFS ===== | ||
+ | |||
+ | La configuración GlusterFS nos permite compartir los directorios clave de Pandora FMS entre los servidores y por tanto tener disponibilidad de los datos cuando haya una caída en una de las máquinas. Gracias a este sistema siempre tenemos un recurso activo y podremos acceder a nuestros datos aunque no estén todas las máquinas en funcionamiento. | ||
+ | |||
+ | ==== Requisitos mínimos ==== | ||
+ | |||
+ | * **Selinux** | ||
+ | * **Firewall** | ||
+ | * El **puerto 24009/ | ||
+ | * Nombre y dirección IP de todas las máquinas en el archivo **/ | ||
+ | * Creación de **discos adicionales sin particionar** | ||
+ | |||
+ | ==== Instalación de paquetes ==== | ||
+ | |||
+ | Para instalar GlusterFS, buscamos las versiones disponibles: | ||
+ | |||
+ | < | ||
+ | yum search centos-release-gluster | ||
+ | |||
+ | </ | ||
+ | |||
+ | E instalamos la versión estable (LTS) más reciente: | ||
+ | |||
+ | < | ||
+ | yum install centos-release-gluster37 | ||
+ | yum install glusterfs glusterfs-cli glusterfs-libs glusterfs-fuse | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Creación de las particiones XFS (bricks) ==== | ||
+ | |||
+ | <WRAP center round tip 60%> En esta guía utilizaremos dos nodos llamados // | ||
+ | |||
+ | Creamos un nuevo volumen físico usando el disco /dev/xvdb: | ||
+ | |||
+ | < | ||
+ | pvcreate /dev/xvdb | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Creamos un grupo de volúmenes en /dev/xvdb: | ||
+ | |||
+ | < | ||
+ | vgcreate vg_gluster /dev/xvdb | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Creamos un volumen brick1 para XFS bricks en ambos nodos del cluster, indicando el espacio que quiere asignarse al volumen con el parámetro //-L//: | ||
+ | |||
+ | < | ||
+ | lvcreate -L 5G -n brick1 vg_gluster | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | De manera alternativa puede indicarse el espacio a asignar como un porcentaje del disco: | ||
+ | |||
+ | < | ||
+ | lvcreate -l 100%FREE -n brick1 vg_gluster | ||
+ | |||
+ | </ | ||
+ | |||
+ | Configuramos el filesystem como XFS: | ||
+ | |||
+ | < | ||
+ | mkfs.xfs / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Creamos el punto de montaje y montamos el brick XFS: | ||
+ | |||
+ | < | ||
+ | mkdir -p / | ||
+ | mount / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Abrimos el archivo /etc/fstab, en el que hay que añadir la siguiente línea: | ||
+ | |||
+ | < | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Habilitamos e iniciamos glusterfsd.service en ambos nodos: | ||
+ | |||
+ | < | ||
+ | systemctl enable glusterd.service --now | ||
+ | |||
+ | </ | ||
+ | |||
+ | Desde el primer nodo GlusterFS, conectamos con el segundo y creamos el Trusted Pool (Storage Cluster). | ||
+ | |||
+ | < | ||
+ | gluster peer probe gluster2.example.com | ||
+ | peer probe: success. | ||
+ | |||
+ | </ | ||
+ | |||
+ | Verificamos el cluster peer: | ||
+ | |||
+ | < | ||
+ | gluster peer status | ||
+ | Number of Peers: 1 | ||
+ | Hostname: gluster2.example.com | ||
+ | Uuid: e528dc23-689c-4306-89cd-1d21a2153057 | ||
+ | |||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Creación del volumen HA ==== | ||
+ | |||
+ | A continuación usaremos la partición XFS / | ||
+ | |||
+ | Primero creamos el subdirectorio en el punto de montaje / | ||
+ | |||
+ | < | ||
+ | mkdir / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Crear un volumen replicado GlusterFS: | ||
+ | |||
+ | <WRAP center round important 60%> Ejecuta este comando **solamente en uno** de los nodos (// | ||
+ | |||
+ | < | ||
+ | gluster volume create glustervol1 replica 2 transport tcp gluster1.example.com:/ | ||
+ | gluster2.example.com:/ | ||
+ | volume create: glustervol1: | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | gluster volume start glustervol1 | ||
+ | volume start: glustervol1: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Verifica los volúmenes GlusterFS: | ||
+ | |||
+ | < | ||
+ | gluster volume info all | ||
+ | Volume Name: glustervol1 | ||
+ | Type: Replicate | ||
+ | Volume ID: 6953a675-f966-4ae5-b458-e210ba8ae463 | ||
+ | Status: Started | ||
+ | Number of Bricks: 1 x 2 = 2 | ||
+ | Transport-type: | ||
+ | Bricks: | ||
+ | Brick1: gluster1.example.com:/ | ||
+ | Brick2: gluster2.example.com:/ | ||
+ | Options Reconfigured: | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Montaje de volúmenes en los clientes ==== | ||
+ | |||
+ | Instalamos los paquetes de cliente para GlusterFS: | ||
+ | |||
+ | < | ||
+ | yum install glusterfs glusterfs-fuse attr -y | ||
+ | |||
+ | </ | ||
+ | |||
+ | Creamos la carpeta de archivos para Pandora: | ||
+ | |||
+ | < | ||
+ | mkdir / | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> La ruta / | ||
+ | |||
+ | Montamos los volúmenes GlusterFS en el cliente: | ||
+ | |||
+ | < | ||
+ | mount -t glusterfs gluster1.example.com:/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Añadimos la siguiente línea al /etc/fstab: | ||
+ | |||
+ | < | ||
+ | gluster1.example.com:/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Una vez montada la partición en / | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | mkdir collections md5 conf netflow attachment | ||
+ | |||
+ | </ | ||
+ | |||
+ | En este paso se deben copiar todos estos directorios desde la carpeta original de / | ||
+ | |||
+ | < | ||
+ | cp -rp / | ||
+ | cp -rp / | ||
+ | cp -rp / | ||
+ | cp -rp / | ||
+ | cp -rp / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Eliminamos las carpetas antiguas: | ||
+ | |||
+ | < | ||
+ | rm -rf / | ||
+ | rm -rf / | ||
+ | rm -rf / | ||
+ | rm -rf / | ||
+ | rm -rf / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Y, por último, hacemos enlaces simbólicos (en los dos servidores) al cluster: | ||
+ | |||
+ | < | ||
+ | ln -s / | ||
+ | ln -s / | ||
+ | ln -s / | ||
+ | ln -s / | ||
+ | ln -s / | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> En este punto, los dos servidores estarán compartiendo los directorios claves de Pandora, por lo que el proceso está completo. En caso de necesitar ampliar el volumen compartido, puede hacerse como [[: | ||
+ | |||
+ | ==== Ampliar volúmenes ==== | ||
+ | |||
+ | Es posible ampliar el volumen utilizado por GlusterFS sin necesidad de detener el servicio, incrementando el número de // | ||
+ | |||
+ | Para ello hay que crear un nuevo disco, siguiendo el mismo procedimiento que antes: | ||
+ | < | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Darle formato XFS: | ||
+ | |||
+ | < | ||
+ | mkfs.xfs / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Crear punto de montaje y montar el nuevo brick: | ||
+ | |||
+ | < | ||
+ | mkdir -p / | ||
+ | mount / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Extender en /etc/fstab: | ||
+ | |||
+ | < | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Crear la carpeta para el segundo brick: | ||
+ | |||
+ | < | ||
+ | mkdir / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Extender el volumen: | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Verificar el volumen: | ||
+ | |||
+ | < | ||
+ | gluster volume info glustervol1 | ||
+ | Volume Name: glustervol1 | ||
+ | Type: Distributed-Replicate | ||
+ | Volume ID: 6953a675-f966-4ae5-b458-e210ba8ae463 | ||
+ | Status: Started | ||
+ | Number of Bricks: 2 x 2 = 4 | ||
+ | Transport-type: | ||
+ | Bricks: | ||
+ | Brick1: gluster1.example.com:/ | ||
+ | Brick2: gluster2.example.com:/ | ||
+ | Brick3: gluster1.example.com:/ | ||
+ | Brick4: gluster2.example.com:/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Comprobar el uso en disco antes del reequilibrado: | ||
+ | |||
+ | < | ||
+ | df -h | grep brick | ||
+ | |||
+ | </ | ||
+ | |||
+ | Reequilibrar: | ||
+ | < | ||
+ | |||
+ | gluster volume rebalance glustervol1 start | ||
+ | |||
+ | </ | ||
+ | |||
+ | Comprobar el reequilibrado: | ||
+ | |||
+ | < | ||
+ | gluster volume rebalance glustervol1 status | ||
+ | |||
+ | </ | ||
+ | |||
+ | Volver a comprobar el uso en disco: | ||
+ | |||
+ | < | ||
+ | df -h | grep brick | ||
+ | |||
+ | </ | ||
+ | |||
+ | Comprobar los archivos en los bricks: | ||
+ | < | ||
+ | |||
+ | ls -l / | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Configurando Tentacle Server para acceso concurrente ===== | ||
+ | |||
+ | En caso de querer almacenar los archivos XML de los agentes en el mismo disco compartido (en lugar de que los gestione localmente cada uno de los servidores), | ||
+ | |||
+ | Para ello, creamos dos carpetas dentro del directorio /// | ||
+ | |||
+ | < | ||
+ | mkdir / | ||
+ | mkdir / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Corregimos los permisos de ambos directorios: | ||
+ | |||
+ | < | ||
+ | chmod pandora: | ||
+ | chmod pandora: | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> En caso de haber seguido la guía de GlusterFS, debe sustituirse /// | ||
+ | |||
+ | < | ||
+ | ln -s / | ||
+ | ln -s / | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Editamos el valor de TENTACLE_EXT_OPTS en el fichero / | ||
+ | |||
+ | < | ||
+ | TENTACLE_EXT_OPTS=" | ||
+ | |||
+ | </ | ||
+ | |||
+ | En el servidor número 1 pasa a ser: | ||
+ | |||
+ | < | ||
+ | TENTACLE_EXT_OPTS=" | ||
+ | |||
+ | </ | ||
+ | |||
+ | En el servidor número 2 pasa a ser: | ||
+ | |||
+ | < | ||
+ | TENTACLE_EXT_OPTS=" | ||
+ | |||
+ | </ | ||
+ | |||
+ | Por último, editamos el fichero de configuración de ambos servidores de pandora de la siguiente manera: | ||
+ | |||
+ | < | ||
+ | # Servidor Pandora número 1 | ||
+ | # incomingdir: | ||
+ | # You could set directory relative to base path or absolute, starting with / | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | # Servidor Pandora número 2 | ||
+ | # incomingdir: | ||
+ | # You could set directory relative to base path or absolute, starting with / | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Después de aplicar todos los cambios indicados, reiniciamos tanto el servicio pandora_server como el servicio tentacle_serverd en **ambos** | ||
+ | |||
+ | [[: | ||
+ | |||