У меня есть два сервера. Размер индекса не большой (сотни тысяч документов), поэтому шарды мне не нужны.
Но мне нужны реплики для распределния нагрузки.
В день добавляется/обновляется не много данных - сотни документов.
Но бывает возникает проблема, при одном запросе на первый и второй сервер выдаются разные данные.
Конфиг на первой ноде
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. Как можно понять что произошла какая-то рассинхронизация?