Mam klaster ES z 4 węzłami:
number_of_replicas: 1
search01 - master: false, data: false
search02 - master: true, data: true
search03 - master: false, data: true
search04 - master: false, data: true
Musiałem ponownie uruchomić search03, a kiedy wrócił, bez problemu połączył się z klastrem, ale zostawił 7 nieprzypisanych fragmentów.
{
"cluster_name" : "tweedle",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 4,
"number_of_data_nodes" : 3,
"active_primary_shards" : 15,
"active_shards" : 23,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 7
}
Teraz moja gromada jest w stanie żółtym. Jaki jest najlepszy sposób rozwiązania tego problemu?
- Usunąć (anulować) fragmenty?
- Przenieść fragmenty do innego węzła?
- Przydzielić fragmenty do węzła?
- Zaktualizować „number_of_replicas” do 2?
- Coś zupełnie innego?
Co ciekawe, kiedy dodano nowy indeks, ten węzeł zaczął nad nim pracować i grał dobrze z resztą klastra, po prostu zostawiał nieprzypisane fragmenty.
Przejdź do pytania: czy w ogóle robię coś złego, aby tak się stało? Nie mam zaufania do klastra, który zachowuje się w ten sposób po ponownym uruchomieniu węzła.
UWAGA: Jeśli z jakiegoś powodu używasz klastra z jednym węzłem, możesz po prostu wykonać następujące czynności:
curl -XPUT 'localhost:9200/_settings' -d '
{
"index" : {
"number_of_replicas" : 0
}
}'
{ "error" : "ElasticsearchIllegalArgumentException[[allocate] failed to find [logstash-2015.01.05][1] on the list of unassigned shards]", "status" : 400 }
Mimo że widzę, że fragment jest jednym z nieprzydzielonych w ES-Head