2013-07-11 2 views
3

Предположим у меня есть несколько elasticsearch машин в кластере: 192.168.1.1, 192.168.1.2 и 192.168.1.3Подключение к elasticsearch кластера в NEST

Любые из машин могут пойти вниз. Он не похож на поддержку NEST, предоставляющую ряд IP-адресов для подключения.

Итак, как я могу подключиться к любой из доступных машин от Nest? Просто попробуйте открыть соединение с одним, если TryConnect не работает, попробуйте другой?

ответ

0

Я бы установил один из узлов в качестве балансировщика нагрузки. Это означает, что URL-адрес, который вы вызываете, должен быть всегда включен.

Хотя, если вы увеличиваете количество реплик, вы можете вызвать любой из узлов по URL-адресу и получить доступ к тем же данным. У ElasticSearch все равно, какой из них вы используете в кластере. Таким образом, вы можете создать собственный диапазон ips в своем приложении.

+0

Что делать, если действующий «балансировщик нагрузки» опускается? Это в облаке, поэтому облако может решить перезапустить любую из машин без предупреждения. – Sumrak

+0

С url, я хочу, чтобы избежать разоблачения публичного URL-адреса и сохранить все на внутренней виртуальной сети. Хотелось бы избежать настройки DNS-сервера. Итак, у меня могут быть, например, машины .1-.3. Мне гарантировано, что 2 из 3. Но я не знаю, кто и когда кто-нибудь из них спустится. Для меня клиентское соединение lib должно обрабатывать это (кстати, я уверен, что Java-клиент может работать с этим). – Sumrak

+0

Как вы говорите, я не видел такую ​​функциональность в подключении lib от NEST. Это была бы хорошая особенность. Если вы не в облаке, вам не нужно публиковать URL. Просто привяжите его на сервере. Но в вашем случае я думаю, вам придется вручную создать что-то, что может сделать то, что вы хотите. Извините, я не мог больше помочь :) – jinxen

7

Вы можете запустить локальный экземпляр ES на сервере приложений (например, веб-сервер) и сконфигурировать его для работы в качестве балансировки нагрузки:

  • Набор node.client: true (или node.master: false и node.data: false) для этой локальной конфигурации ES чтобы сделать его балансировщиком нагрузки. Это означало ES не будет мастер, ни содержит данные
  • Config это присоединиться к кластеру (ваши 3 узлы не должны знать это ES)
  • Config НЕСТ использовать локальные ES в качестве поискового сервера

Затем эти ES станут частью вашего кластера и будут распространять ваши запросы на подходящие узлы.

Если вам не нужен «балансировщик нагрузки», вам необходимо вручную проверить на стороне клиента, чтобы определить, какой узел жив.

+0

Это классная идея! Как вы думаете, будет много накладных расходов на веб-сервере, если я это сделаю против попытки напрямую подключиться к серверу? – Sumrak

+0

Кто-нибудь знает, если это метод, одобренный авторами NEST? – lasseschou

+0

@Sumrak это будет потреблять некоторую память на веб-сервере, потому что клиентский узел отвечает за сбор ответов узлов данных и сортировку среди других. Таким образом, не будет «много накладных расходов» –

Смежные вопросы