當(dāng)你想停用 Elasticsearch 中的節(jié)點(diǎn)時(shí),通常的過程不是直接銷毀節(jié)點(diǎn)。 如果你這樣做,那么你就有數(shù)據(jù)丟失的風(fēng)險(xiǎn),這不是你想要對應(yīng)該是可靠的數(shù)據(jù)庫做的事情。
這樣做的問題是,節(jié)點(diǎn)很可能會通過 Elasticsearch 處理的恰當(dāng)命名的分片分配分配給它們的分片。
Elasticsearch 中的 master 負(fù)責(zé)分片分配以及何時(shí)在節(jié)點(diǎn)之間移動分片以重新平衡集群。
那么隨著這一切的進(jìn)行,如何才能停用 Elasticsearch 節(jié)點(diǎn)呢? 是不是太冒險(xiǎn)了?
幸運(yùn)的是,有一種方法,叫做集群級分片分配過濾。
通過集群級別的分片分配過濾器,你可以控制 Elasticsearch 從任何索引為整個(gè)集群分配分片的位置。
你可以通過 Cluster API 設(shè)置這些過濾器; 具體來說,你可以對 _cluster/settings 端點(diǎn)執(zhí)行 PUT 請求。
假設(shè)你要停用 IP 地址為 10.0.0.1 的節(jié)點(diǎn)。
為此,你將使用以下命令在集群上執(zhí)行 PUT 請求:
PUT _cluster/settings
{
“persistent” : {
“cluster.routing.allocation.exclude._ip” : “10.0.0.1”
}
}
然后,Elasticsearch 將知道移動與此匹配的節(jié)點(diǎn)分片。 你應(yīng)該看到分片將變?yōu)?0。
當(dāng)它們確實(shí)變?yōu)?0 時(shí),就可以安全地停用該節(jié)點(diǎn)。
不過,按 IP 地址排除并不是唯一的過濾方式。 事實(shí)上,有許多屬性可以用來排除。
這是一個(gè)列表:
- _name:可以通過節(jié)點(diǎn)名匹配節(jié)點(diǎn)
- _host_ip:可以通過主機(jī)IP地址匹配節(jié)點(diǎn)(IP與主機(jī)名相關(guān)聯(lián))
- _publish_ip:可以通過發(fā)布 IP 地址匹配節(jié)點(diǎn)
- _ip:你可以匹配 _host_ip 或 _publish_ip
- _host:可以通過主機(jī)名匹配節(jié)點(diǎn)
- _id:可以通過節(jié)點(diǎn) id 匹配節(jié)點(diǎn)
- _tier:可以通過節(jié)點(diǎn)的數(shù)據(jù)層角色匹配節(jié)點(diǎn)
你可以做的另一件很酷的事情是在您的過濾器中使用通配符來進(jìn)行集群級別的分片分配。
例如,假設(shè)你想排除所有匹配前綴 myfirstdatabase 的 Elasticsearch 節(jié)點(diǎn)。
你可以這樣做:文章來源:http://www.zghlxwxcb.cn/news/detail-470616.html
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._name": "myfirstdatabase*"
}
}
因此,名為 myfirstdatabase-1 的節(jié)點(diǎn)將被排除在分片分配之外,myfirstdatabase-2 也是如此。文章來源地址http://www.zghlxwxcb.cn/news/detail-470616.html
到了這里,關(guān)于Elasticsearch:如何使用集群級別的分片分配過濾(不包括節(jié)點(diǎn))安全地停用節(jié)點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!