2012-02-29 19 views
35

Básicamente, no encuentro documentos ni recursos que expliquen el procedimiento de actualización de una instancia de Elasticsearch en ejecución en la versión actual.¿Cómo actualizar una instancia anterior de Elasticsearch en ejecución a una versión más nueva?

favor me ayude a cabo en una serie de escenarios:

  1. Si estoy ejecutando una instancia Elasticsearch en un único servidor, ¿cómo migrar la instancia y no perder datos?

  2. Si estoy ejecutando varias instancias de Elasticsearch en varios servidores, ¿cómo puedo mantener mis operaciones en ejecución, mientras actualizo mis instancias de Elasticsearch sin perder datos?

Si hay procedimientos adecuados o explicaciones sobre esto, será de gran ayuda para mi comprensión y trabajo. ¡Gracias!

Respuesta

22
  1. Todos los datos de los nodos se almacenan en el directorio de datos de búsqueda elastica. Es data/cluster_name/nodes por defecto en elasticsearch home. Por lo tanto, en general, mientras el directorio de datos se conserve y los archivos de configuración en la nueva versión sean compatibles con la versión anterior, la nueva instancia debería tener los mismos datos que la anterior. Tenga en cuenta que algunas versiones tienen requisitos adicionales especiales descritos en release notes. Por ejemplo, actualizar a 0.19 desde 0.18 requiere emitir un flujo completo de todos los índices en el clúster.

  2. Realmente no hay una buena manera de lograr esto. Los nodos se comunican utilizando un protocolo binario que no es compatible con versiones anteriores. Entonces, si el protocolo en la nueva versión cambia, los nodos antiguos y los nodos nuevos no pueden entenderse entre sí. A veces es posible mezclar nodos con diferentes versiones menores dentro del mismo clúster y hacer una actualización progresiva. Sin embargo, por lo que yo entiendo, no existe una garantía explícita sobre la compatibilidad entre los nodos, incluso dentro de las versiones menores, y las versiones principales siempre requieren el reinicio completo del clúster. Si el tiempo de inactividad durante el reinicio completo del clúster no es una opción, un nice technique por DrTech podría ser una solución.

+0

Veo, así que básicamente en una sola instancia de Elasticsearch dentro del directorio, simplemente reemplazamos las carpetas elasticsearch/bin y elasticsearch/lib, retengamos la carpeta elasticsearch/data y la nueva versión de la instancia de elasticsearch debería funcionar automáticamente en su ¿propio? –

+4

Actualmente, también hay un directorio de complementos que podría ser importante si está utilizando complementos. Las futuras versiones de elasticsearch podrían agregar nuevos directorios. Por lo tanto, podría ser mejor pensar en ello colocando los viejos directorios elasticsearch/data y elasticsearch/config en la nueva instalación. La nueva instancia de elasticsearch con directorios de configuración y datos reemplazados debería actualizar automáticamente los datos a la nueva versión y comenzar a funcionar. Tenga en cuenta que la versión anterior de elasticsearch ya no funcionará con el directorio de datos actualizado. – imotov

+0

Gracias! Supongo que estaba complicando las cosas un poco ... –

-1

Si está ejecutando Linux basada en Ubuntu o Debian, aquí es un script t Ansible o hacer una actualización progresiva, siempre y cuando no esté actualizando entre versiones principales.

versiones menores, tales como 1,3 -> 1.4.3 están bien

versiones principales, tales como 0,8 -> 1.4.3 no funcionan.

https://github.com/ekhoinc/ansible-examples/blob/master/elasticsearch-rolling-upgrade.yml

Se podría modificarse fácilmente para trabajar con Linux basada RHEL (sólo 2 líneas al cambio)

10

Hay mucha más información sobre Elasticsearch actualizar estos días de lo que solía ser.

Aquí están mis pasos habituales cuando se actualiza Elasticsearch:

  1. de copia de seguridad de los datos: Snapshot and Restore

  2. Guía de actualización: Upgrading ElasticSearch

La idea principal es que cierre uno instancia del clúster de ES a la vez, actualice la versión de ES en ese nodo de instancia y vuelva a abrirla para que pueda volver a unirse al clu ster

En resumen, estos son los pasos importantes:

  1. Desactivar Fragmento reasignación

    rizo -XPUT localhost: 9200/_cluster/ajustes -d '{ "transitoria": { "cluster.routing.allocation.enable": "ninguna" }} '

  2. Apagar la instancia:

    curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'

  3. instalar la nueva versión Elasticsearch en el host y ponerlo en marcha.

  4. Habilitar fragmento de reasignación:

    rizo -XPUT localhost: 9200/_cluster/ajustes -d '{ "transitoria": { "cluster.routing.allocation.enable": "todo " }} '

  5. reloj cúmulo pasar de un estado a yellowgreen con:

rizo -X GET http://localhost:9200/_cat/health?v // monitorea el estado del clúster de eficacia general

rizo -X GET http://localhost:9200/_cat/nodes?v // verificar que el nuevo nodo se unió al grupo de

rizo -X GET // http://localhost:9200/_cat/shards?v ver fragmentos iniciada, inicializada y reubicada

  1. Repita para el siguiente nodo.

En los términos de pedidos, actualizar primeros los nodos maestros, entonces los nodos de datos, entonces los nodos de equilibrio de carga/cliente.

Cuestiones relacionadas