Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Servidores, servicios y puertos

Servidor: zacatuche2.conabio.gob.mx

Servicio

Entorno

Directorio src

Puerto

Versión desplegada

Elasticsearch

Status
colourGreen
titleEstable

9220

7.17.11

snib-v2-gateway

Status
colourGreen
titleEstable

/srv/snib_v2-stable

4000

snib-v2-cat

Status
colourGreen
titleEstable

/srv/cat-stable

4001

v0.2.1

snib-v2-ejemplares

Status
colourGreen
titleEstable

/srv/occ-stable

4002

v0.2.3

snib-v2-gateway

Status
colourRed
titleDESARROLLO

/srv/snib_v2-dev

5000

snib-v2-cat

Status
colourRed
titleDESARROLLO

/srv/cat-dev

5001

055ad24

snib-v2-ejemplares

Status
colourRed
titleDESARROLLO

/srv/occ-dev

5002

v0.2.3

Elasticsearch

Version actual: 7.17.11

La versión de elasticsearch usada es la disponible en los repositorios de Ubuntu por lo que tanto su instalación como su actualización se hace usando apt.

Índices

Índice

Servicios conectados

Descripción

index-cat

  • snib-v2-cat@stable

  • snib-v2-cat@dev

Aquí se encuentra lo relacionado a las búsquedas disponibles para el CAT de CONABIO.

index-snib-occ

  • index-v2-ejemplares@stable

  • index-v2-ejemplares@dev

Índice para los registros biológicos del SNIB, este ínidice puede realizar consultas espaciales. Los campos indizados están con los nombre de DwC.

index-snib

  • index-v2-ejemplares@dev

Índice para los registros biológicos del SNIB, este ínidice puede realizar consultas espaciales.

Los índices tienen un mapping definido. Dichos mapeos se encuentran en el repositorio: https://github.com/CONABIO/elastic-mappings-snib-v2/ .

El mapeo define los tipos de datos, lexers y stemmers que se usan para que las búsquedas obtegan la información relevante. Para usar estos mapeos se puede consultar la documentación: https://www.elastic.co/guide/en/elasticsearch/reference/7.17/explicit-mapping.html .

Instalación de Elasticsearch en Ubuntu

Sigue estos pasos para instalar Elasticsearch en Ubuntu desde los repositorios oficiales:

  • Actualizar los paquetes existentes:

Code Block
languagebash
sudo apt update
  • Instalar el paquete de transporte de capa de seguridad (Transport Layer Security, TLS):

Code Block
languagebash
sudo apt install apt-transport-https
  • Importar la clave GPG de Elasticsearch:

Code Block
languagebash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  • Agregar el repositorio de Elasticsearch:

Code Block
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
  • Asegúrate de ajustar la versión (en este caso, 7.x).

  • Actualizar los repositorios nuevamente:

Code Block
sudo apt update
  • Instalar Elasticsearch:

Code Block
sudo apt install elasticsearch
  • Habilitar y comenzar el servicio Elasticsearch:

Code Block
languagebash
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
  • Verificar el estado de Elasticsearch:

Code Block
sudo systemctl status elasticsearch

Mantenimiento y actualización

Para mantener Elasticsearch actualizado, sigue estos pasos:

  • Actualizar la lista de paquetes y actualizar Elasticsearch:

Code Block
languagebash
sudo apt update
sudo apt upgrade elasticsearch
  • Reiniciar el servicio después de la actualización:

Code Block
sudo systemctl restart elasticsearch

Configuraciones especiales

/etc/elasticsearch/elasticsearch.yml

Code Block
languageyaml
# ---------------------------------- Cluster -----------------------------------
#
cluster.name: snib-v2-data
#
# ------------------------------------ Node ------------------------------------
#
node.name: zacatuche2-main
#

# ----------------------------------- Paths ------------------------------------
#
path.data: /var/lib/elasticsearch
#
path.logs: /var/log/elasticsearch
#
# ---------------------------------- Network -----------------------------------
#
network.host: _site_ 
#
http.port: 9220

/etc/elasticsearch/jvm.options.d/my_jvm.options

Code Block
################################################################################
# JVM heap size
################################################################################

-Xms8g
-Xmx8g

Acordeón de comandos útiles

Los comandos que están aquí suponen que se tiene instalado httpie.

  • Consulta de índices disponibles:

    Code Block
    languagebash
    http zacatuche2.conabio.gob.mx/_cat/indices Accept:application/json
  • Consulta de mapeo de un índice:

    Code Block
    languagebash
    http zacatuche2.conabio.gob.mx/index-cat/_mappings Accept:application/json
  • Búsqueda sencilla sobre index-cat:

    Code Block
    languagebash
    http zacatuche2.conabio.gob.mx:9220/index-cat/_search\?q=Lynx\%20\%rufus Accept:application/json 

Para mayor información ver la documentación de ElasticSearch.

Logstash

Para indizar los datos dentro del Elasticsearch se usa Logstash. Logstash es program que sirve para mobilizar datos de fuentes a salidas distintas, en nuestro caso extraemos los datos de las bases de datos de MySQL correspondientes al SNIB, transformamos la información para después registrarla en Elasticsearch.

Logstash se puede ejecutar de dos maneras, una es cada vez que se quiera indizar ejecutar el pipeline o dejarlo como servicio para que se ejecute de manera programada. Actualmente se está ejecutando de la primera forma.

Existen dos repositorios donde se definen los pipelines, lo necesario para ejecutarlos usando docker y hacer la indización:

To Do

  • Definir la periodicidad de la indización de los datos

Servicios de datos graphQL

Actualmente la federación de datos de CONABIO consiste en tres servicios de datos:

  • CAT

  • Ejemplares

  • Agrobiodiversidad (este servicio lo administra y controla el equipo de agrobiodiversidad)

y el gateway que sirve para unirlos.

Los servicios de CAT, ejemplares y gateway son desplegados en el servidor zacatuche2 usados como contenedores de Docker.

El código de los servicios se clonó de sus repositorios a la carpeta /srv del servidor. En cada carpeta están sus archivos de configuración como aplicación (config.json) y los de configuración de despliegue (production.yml).

Servicios

snib-v2-gateway

Repositorio: https://github.com/CONABIO/snib-v2-gateway

Versión estable desplegada:

Versión desarrollo desplegada:

snib-v2-cat

Repositorio: https://github.com/CONABIO/snib-v2-cat

Versión estable desplegada: v0.2.1

Versión desarrollo desplegada: 055ad24

snib-v2-ejemplares

Repositorio: https://github.com/CONABIO/snib-v2-ejemplares

Versión estable desplegada: v0.2.3

Versión desarrollo desplegada: v0.2.3

Administración de servicios con docker compose

Uso básico de Docker Compose

Si tienes un archivo docker-compose.yml que describe tus servicios, sigue estos pasos para administrarlos:

  • Construir los servicios cuando se realizan cambios de configuración o código:

Code Block
docker-compose -f docker-compose.yml -f production.yml build
  • Encender los servicios recientemente construido

Code Block
docker-compose -f docker-compose.yml -f production.yml up -d
  • Encender un servicio detenido

Code Block
docker-compose -f docker-compose.yml -f production.yml start
  • Detener los servicios:

Code Block
docker-compose -f docker-compose.yml -f production.yml stop
  • Reiniciar los servicios:

Code Block
docker-compose -f docker-compose.yml -f production.yml restart
  • Ver el estado de los servicios:

Code Block
docker-compose -f docker-compose.yml -f production.yml ps

Para obtener información más detallada sobre Docker Compose, consulta la documentación oficial de Docker Compose.