Вопросы на понимание работы кластера es

Недавно начал разбираться с работой кластера ES (5.2), и возникли вопросы

Как я понял, для каждого шарда есть всегда один работающая мастер нода, которая делает индексацию документа в шард. Каким образом изменения попадают в реплики (это дифф lucene сегментов или они передаются прямо документом и отдельно индексируются на каждой реплике) ?

как происходит операция optimize ? (опять же только на мастере, и как после этого заменяются файлы индекса на репликах, либо же на каждой реплике отдельно)

что происходит при отключения основного мастера, если например на новом мастере версия документа 1, а на репликах вдруг оказалась версия новее, например 2 ? (при этом все реплики с версией документа новее 'node.master=false', то есть не могут быть выбраны новым мастером)

Буду рад ссылкам где почитать, возможно пропустил при изучении вопроса, или где это можно посмотреть в коде

Почти. Для каждой шарды есть праймари и реплики. Праймари может находится где угодно - ей вовсе не обязательно быть на мастер ноде.

Когда как. При нормальном индексировании, каждый документ индексируется отдельно на праймари и потом на все репликах. При перемещении шард и если например нод упал и потом поднялся - путем пересылки отличных сегментов.

Отдельно на праймари и репликах.

Как я сказал выше, мастер никакого отношения к процессу индексации не имеет. Он просто назначает где шарды будут находится, создает и удаляет индексы и т.д. Индексация всегда происходит сначала на праймари, потом на всех репликах, после этого клиент получает отзыв означающий, что документ проиндексирован. Если в этом процессе нод с праймари падает, то одна из реплик становится праймари и все остальные с ней синхронизируются путем сравнения сегментов.

Первые две про 2.x, но эта часть в 5.x существенно не изменилась - так что будет полезно ознакомится.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.