Для того чтобы понять, что такое реплики в Elasticsearch, необходимо иметь представление о шардах и их использовании в Elasticsearch. В то время как каждый шард содержит одну копию данных, индекс может содержать несколько копий шарда. Таким образом, существует два типа шардов: основной шард и реплика, или копия. Каждая реплика располагается на отдельном узле, что обеспечивает доступ к данным в случае отказа узла.
Помимо обеспечения избыточности и предотвращения потери данных и простоев, реплики могут также способствовать повышению производительности поиска, поскольку позволяют обрабатывать запросы параллельно с основным шардом, а значит, быстрее.
Примечания и полезные сведения
- Существуют некоторые важные различия в поведении первичных и репликовых шардов. Хотя оба они способны обрабатывать запросы, запросы на индексирование должны сначала пройти через первичные шарды, прежде чем они будут реплицированы на шарды-реплики. Как отмечалось выше, если первичный шард становится недоступным, например, из-за отключения узла или отказа оборудования, то его роль переходит к реплике.
- Хотя реплики могут помочь в случае отказа узла, они, как и первичные шарды, занимают память и дисковое пространство. Они также используют вычислительные мощности при индексировании, поэтому важно, чтобы их было не слишком много. Еще одно различие между первичными и репликами заключается в том, что если количество первичных шардов нельзя изменить после создания индекса, то количество реплик можно изменить в любой момент.
- Еще одним фактором, который необходимо учитывать при работе с репликами, является количество доступных узлов. Реплики всегда размещаются на узлах, отличных от основного шарда, поскольку две копии одних и тех же данных на одном и том же узле не обеспечат никакой защиты в случае отказа узла. Таким образом, чтобы система поддерживала n реплик, в кластере должно быть не менее n + 1 узлов. Например, если в системе два узла, а индекс настроен на шесть реплик, то будет выделена только одна реплика. С другой стороны, система с семью узлами вполне способна работать с одним первичным шардом и шестью репликами.
- Даже после создания индекса с правильным балансом шардов и реплик его необходимо контролировать, поскольку динамика изменения индекса со временем меняется. Например, при работе с данными временных рядов индексы с последними данными обычно более активны, чем старые. Если не настраивать эти индексы, то все они будут потреблять одинаковое количество ресурсов, несмотря на совершенно разные требования.