2016-01-30 1 views
1

В моем кластере ES есть 20 машин с 50 узлами (экземпляры ES), я не уверен, сколько стоек я должен установить. Есть два стойки? или 3 или 4 стойки.Сколько стоек я должен установить в своем кластере ElasticSearch

Как я знаю, если я изложу rack_id в конфигурации ES, он может выполнять следующие функции:

1, Select data location or relocation(to make sure replicas in different racks) 
2, Use Rack_id as doc routing 

Любые причины, я должен установить больше стоек, но я думаю, что даже только один стеллаж по умолчанию тоже хорошо.

+0

Виртуальные машины или несколько узлов на одной и той же ОС? –

+0

Каждая физическая машина имеет два ES-узла с одинаковой ОС. – Jack

ответ

2

Вероятность выхода из строя двух машин высока, если они обмениваются оборудованием, потому что вы используете виртуальные машины, меньше, если они используют стойку, но не аппаратную, и снова меньше, если они разделяют здание, но не стойку. Поэтому имеет смысл использовать больше одной стойки.

Если вам нужно больше, чем 2 стойки, зависит от ваших реплик. Количество повторений по умолчанию - 1. Если вам требуется более высокое значение, строго говоря, вы немного ухудшите доступность своего кластера, если используете только 2 стойки, потому что параметр> = 3 не будет эффективен на уровне стойки.

+0

Спасибо! Я могу понять связь между номером репликации и номером стойки, но я не понимаю, почему номер стойки повлияет на доступность кластера? Не могли бы вы рассказать о доступности. – Jack

+0

Если ваше приложение требует очень высокого уровня доступности, вы можете ввести требование. _Система должна оставаться доступной с 2 ​​отказами. Таким образом, вы помещаете 'replication' в' 2', что означает 3 копии каждого Осколка (Primary, Replicate, Replicate). Если вы распространите это на 2 стойки, вы всегда получите либо «[(P, R), (R)], либо« [(P), (R, R)] », ES никогда не будет делать [[(P, R, R),()] ', если вы заметите мои нотации. Ваше требование будет удовлетворено для _nodes_, но не если два _racks_ не сработают одновременно. Я также рекомендую посмотреть, что предлагает Андрей. –

+0

Спасибо Loek, я отправил вам 50 бонусов :) Просто скажите, пожалуйста, если у моего кластера ES есть 100 серверов, как правило, сколько реплик я должен установить лучше? И номер стойки должен быть всегда больше, чем повторяет номер, верно? – Jack

1

Я думаю, что в вашем случае проще и проще установить cluster.routing.allocation.same_shard.host в true. (См. https://www.elastic.co/guide/en/elasticsearch/reference/current/shards-allocation.html) Это предотвратит размещение копий одного и того же осколка на одном и том же хосте (хост идентифицируется по имени и имени хоста). Пожалуйста, проверьте это, прежде чем приступить к производству с таким подходом.

Кроме того, имейте в виду, что вам необходимо указать настройку processors (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-threadpool.html#processors) соответственно. Каждый узел ES обнаруживает # ядра, доступные на компьютере (не известно о других присутствующих узлах). С несколькими узлами на одном компьютере каждый узел может думать, что он имеет выделенный доступ ко всем ядрам на машине (это может быть проблематично для размеров пулов по умолчанию, полученных на основе этого). Таким образом, вы захотите явно указать # ядра, доступные по настройке processors, так что это не приведет к чрезмерному распределению пулов потоков.

Я рекомендую использовать выделенные главные узлы и обеспечить стабильность кластера, каждый выделенный экземпляр главного узла должен быть на собственной машине (конечно, может быть намного меньше машина, например, 4 ГБ ОЗУ для начала).

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