Hizmeti durdurmak ve daemon'u öldürmek, bir düğümü kapatmanın gerçekten doğru yollarıdır. Ancak, bakım için bir düğümü kapatmak istiyorsanız bunu doğrudan yapmanız önerilmez. Aslında, kopyalarınız yoksa verileri kaybedersiniz.
Bir düğümü doğrudan kapattığınızda, Elasticsearch tekrar çevrimiçi olması için 1 dakika (varsayılan süre) bekleyecektir. Aksi takdirde, o düğümdeki parçaları diğer düğümlere tahsis etmeye başlayacak ve çok fazla IO israf edecektir.
Tipik bir yaklaşım, aşağıdakileri yayınlayarak parça tahsisini geçici olarak devre dışı bırakmak olabilir:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
Şimdi, bir düğümü kaldırdığınızda, ES bu düğümden diğer düğümlere parça ayırmaya çalışmaz ve bakım etkinliğinizi gerçekleştirebilir ve ardından düğüm açıldığında, parça tahsisini yeniden etkinleştirebilirsiniz:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
Kaynak: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/restart-upgrade.html
Tüm dizinleriniz için eşlemeniz yoksa, bu tür bir etkinliği gerçekleştirmek bazı dizinlerde kesinti yaşayacaktır. Bu durumda daha net bir yol, düğümü indirmeden önce tüm parçaları diğer düğümlere taşımaktır:
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}
Bu, tüm parçaları 10.0.0.1
diğer düğümlere taşıyacaktır (verilere bağlı olarak zaman alacaktır). Her şey yapıldığında, düğümü öldürebilir, bakım gerçekleştirebilir ve tekrar çevrimiçi hale getirebilirsiniz. Bu daha yavaş bir işlemdir ve kopyalarınız varsa gerekli değildir.
(Joker karakterlerle _ip, _id, _name yerine gayet iyi çalışacaktır.)
Daha fazla bilgi: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/allocation-filtering.html
Diğer cevaplar bir sürecin nasıl durdurulacağını açıkladı.