Задать вопрос

Почему происходит рассинхронизация реплик Elasticsearch?

У меня есть два сервера. Размер индекса не большой (сотни тысяч документов), поэтому шарды мне не нужны.
Но мне нужны реплики для распределния нагрузки.
В день добавляется/обновляется не много данных - сотни документов.
Но бывает возникает проблема, при одном запросе на первый и второй сервер выдаются разные данные.

Конфиг на первой ноде
cluster.name: mycluster
node.name: node-1

node.master: true
node.data: true

network.host: 0.0.0.0
transport.tcp.port: 9300
http.port: 9200

discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.1", "192.168.0.1"]


На второй ноде, конфиг такой же за исключением двух строк
node.name: node-2
node.master: false


curl -XGET 'localhost:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "mycluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 10,
  "active_shards" : 20,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}


Запросы на запись отправляются как в мастер так и в реплику.

1. Возможно стоит принудительно указать параметры number_of_shards и number_of_replicas, и пересоздать индекс? Или это не должно повлиять.

index.number_of_shards: 1
index.number_of_replicas: 1

И я не совсем понимаю какие числа тут надо указывать? 1 шард и 1 реплика? А если будет 3 сервера? - 1 шард и 2 реплики?

2. Как можно понять что произошла какая-то рассинхронизация?
  • Вопрос задан
  • 333 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
un1t
@un1t Автор вопроса
Вобщем выяснил что было. Дело было не в синхронизации. А в том что порядок сортировки был не определен. Поэтому при запросе разные ноды выдавали разный результат. И даже при запросе к одной ноде результат выдавался разный (видимо эластксерч сам делает балансировку запросов). Добавил сортировку по id, проблема решилась.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
18 дек. 2024, в 11:03
5000 руб./за проект
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект