es集群2副本能掛機(jī)幾臺機(jī)器
3臺。根據(jù)查詢相關(guān)公開信息顯示,在一個ES集群中,如果每個索引的副本數(shù)量為2,并且在其中一臺機(jī)器掛機(jī)時仍能夠保證數(shù)據(jù)可用性,那么至少需要3臺機(jī)器。這是每個索引的副本數(shù)量為2,也就是說每個主分片會有兩個副本分片,可以保證數(shù)據(jù)的可用性,為了保證ES集群的高可用性,至少使用3臺機(jī)器,并將每個索引的副本數(shù)量設(shè)置為2。
es指定分片以及分片副本數(shù)
控制Elasticsearch分片和副本的分配
生產(chǎn)情景:比如生產(chǎn)環(huán)境有三個索引分別為 man、woman、katoey希望達(dá)到的效果: man索引放置在一些集群節(jié)點上 woman索引又單獨放置到集群的另外一些集群節(jié)點上 katoey索引希望放置在所有放置man索引和woman索引的集群節(jié)點上這么做是因為katoey索引比其他兩個索引小很多,因此我們可以將它和其他兩個索引一起分配。但是基于ES默認(rèn)算法的處理方法,我們不能確定分片和副本的存放位置,但是ES允許我們對其做相應(yīng)的控制!
1、指定節(jié)點的參數(shù)
**索引創(chuàng)建******當(dāng)所有節(jié)點配置文件屬性配置完成后,我們就可以根據(jù)空間名稱,我們就可以創(chuàng)建索引放到指定的空間。首先我們運行如下命令,來創(chuàng)建man索引:# curl-XPOST" '
**2、分配時排除節(jié)點******跟我們上面操作為索引指定放置節(jié)點位置一樣,我們也可以在索引分配的時候排除某些節(jié)點。參照之前的例子,我們新建一個people索引,但是不希望people索引放置到zone_one的ES集群節(jié)點服務(wù)器上,我們可以運行如下命令操作:# curl-XPOST" "
**請注意,**在這里我們使用的是 index.routing.allocation.exclude.zone屬性而不是 index.routing.allocation.include.zone屬性。**使用IP地址進(jìn)行分配配置******除了在節(jié)點的配置中添加一些特殊的屬性參數(shù)外,我們還可以使用IP地址來指定你將分片和副本分配或者不分配到哪些節(jié)點上面。為了做到這點,我們應(yīng)該使用_ip屬性,把zone換成_ip就好了。例如我們希望lucky索引分配到IP地址為10.0.1.110和10.0.1.119的節(jié)點上,我們可以運行如下命令設(shè)置:# curl-XPOST" "
二、集群范圍內(nèi)分配
****除了索引層面指定分配或者排除分配之外(上面我們所做的都是這兩種情況),我們還可以指定集群中所有索引的分配。我們希望將所有的新索引分配到IP地址為10.0.1.112和10.0.1.114的節(jié)點上,我們可以運行如下命令設(shè)置:# curl-XPUT" "-d'{"transient":{"cluster.routing.allocation.include._ip""10.0.1.112,10.0.1.114"}}'
**移動分片******假設(shè)我們有兩個節(jié)點:es_node_one和es_node_two,ElasticSearch在es_node_one節(jié)點上分配了ops索引的兩個分片,我們現(xiàn)在希望將第二個分片移動到es_node_two節(jié)點上。可以如下操作實現(xiàn):# curl-XPOST" "-d'{"commands": [{"move":{"index":"ops","shard": 1,"from_node":"es_node_one","to_node":"es_node_two"}}]}'
**一次HTTP請求包含多個命令******我們可以在一次HTTP請求中包含多個命令,例如:# curl-XPOST" "-d'{"commands": [{"move":{"index":"ops","shard": 1,"from_node":"es_node_one","to_node":"es_node_two"}},{"cancel":{"index":"ops","shard": 0,"node":"es_node_one"}} ]}'