Добрый день.
Хотел бы посоветоваться по вопросу организации кластера. Есть кластер состоящий из двух нод (два отдельных сервера: 24 и 32 GB соответственно):
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.8.0.1 29 99 66 6.21 5.99 4.86 mdi * kia
10.8.0.18 3 80 65 14.56 13.18 10.21 mi - ford
kia используется для запросов от backend (api app на этом же сервере), на ford работают воркеры (celery), которые и создают нагрузку (работа с datafeed и отдельные update/insert в индекс на ford). До вчерашнего дня ford использовался также для хранения данных (node.data: true)
И вот имеем ситуацию: запускаем задачи на ford, там возрастает LA, кластер, видимо за счет подтормаживающей ноды (ford, которая была data), начинает вцелом тормозить, имеем ситуацию на Рис.1 (я правильно понимаю?)
Сегодня я убрал хранение данных на ford, надеясь что запросы за данными не будут ходить на ford. Но, все равно имею падение производительности на kia.
Цель: как бы вот оптимально организовать систему, пока в ней участвует два сервера (хотелось бы пока остановиться на этом количестве ) Но не хотелось бы чтобы kia упиралась и как то зависела от LA ford (впоследствии количество серверов с воркерами будет увеличиваться) . Хочется чтобы сервера жили своими жизнями, но имели синхронизацию по данным.
Может можно как то отсрочить транслог между нодами или уменьшить его скорость (быстрота синхронизации между нодами на данный момент не актуальная величина)?
Может можно как то отсрочить транслог между нодами или уменьшить его скорость (быстрота синхронизации между нодами на данный момент не актуальная величина)?
В elasticsearch репликация между шардами происходить на уровне документа (то есть нагрузка на праймари и копиях от индексации одна и та же). Этого избежать нельзя. Ассинхронную репликацию на старых версиях включить можно, но я бы не рекомендовал это делать. Толку от этого очень мало, а вреда - много.
Кроме того, что если вы подключаетесь к ford, то все запросы будут автоматически балансироваться между всеми нодами, на которых есть шарды (если вы не задали preference). То есть при установках по умолчанию у вас нагрузка должна быть одинакова на всех машинах.
Да, правильным выходом будет не перегружать elasticsearch сервер, и не смешивать elasticsearch с другими тяжелыми приложениями на одной и той же машине.
Как я понимаю при добавлении записей в файл я должен перегрузить все ноды чтобы подцепить изменения? А если я хочу использовать иной источник данных? Например хранить в базе (редактирование клиентом в UI). Эти правила веть не должны быть определены на момент индексации данных, а могут появляться в процессе жизни индекса?
Лучше задавать новые вопросы в новых темах, тем более, что это бесплатно
Если этот фильтр используется в анализаторе для индексирования - то надо пере-индексировать все данные при каждом обновлении списка синонимов. Если он только используется при поиске то можно закрыть и открыть индекс.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.