Hola, quisiera consultar sobre cuestiones importantes a tener en cuenta para crear un cluster ES. Por lo que pude leer seria bueno tener una nodo que atienda las peticiones http, otros de almacenamiento y otro como master.
Hay alguna forma de calcular la RAM necesaria para cada tipo de nodo?
Por lo que lei, las respuestas a todo esto podria ser "it's depends"... pero quiza en base a la experiencia alguien puede dar una idea.
saludos, gracias
emiliano
Hola Emiliano, como estas?
Cual va a ser tu Use Case, tal vez con una explicación un poco mas detallada, podría hacerte alguna recomendación.
La verdad es que lo mas importante es saber cuanto vas a indexar, cuan grandes van a ser tus documentos, cuantos fields van a tener, cuantos indices vas a crear y mantener, y temas tambien relacionados con las queries. Las respuestas dependen del caso de uso de cada uno, y no hay manera fácil de saber de antemano cuando se va a necesitar, pero si podría darte algunas recomendaciones en cuanto a esto.
Saludos!
--Gabriel
Antes que anda gracias por la respuesta.
El caso de uso va a ser el almacenamiento de el estado de diferentes equipos. El peso de cada consulta que almacenaria es poco (puede que no mas de 3000 Bytes), los campos entiendo que tampoco son tantos (entre 20 y 80 aprox), pero la frecuencia en la que los estaria guardando por momento puede ser de 0.5 segundos en el momento de mayor intensidad. A su vez, coincidiendo con ese momento estaria preguntandole al cluster sobre el estado de esas variables con una intensidad similar (probablemente de 1 segundo). En el escenario "relajado" de la operacion tanto la insercion de datos como la consulta es mucho mas relajada (probablemente lo defina en 5 segundos).
Por cada cluster pensaba almacenar para consultar unas entre 40 y 60 indices, de ser posible mas inclusive, pero como vengo haciendolo en base a las pruebas que voy haciendo aun no lo puedo definir.
Gracias!
Emiliano
Puedes empezar con 4GB al menos en cada nodo, y al menos 2GB para el Heap. Creo que lo mejor es que hagas algunas pruebas y hagas un monitoreo de el Cluster con Marvel. Si vez que te estas quedando sin memoria tal vez necesites un poco mas.
La cantidad de fields, la cantidad de indices y otros aspectos pueden condicionar la cantidad de memoria que uses, tambien asi como los filtros y ordenes que hagas con las consultas.
Recuerda que agregar mas nodos, o hacer upgrade en tus nodos es sencillo, pueden simplemente inhabilitar la realocacion de shards para que ellas no se muevan en el cluster, y luego agrandas el heap por lo necesario. Por otro lado recuerda que recomendamos dejar 50% de la memoria en los Data Nodes para el filesystem cache, en los master tal vez puedas alocar un poco mas.
Como te decia, lamentablemente la forma mas facil es de empezar a utilizar, y luego adaptar tu cluster al use case. Ten en cuenta que no es lo mismo empezar a almacenar de a poco haciendo development, que cuando uno lleva el mismo cluster a produccion, por lo que hacer pruebas de stress es muy importante.
Tambien la topologia del cluster depende de la mangitud de datos, pero puedes poner 3 master, y tantos data nodes que necesites, y luego utilizar los master only nodes que no son master para hacer las consultas y otras cosas, o agregar client nodes (no-data, no-master) nodes para que manejen los requests.
Cualquier cosa a las ordenes.
Saludos!
Muchas gracias por la informacion.
Sera hasta la proxima
Emiliano
Claro que si!
Saludos!