Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers [2021/11/03 11:24] jimmy.olano [Compartición del directorio de intercambio entre varios servidores] |
es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers [2022/04/28 14:35] |
||
---|---|---|---|
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** | ||
- | |||
- | [[: | ||
- | |||