¡Esta es una revisión vieja del documento!


10.Compartición del directorio de intercambio entre varios servidores

Volver a Indice de Documentacion Pandora FMS

= Introducción =

Pandora FMS Dataserver utiliza los directorios contenidos en la carpeta común /var/spool/pandora/data_in para gestionar la información que recibe y envía a sus agentes.

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 <i>data_in</i>. En un arquitectura de múltiples Dataserver con una única consola, centralizaremos la gestión de los agentes utilizando NFS o GlusterFS para compartir este <i>pool</i> de información común.

Se recomienda compartir también la carpeta //pandora_console/attachment// entre las diferentes consolas de Pandora para facilitar la gestión de colecciones.

¿Qué método utilizar?

A pesar de que tanto NFS como GlusterFS nos permiten compartir los ficheros que necesitamos, están indicados para diferentes instalaciones:

  • Si los datos van a almacenarse en un servidor externo al servidor Pandora FMS y éste va a funcionar como cliente del mismo, puede utilizarse NFS.
  • Si los datos van a almacenarse en los propios servidores Pandora FMS o se quiere implementar tolerancia a fallos a nivel de software, se recomienda usar GlusterFS.

En entornos HA es obligatorio compartir los directorios //conf//, //md5//, //collections// y //netflow//, localizados en la data_in, y se recomienda compartir la carpeta //pandora_console/attachment//. La propia carpeta //data_in// **no debe compartirse**, a menos que [[Pandora:Documentation_es:Compartir_colecciones_NFS#Configurando_Tentacle_Server_para_acceso_concurrente|se configure Tentacle para el acceso concurrente]] a los archivos XML.

= Configuración de NFS =

Primeros pasos

Instalamos el paquete <i>nfs-utils</i> en<b> todos los equipos que van a compartir las carpetas </b>vía NFS:

yum install -y nfs-utils

Configurando el servidor NFS

Es importante que el servidor NFS sea una **máquina independiente** de los servidores Pandora, pues si uno de ellos se configura como NFS server y hay algún problema que impida que el servidor cliente se conecte, no se podrá acceder a los datos compartidos y Pandora **no funcionará correctamente**. Si no se puede contar con una servidor independiente, deberá usarse //GlusterFS//.

Editamos el archivo <i>/etc/export</i> agregando el siguiente contenido:

/var/spool/pandora/data_in/conf ip_cliente(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/collections ip_cliente(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/md5 ip_cliente(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/netflow ip_cliente(rw,sync,no_root_squash,no_all_squash) /var/www/html/pandora_console/attachment ip_cliente(rw,sync,no_root_squash,no_all_squash)

Donde <i>ip_cliente</i> será la dirección IP de la máquina con que se vaya a compartir el elemento. Por ejemplo: /var/spool/pandora/data_in/conf 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/collections 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/md5 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/netflow 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/www/html/pandora_console/attachment 192.168.70.10(rw,sync,no_root_squash,no_all_squash)

En caso de que tengamos el firewall levantado en nuestro sistema, abrimos los puertos correspondientes:

<b># CentOS</b> firewall-cmd –permanent –zone=public –add-service=nfs firewall-cmd –reload

Una vez hecho esto, iniciamos los servicios:

<b># CentOS</b> service rpcbind start service nfs-server start service nfs-lock start service nfs-idmap start

Configuramos NFS para que arranque en el inicio del sistema:

chkconfig rpcbind on chkconfig nfs-server on chkconfig nfs-lock on chkconfig nfs-idmap on

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 /var/spool/pandora/data_in /var/spool/pandora/data_in_locale

<b><u>Observación</u»</b> si la máquina no tiene el apache instalado (no es necesario que lo tenga), agregamos a /etc/passwd y /etc/group el usuario apache para que no haya conflictos con los permisos:

echo “apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin” » /etc/passwd echo “apache:x:48:” » /etc/group

Ajustamos los permisos de la carpeta en la que vamos a montar las unidades:

chown pandora:apache /var/spool/pandora/data_in chmod 770 /var/spool/pandora/data_in

Comprobamos que podemos montar con éxito las carpetas remotas:

mount -t nfs ip_servidor_nfs:/var/spool/pandora/data_in/conf /var/spool/pandora/data_in/conf mount -t nfs ip_servidor_nfs:/var/spool/pandora/data_in/md5 /var/spool/pandora/data_in/md5 mount -t nfs ip_servidor_nfs:/var/spool/pandora/data_in/collections /var/spool/pandora/data_in/collections mount -t nfs ip_servidor_nfs:/var/spool/pandora/data_in/netflow /var/spool/pandora/data_in/netflow

Donde <i>ip_servidor_nfs</i> es la dirección IP del servidor que presta el servicio NFS. Por ejemplo:

mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/conf /var/spool/pandora/data_in/conf mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/md5 /var/spool/pandora/data_in/md5 mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/collections /var/spool/pandora/data_in/collections mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/netflow /var/spool/pandora/data_in/netflow

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 <b>/etc/fstab</b»

# Agregamos las siguientes líneas al fichero de configuración /etc/fstab

ip_servidor_nfs:/var/spool/pandora/data_in/conf /var/spool/pandora/data_in/conf nfs defaults 0 0 ip_servidor_nfs:/var/spool/pandora/data_in/md5 /var/spool/pandora/data_in/md5 nfs defaults 0 0 ip_servidor_nfs:/var/spool/pandora/data_in/collections /var/spool/pandora/data_in/collections nfs defaults 0 0 ip_servidor_nfs:/var/spool/pandora/data_in/netflow /var/spool/pandora/data_in/netflow nfs defaults 0 0 ip_servidor_nfs:/var/www/html/pandora_console/attachment /var/www/html/pandora_console/attachment nfs defaults 0 0

Donde <i>ip_servidor_nfs</i> 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 desactivado o con las reglas apropiadas activas.
  • Firewall desactivado o con las reglas apropiadas activas.
    • El puerto 24009/tcp debe estar abierto.
  • Nombre y dirección IP de todas las máquinas en el archivo /etc/hosts de ambos servidores implicados.
  • Creación de discos adicionales sin particionar en todos los servidores.

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)

En esta guía utilizaremos dos nodos llamados //gluster1.example.com// y //gluster2.example.com//. Creamos un nuevo volumen físico usando el disco /dev/xvdb:

pvcreate /dev/xvdb

  //Physical volume “/dev/xvdb” successfully created//

Creamos un grupo de volúmenes en /dev/xvdb:

vgcreate vg_gluster /dev/xvdb

  //Volume group “vg_gluster”  successfully created//

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

//Logical volume "brick1" created.//

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 /dev/vg_gluster/brick1

Creamos el punto de montaje y montamos el brick XFS:

mkdir -p /glusterfs/brick1 mount /dev/vg_gluster/brick1 /glusterfs/brick1

Abrimos el archivo /etc/fstab, en el que hay que añadir la siguiente línea:

/dev/vg_gluster/brick1 /glusterfs/brick1 xfs defaults 0 0

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//
 
  //State: Peer in Cluster (Connected)//

Creación del volumen HA

A continuación usaremos la partición XFS /glusterfs/brick1 en ambos nodos para crear un volumen replicado de alta disponibilidad (HA).

Primero creamos el subdirectorio en el punto de montaje /glusterfs/brick1. Será necesario para el funcionamiento de GlusterFS.

mkdir /glusterfs/brick1/brick

Crear un volumen replicado GlusterFS:

Ejecuta este comando **solamente en uno** de los nodos (//gluster1.example.com// en el ejemplo).

gluster volume create glustervol1 replica 2 transport tcp gluster1.example.com:/glusterfs/brick1/brick \ gluster2.example.com:/glusterfs/brick1/brick

 //volume create: glustervol1: success: please start the volume to access data//

gluster volume start glustervol1

 //volume start: glustervol1: success//

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: tcp//
 //Bricks://
 //Brick1: gluster1.example.com:/glusterfs/brick1/brick//
 //Brick2: gluster2.example.com:/glusterfs/brick1/brick//
 //Options Reconfigured://
  //performance.readdir-ahead: on//

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 /pandora_files/

La ruta /pandora_files/ sólo se utiliza como ejemplo, y puede establecerse una diferente.

Montamos los volúmenes GlusterFS en el cliente: mount -t glusterfs gluster1.example.com:/glustervol1 /pandora_files/

Añadimos la siguiente línea al /etc/fstab: gluster1.example.com:/glustervol1 /pandora_files glusterfs defaults,_netdev 0 0

Una vez montada la partición en /pandora_files/ se pueden crear todos los directorios que necesitemos dentro de esta carpeta: cd /pandora_files/ mkdir collections md5 conf netflow attachment

En este paso se deben copiar todos estos directorios desde la carpeta original de /var/spool/pandora/data_in: cp -rp /var/spool/pandora/data_in/conf /pandora_files/ cp -rp /var/spool/pandora/data_in/md5 /pandora_files/ cp -rp /var/spool/pandora/data_in/collections /pandora_files/ cp -rp /var/spool/pandora/data_in/netflow /pandora_files/ cp -rp /var/www/html/pandora_console/attachment /pandora_files/

Eliminamos las carpetas antiguas: rm -rf /var/spool/pandora/data_in/conf rm -rf /var/spool/pandora/data_in/md5 rm -rf /var/spool/pandora/data_in/collections rm -rf /var/spool/pandora/data_in/netflow rm -rf /var/www/html/pandora_console/attachment

Y, por último, hacemos enlaces simbólicos (en los dos servidores) al cluster: ln -s /pandora_files/conf /var/spool/pandora/data_in/ ln -s /pandora_files/md5 /var/spool/pandora/data_in/ ln -s /pandora_files/collections /var/spool/pandora/data_in/ ln -s /pandora_files/netflow /var/spool/pandora/data_in/ ln -s /pandora_files/attachment /var/www/html/pandora_console/

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 [[Pandora:Documentation_es:Compartir_colecciones_NFS#Ampliar_volumenes|indica el siguiente punto de la guía]].

Ampliar volúmenes

Es posible ampliar el volumen utilizado por GlusterFS sin necesidad de detener el servicio, incrementando el número de bricks en un volumen.

Para ello hay que crear un nuevo disco, siguiendo el mismo procedimiento que antes: lvcreate -L 5G -n brick2 vg_gluster

 Logical volume "brick2" created.

Darle formato XFS: mkfs.xfs /dev/vg_gluster/brick2

Crear punto de montaje y montar el nuevo brick: mkdir -p /bricks/brick2 mount /dev/vg_gluster/brick2 /bricks/brick2

Extender en /etc/fstab: /dev/vg_gluster/brick2 /bricks/brick2 xfs defaults 0 0

Crear la carpeta para el segundo brick: mkdir /glusterfs/brick2/brick

Extender el volumen: gluster volume add-brick glustervol1 gluster1.example.com:/glusterfs/brick2/brick \ gluster2.example.com:/glusterfs/brick2/brick

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: tcp//
 //Bricks://
 //Brick1: gluster1.example.com:/glusterfs/brick1/brick//
 //Brick2: gluster2.example.com:/glusterfs/brick1/brick//
 //Brick3: gluster1.example.com:/glusterfs/brick2/brick//
 //Brick4: gluster2.example.com:/glusterfs/brick2/brick//

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 /glusterfs/brick*/brick/

= 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), deberemos configurar los servidores de Tentacle de ambos equipos de tal manera que distribuyan los ficheros XML en carpetas separadas. De esta manera, evitaremos problemas a la hora de procesar los ficheros por parte de los Dataserver de ambos servidores Pandora.

Para ello, creamos dos carpetas dentro del directorio /var/spool/pandora/data_in:

mkdir /var/spool/pandora/data_in/xml_srv1 mkdir /var/spool/pandora/data_in/xml_srv2

Corregimos los permisos de ambos directorios:

chmod pandora:apache /var/spool/pandora/data_in/xml_srv1 chmod pandora:apache /var/spool/pandora/data_in/xml_srv2

En caso de haber seguido la guía de GlusterFS, debe sustituirse ///var/spool/pandora/data_in/// por ///pandora_files/// en los pasos anteriores, y hacerse enlaces simbólicos: ln -s /pandora_files/xml_srv1 /var/spool/pandora/data_in/ ln -s /pandora_files/xml_srv2 /var/spool/pandora/data_in/

Editamos el valor de TENTACLE_EXT_OPTS en el fichero /etc/init.d/tentacle_serverd para ajustar la carpeta de entrega de los ficheros XML:

TENTACLE_EXT_OPTS=“-i.*\.conf:conf;.*\.md5:md5;.*\.zip:collections”

En el servidor número 1 pasa a ser:

TENTACLE_EXT_OPTS=“-i.*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.data:xml_srv1”

En el servidor número 2 pasa a ser:

TENTACLE_EXT_OPTS=“-i.*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.data:xml_srv2”

Por último, editamos el fichero de configuración de ambos servidores de pandora de la siguiente manera:

# Servidor Pandora número 1 # incomingdir: Defines directory where incoming data packets are stored # You could set directory relative to base path or absolute, starting with / incomingdir /var/spool/pandora/data_in/xml_srv1

# Servidor Pandora número 2 # incomingdir: Defines directory where incoming data packets are stored # You could set directory relative to base path or absolute, starting with / incomingdir /var/spool/pandora/data_in/xml_srv2

Después de aplicar todos los cambios indicados, reiniciamos tanto el servicio pandora_server como el servicio tentacle_serverd en <b>ambos</b> servidores.

Volver a Indice de Documentacion Pandora FMS

Pandora FMS