Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

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:25]
jimmy.olano
es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers [2022/06/27 11:33] (actual)
Línea 17: Línea 17:
 {{  :wiki:nfs_schema.png  }} {{  :wiki:nfs_schema.png  }}
  
-Cada uno de los agentes que gestione cada servidor, se comunicará con el Dataserver que tenga asignado utilizando la carpeta //data_in//. 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 //pool// de información común.+Cada uno de los agentes que gestione cada servidor, se comunicará con el Dataserver que tenga asignado utilizando la carpeta //data_in//. En un arquitectura de múltiples Dataserver con una única consola, centralizaremos la gestión de los agentes utilizando NFS para compartir este //pool// de información común.
  
 <WRAP center round tip 60%> Se recomienda compartir también la carpeta //pandora_console/attachment// entre las diferentes consolas de Pandora para facilitar la gestión de colecciones. </WRAP> <WRAP center round tip 60%> Se recomienda compartir también la carpeta //pandora_console/attachment// entre las diferentes consolas de Pandora para facilitar la gestión de colecciones. </WRAP>
-==== ¿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: +<WRAP center round tip 60%> 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 [[:es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers#configurando_tentacle_server_para_acceso_concurrente|se configure Tentacle para el acceso concurrente]] a los archivos XML. </WRAP>
- +
-  * 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**. +
- +
-<WRAP center round tip 60%> 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 [[:es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers#configurando_tentacle_server_para_acceso_concurrente|se configure Tentacle para el acceso concurrente]] a los archivos XML. </WRAP>+
  
 ===== Configuración de NFS ===== ===== Configuración de NFS =====
Línea 33: Línea 27:
 ==== Primeros pasos ==== ==== Primeros pasos ====
  
-Instalamos el paquete //nfs-utils//  en** todos los equipos que van a compartir las carpetas **vía NFS:+Instalamos el paquete //nfs-utils// en** todos los equipos que van a compartir las carpetas **vía NFS:
 <code> <code>
  
Línea 42: Línea 36:
 ==== Configurando el servidor NFS ==== ==== Configurando el servidor NFS ====
  
-<WRAP center round important 60%> 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//. </WRAP> +<WRAP center round important 60%> 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**. </WRAP>
- +
-Editamos el archivo ///etc/export//  agregando el siguiente contenido:+
  
 +Editamos el archivo ///etc/export// agregando el siguiente contenido:
 <code> <code>
 /var/spool/pandora/data_in/conf [IP_CLIENTE](rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/conf [IP_CLIENTE](rw,sync,no_root_squash,no_all_squash)
Línea 55: Línea 48:
 </code> </code>
  
-Donde //[IP_CLIENTE]//  será la dirección IP de la máquina con que se vaya a compartir el elemento. Por ejemplo: +Donde //[IP_CLIENTE]// será la dirección IP de la máquina con que se vaya a compartir el elemento. Por ejemplo:
 <code> <code>
 /var/spool/pandora/data_in/conf 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/conf 192.168.70.10(rw,sync,no_root_squash,no_all_squash)
Línea 102: Línea 94:
  
 </code> </code>
 +
  
 ==== Configurando los clientes NFS ==== ==== Configurando los clientes NFS ====
Línea 112: Línea 105:
 </code> </code>
  
-**__Observación__:**  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: +**__Observación__:** 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:
 <code> <code>
 echo "apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin">> /etc/passwd echo "apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin">> /etc/passwd
Línea 171: Línea 163:
  
 Donde [IP_SERVIDOR_NFS] es la dirección IP del servidor que presta el servicio 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**  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: 
- 
-<code> 
-yum search centos-release-gluster 
- 
-</code> 
- 
-E instalamos la versión estable (LTS) más reciente: 
- 
-<code> 
- yum install centos-release-gluster37 
- yum install glusterfs glusterfs-cli glusterfs-libs glusterfs-fuse 
- 
-</code> 
- 
-==== Creación de las particiones XFS (bricks) ==== 
- 
-<WRAP center round tip 60%> En esta guía utilizaremos dos nodos llamados //gluster1.example.com//  y //gluster2.example.com//. </WRAP> 
- 
-Creamos un nuevo volumen físico usando el disco /dev/xvdb: 
- 
-<code> 
-pvcreate /dev/xvdb 
-   Physical volume “/dev/xvdb” successfully created 
- 
-</code> 
- 
-Creamos un grupo de volúmenes en /dev/xvdb: 
- 
-<code> 
-vgcreate vg_gluster /dev/xvdb 
-   Volume group “vg_gluster”  successfully created 
- 
-</code> 
- 
-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//: 
- 
-<code> 
-lvcreate -L 5G -n brick1 vg_gluster 
- Logical volume "brick1" created. 
- 
-</code> 
- 
-De manera alternativa puede indicarse el espacio a asignar como un porcentaje del disco: 
- 
-<code> 
-lvcreate -l 100%FREE -n brick1 vg_gluster 
- 
-</code> 
- 
-Configuramos el filesystem como XFS: 
- 
-<code> 
-mkfs.xfs /dev/vg_gluster/brick1 
- 
-</code> 
- 
-Creamos el punto de montaje y montamos el brick XFS: 
- 
-<code> 
- mkdir -p /glusterfs/brick1 
- mount /dev/vg_gluster/brick1 /glusterfs/brick1 
- 
-</code> 
- 
-Abrimos el archivo /etc/fstab, en el que hay que añadir la siguiente línea: 
- 
-<code> 
-/dev/vg_gluster/brick1 /glusterfs/brick1 xfs defaults 0 0 
- 
-</code> 
- 
-Habilitamos e iniciamos glusterfsd.service en ambos nodos: 
- 
-<code> 
-systemctl enable glusterd.service --now 
- 
-</code> 
- 
-Desde el primer nodo GlusterFS, conectamos con el segundo y creamos el Trusted Pool (Storage Cluster). 
- 
-<code> 
-gluster peer probe gluster2.example.com 
-  peer probe: success. 
- 
-</code> 
- 
-Verificamos el cluster peer: 
- 
-<code> 
-gluster peer status 
-  Number of Peers: 1 
-  Hostname: gluster2.example.com 
-  Uuid: e528dc23-689c-4306-89cd-1d21a2153057 
- 
-   State: Peer in Cluster (Connected) 
- 
-</code> 
- 
-==== 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. 
- 
-<code> 
-mkdir /glusterfs/brick1/brick 
- 
-</code> 
- 
-Crear un volumen replicado GlusterFS: 
- 
-<WRAP center round important 60%> Ejecuta este comando **solamente en uno**  de los nodos (//gluster1.example.com//  en el ejemplo). </WRAP> 
- 
-<code> 
-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 
- 
-</code> 
- 
-<code> 
-gluster volume start glustervol1 
-  volume start: glustervol1: success 
- 
-</code> 
- 
-Verifica los volúmenes GlusterFS: 
- 
-<code> 
-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 
- 
-</code> 
- 
-==== Montaje de volúmenes en los clientes ==== 
- 
-Instalamos los paquetes de cliente para GlusterFS: 
- 
-<code> 
-yum install glusterfs glusterfs-fuse attr -y 
- 
-</code> 
- 
-Creamos la carpeta de archivos para Pandora: 
- 
-<code> 
-mkdir /pandora_files/ 
- 
-</code> 
- 
-<WRAP center round tip 60%> La ruta /pandora_files/ sólo se utiliza como ejemplo, y puede establecerse una diferente. </WRAP> 
- 
-Montamos los volúmenes GlusterFS en el cliente: 
- 
-<code> 
-mount -t glusterfs gluster1.example.com:/glustervol1 /pandora_files/ 
- 
-</code> 
- 
-Añadimos la siguiente línea al /etc/fstab: 
- 
-<code> 
-gluster1.example.com:/glustervol1 /pandora_files glusterfs defaults,_netdev 0 0 
- 
-</code> 
- 
-Una vez montada la partición en /pandora_files/ se pueden crear todos los directorios que necesitemos dentro de esta carpeta: 
- 
-<code> 
- cd /pandora_files/ 
- mkdir collections md5 conf netflow attachment 
- 
-</code> 
- 
-En este paso se deben copiar todos estos directorios desde la carpeta original de /var/spool/pandora/data_in: 
- 
-<code> 
- 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/ 
- 
-</code> 
- 
-Eliminamos las carpetas antiguas: 
- 
-<code> 
- 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 
- 
-</code> 
- 
-Y, por último, hacemos enlaces simbólicos (en los dos servidores) al cluster: 
- 
-<code> 
- 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/ 
- 
-</code> 
- 
-<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 [[:es:documentation:07_technical_annexes:10_share_var_spool_directory_between_several_pandora_servers#ampliar_volumenes|indica el siguiente punto de la guía]]. </WRAP> 
- 
-==== 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: 
-<code> 
- 
- lvcreate -L 5G -n brick2 vg_gluster 
-   Logical volume "brick2" created. 
- 
-</code> 
- 
-Darle formato XFS: 
- 
-<code> 
-mkfs.xfs /dev/vg_gluster/brick2 
- 
-</code> 
- 
-Crear punto de montaje y montar el nuevo brick: 
- 
-<code> 
- mkdir -p /bricks/brick2 
- mount /dev/vg_gluster/brick2 /bricks/brick2 
- 
-</code> 
- 
-Extender en /etc/fstab: 
- 
-<code> 
-/dev/vg_gluster/brick2 /bricks/brick2 xfs defaults 0 0 
- 
-</code> 
- 
-Crear la carpeta para el segundo brick: 
- 
-<code> 
-mkdir /glusterfs/brick2/brick 
- 
-</code> 
- 
-Extender el volumen: 
- 
-<code> 
- gluster volume add-brick glustervol1 gluster1.example.com:/glusterfs/brick2/brick \ 
- gluster2.example.com:/glusterfs/brick2/brick 
- 
-</code> 
- 
-Verificar el volumen: 
- 
-<code> 
-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 
- 
-</code> 
- 
-Comprobar el uso en disco antes del reequilibrado: 
- 
-<code> 
-df -h | grep brick 
- 
-</code> 
- 
-Reequilibrar: 
-<code> 
- 
-gluster volume rebalance glustervol1 start 
- 
-</code> 
- 
-Comprobar el reequilibrado: 
- 
-<code> 
-gluster volume rebalance glustervol1 status 
- 
-</code> 
- 
-Volver a comprobar el uso en disco: 
- 
-<code> 
-df -h | grep brick 
- 
-</code> 
- 
-Comprobar los archivos en los bricks: 
-<code> 
- 
-ls -l /glusterfs/brick*/brick/ 
- 
-</code> 
  
 ===== Configurando Tentacle Server para acceso concurrente ===== ===== Configurando Tentacle Server para acceso concurrente =====
Línea 527: Línea 183:
  
 </code> </code>
- 
-<WRAP center round important 60%> 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: 
- 
-<code> 
- ln -s /pandora_files/xml_srv1 /var/spool/pandora/data_in/ 
- ln -s /pandora_files/xml_srv2 /var/spool/pandora/data_in/ 
- 
-</code> 
- 
-</WRAP> 
  
 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: 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:
ºº