Все кто использовал Elasticsearch каластер для своих нужд (особенно для логирования и как основную базу данных) на больших нагрузках сталкивался с проблемами консистентности и масштабируемости. Когда требуется распараллелить нагрузку на Elasticsearch обычно применялись статические решения то типу [NGINX+Elasticsearch][1]. Это позволяет распараллелить нагрузку, но выглядит не слишком гибко. Особенно если учесть что ноды могут сами выпадать из кластера и простой хелсчек покажет что все отлично, а на самом деле нода перегружена, исключена из кластера. В любом случае хотелось бы иметь данные о состоянии кластера из первых рук, а не довольствоваться простыми проверками.
Итак, приступим к построению балансировки .
В данном случае мы будем использовать [CAT node API][2], которое является частъю мощьнейшего [CAT API][3], который является инструментом поиска заголовков по Elasticsearch клстреру.
Мы будем использовать только [Gobetween][4] и встроенные механизмы Elasticsearch для балансировки записи /чтения [СRUD][5] (DATA) нод при произвольном количестве/статусе нод в кластере.
[Читать дальше →][6]
[1]:
https://www.nginx.com/blog/nginx-elasticsearch-better-together/
[2]:
https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-nodes.html
[3]:
https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html
[4]:
https://gobetween.io
[5]:
https://en.wikipedia.org/wiki/Create,_read,_update_and_delete
[6]:
https://habrahabr.ru/post/304096/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut