在生產(chǎn)環(huán)境下遍略,如果不修改elasticsearch節(jié)點的角色信息舱卡,在高數(shù)據(jù)量,高并發(fā)的場景下集群容易出現(xiàn)腦裂等問題陪毡。
默認情況下米母,elasticsearch集群中每個節(jié)點都有成為主節(jié)點的資格,也都存儲數(shù)據(jù)毡琉,即雙重角色铁瞒。
由兩個屬性控制:node.master和node.data,默認情況下這兩個屬性的值都是true:
- node.master:表示節(jié)點是否具有成為主節(jié)點的資格桅滋,值為true并不意味著這個節(jié)點就是主節(jié)點慧耍,真正的主節(jié)點是由多個具有主節(jié)點資格的節(jié)點進行選舉產(chǎn)生的身辨。
- node.data:表示節(jié)點是否存儲數(shù)據(jù)。
這兩個屬性可以有四種組合:
第一種芍碧,這種組合表示這個節(jié)點即有成為主節(jié)點的資格煌珊,又存儲數(shù)據(jù),
這個時候如果某個節(jié)點被選舉成為了真正的主節(jié)點泌豆,那么他還要存儲數(shù)據(jù)定庵,這樣對于這個節(jié)點的壓力就比較大了。elasticsearch默認每個節(jié)點都是這樣的配置踪危,在測試環(huán)境下這樣做沒問題蔬浙。實際工作中建議不要這樣設(shè)置,這樣相當(dāng)于主節(jié)點和數(shù)據(jù)節(jié)點的角色混合到一塊了陨倡。
node.master: true
node.data: true第二種:這種組合表示這個節(jié)點沒有成為主節(jié)點的資格敛滋,也就不參與選舉,只會存儲數(shù)據(jù)兴革。這個節(jié)點我們稱為data(數(shù)據(jù))節(jié)點。在集群中需要單獨設(shè)置幾個這樣的節(jié)點負責(zé)存儲數(shù)據(jù)蜜唾。后期提供存儲和查詢服務(wù)杂曲。
node.master: false
node.data: true第三種:這種組合表示這個節(jié)點不會存儲數(shù)據(jù),有成為主節(jié)點的資格袁余,可以參與選舉擎勘,有可能成為真正的主節(jié)點。這個節(jié)點我們稱為master節(jié)點
node.master: true
node.data: false第四種:這種組合表示這個節(jié)點即不會成為主節(jié)點颖榜,也不會存儲數(shù)據(jù)棚饵,
這個節(jié)點的意義是作為一個client(客戶端)節(jié)點,主要是針對海量請求的時候可以進行負載均衡掩完。
node.master: false
node.data: false
默認情況下噪漾,每個節(jié)點都有成為主節(jié)點的資格,也會存儲數(shù)據(jù)且蓬,還會處理客戶端的請求欣硼。
在一個生產(chǎn)集群中我們可以對這些節(jié)點的職責(zé)進行劃分。
建議集群中設(shè)置3臺以上的節(jié)點作為master節(jié)點恶阴,這些節(jié)點只負責(zé)成為主節(jié)點诈胜,維護整個集群的狀態(tài)。
再根據(jù)數(shù)據(jù)量設(shè)置一批data節(jié)點冯事,這些節(jié)點只負責(zé)存儲數(shù)據(jù)焦匈,后期提供建立索引和查詢索引的服務(wù),這樣的話如果用戶請求比較頻繁昵仅,這些節(jié)點的壓力也會比較大缓熟。
所以在集群中建議再設(shè)置一批client節(jié)點
這些節(jié)點只負責(zé)處理用戶請求,實現(xiàn)請求轉(zhuǎn)發(fā),負載均衡等功能荚虚。
master節(jié)點:普通服務(wù)器即可(CPU 內(nèi)存 消耗一般)
data節(jié)點:主要消耗磁盤薛夜,內(nèi)存
client節(jié)點:普通服務(wù)器即可(如果要進行分組聚合操作的話,建議這個節(jié)點內(nèi)存也分配多一點)