Despliegue de ElasticSearch para Nuxeo

Instalación Standalone de Elastic Search (cada nodo del cluster se instala igual)

  • Crear un usuario elastic para correr el server.
  • Instalar JDK 1.8.0_72 o superior
  • Crear usuario (UNIX) elastic. Por defecto, dejaremos que elastic search genere los datos en la propia partición de /home, por lo que debe tener tamaño sufiente
  • Descargar Elastic 1.7.4: https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.4.tar.gz y descomprimirlo en el raíz del usuario elastic. Cambiar el nombre de la carpeta a elasticsearch para facilitar posterior acceso
  • Editar fichero .profile del usuario elastic para incluir las siguientes variables de entorno:
    • JAVA_HOME
    • ES_HEAP_SIZE=Xg (debe ser la mitad de la memoria física de la máquina)

  • Cambiar ulimit para usuario elastic:
    • Editar /etc/security/limits.conf y añadir las siguientes líneas: (elastic es el nombre de usuario que correrá el servidor)

      • elastic - nofile 65535
      • elastic - memlock unlimited
        • Si no es posible hacer esto como root, se puede cambiar en la configuración de elastic la siguiente propiedad
          • bootstrap.mlockall: true



    • Editar /etc/pam.d/common-session y añadir la línea:
  • Reiniciar la máquina

 

Configuración de Elastic Search:

Editar el fichero conf/elasticsearch.yml e incluir la siguiente configuración:

  • Cluster

  • Node

  • Discovery
    • discovery.zen.ping.multicast.enabled: false

      • cuando es 1 sólo nodo en localhost, se comenta

    • discovery.zen.ping.unicast.hosts: ["127.0.0.1""XX.XX.XX.XX"# IP Localhost e IPs del resto de nodos del cluster

      • cuando es 1 sólo nodo en localhost, esa propiedad se comenta

  • shards (para localhost)
    • index.number_of_shards: 1

    • index.number_of_replicas: 0

Arranque de Elastic Search

// TODO Meter esto en un script de devops

Con el usuario elastic, hacer:

  • source .profile (usuario elastic)
  • sudo sysctl -w vm.max_map_count=262144
  • sudo swapoff -a
  • elasticsearch/bin/elasticsearch -d -p pid

 

Configuración de Nuxeo

Editar fichero nuxeo.conf para añadir la configuración de Elastic Search. Ejemplo:

##-----------------------------------------------------------------------------

## Elasticsearch configuration

##-----------------------------------------------------------------------------

## Enable or disable Elasticsearch integration, default is true.

elasticsearch.enabled=true

 

## Remote elasticsearch cluster to join, comma separated list of nodes,

##  if empty use an embedded server, not for production !

elasticsearch.addressList=XX.XX.XX.XX:9300,XX.XX.XX.XX:9300

 

## Remote elasticsearch cluster name to join.

elasticsearch.clusterName=nuxeoElastic # debe coincidir con el nombre del cluster que hemos instalado

 

# From documentation

elasticsearch.indexName=example

elasticsearch.indexNumberOfReplicas=1


para localhost

elasticsearch.indexNumberOfReplicas=0
elasticsearch.indexNumberOfShards=1

 

Reindexación

Versión 1.7.4

Cuando queremos crear un nuevo índice con un nuevo mapping-file desde Rhombus, podemos hacerlo directamente contra la API de Elasticseach, o bien, delegarlo al arranque de Athento ECM. Delegarlo a Athento ECM requiere cambiar la propiedad descrita más arriba para el elastisearch.indexName a una nueva versión y luego reiniciar el sistema. Si, por el contrario, queremos hacerlo contra la API podemos hacerlo usando las operaciones que nos indica la documentación de elasticsearch:

 

TODO: Complete