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
- Si no es posible hacer esto como root, se puede cambiar en la configuración de elastic la siguiente propiedad
- Editar /etc/pam.d/common-session y añadir la línea:
- session required pam_limits.so
- session required pam_limits.so
- Editar /etc/security/limits.conf y añadir las siguientes líneas: (elastic es el nombre de usuario que correrá el servidor)
- Reiniciar la máquina
Configuración de Elastic Search:
Editar el fichero conf/elasticsearch.yml e incluir la siguiente configuración:
Cluster
- cluster.name: nuxeoElastic
Node
- node.name: "Elastic <Machine Name>"
- 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