Elasticsearch集羣安裝
目錄
1.每個節點指定協調器的list(elasticsearch.yml)
3.防止集羣發生"腦裂",爲集羣配置最大的有效master個數
1.類bully(RBULLY)算法將master選舉出來(master參加)
11.在進羣中連接負載均衡器寫入一些數據(index01,index02)
一.配置搭建三個節點的集羣
1.前提條件注意
ik分詞器(造成其他節點同步數據時,沒有ik分詞器的錯誤)保持一致;
如果你將ik分詞器刪除,保證之前使用ik分詞器的所有相關數據(索引)也要刪除.
- [root@10-42-60-249 elasticsearch-5.5.2]# rm -rf data
- [root@10-42-60-249 elasticsearch-5.5.2]# rm -rf *
- [root@10-42-60-249 elasticsearch-5.5.2]# rm -rf logs/
2.配置集羣的配置文件
- 保證集羣名稱一致elasticsearch
- 保證節點名稱不一致es01 es02 es03
1.每個節點指定協調器的list(elasticsearch.yml)
每一個的名稱都要不同
2.修改對應配置
3.防止集羣發生"腦裂",爲集羣配置最大的有效master個數
公式: 所有master個數/2+1(過半數) 3個配置倆個即可
修改一下配置
由於網絡波動,形成多個大腦指揮,
- 在master集羣中,本來應該互相有效通信的集羣,出現波動後,形成2個多個master集羣,同時操作dataNode節點們,可能造成執行的命令衝突導致數據錯亂---集羣的腦裂;
- ES防止腦裂的出現,就是利用最小master數量過半定義的.
- 結論:在ES防止腦裂的配置過半master後,集羣無論如何出現腦裂的情況,至多隻有一個有效的master集羣滿足最小master數量;
3.啓動集羣的所有節點
1.類bully(RBULLY)算法將master選舉出來(master參加)
- 1 啓動的master節點到協調器獲取集羣所有master信息(id)
- 2 如果activeMaster(正在提供主節點的信息list),有值,說明集羣已經選舉完畢master.如果有就選舉完畢
- 3 如果activeMaster中沒有數據是空(獲取斷開剔除),沒有值(節點信息),將會把從協調器獲取的所有master信息放到後補list candidateMaster.
- 4 判斷candidateMaster裏面存儲的master節點數量是否滿足最小master有效數量
- 5 如果不滿足,從新回到第一步
- 6 如果滿足,從裏面將id值最小的master選舉成爲activeMaster的值
最終集羣中activeMaster裏的節點,就是被選舉出來的主節點.
2.先啓動Head插件觀察
3.啓動第一個ES
4.啓動成功,一直循環讀取
- 1 啓動的master節點到協調器獲取集羣所有master信息(id) 滿足,因爲初始設置的爲主節點(因爲只啓動一個,只有一個主節點)
- 2 如果activeMaster(正在提供主節點的信息list),有值,說明集羣已經選舉完畢master.如果有就選舉完畢 不滿足(剛啓動,沒有選舉完畢,)
- 3 如果activeMaster中沒有數據是空(獲取斷開剔除),沒有值(節點信息),將會把從協調器獲取的所有master信息放到後補list candidateMaster. 滿足 (有且只要一個)
- 4 判斷candidateMaster裏面存儲的master節點數量是否滿足最小master有效數量 不滿足(最小maste設置爲2,目前只爲1)
- 5 如果不滿足,從新回到第一步 不滿足(重新獲取)
- 6 如果滿足,從裏面將id值最小的master選舉成爲activeMaster的值 不執行
所以目前,只做一到四的循環讀取
5.啓動第二個節點
6.啓動成功
- 1 啓動的master節點到協調器獲取集羣所有master信息(id) 滿足,因爲初始設置的爲主節點(啓動二個,有二個主節點)
- 2 如果activeMaster(正在提供主節點的信息list),有值,說明集羣已經選舉完畢master.如果有就選舉完畢 不滿足(剛啓動,沒有選舉完畢,)
- 3 如果activeMaster中沒有數據是空(獲取斷開剔除),沒有值(節點信息),將會把從協調器獲取的所有master信息放到後補list (防止一次放進多個)candidateMaster. 滿足 (有二個)
- 4 判斷candidateMaster裏面存儲的master節點數量是否滿足最小master有效數量 滿足(最小maste設置爲2)
- 5 如果不滿足,從新回到第一步 滿足
- 6 如果滿足,從裏面將id值最小的master選舉成爲activeMaster的值 滿足
所以目前,做一到六的讀取
7.HEAD插件查看
選出01做主節點
8.啓動第三個節點
9.啓動成功
因爲選舉已經結束,所以不會改變結果
10.head查看
11.在進羣中連接負載均衡器寫入一些數據(index01,index02)
#curl -XPUT http://IP:9200/index06
實現高可用,當01宕機.02,03 選舉id最小的頂替,
- 配置文件中的分片和副本默認值
- index.number_of_shards: 5
- 設置索引的副本數,默認爲1:
- index.number_of_replicas: 1
index06在創建時,會經過master(activeMaster)根據配置文件計算
分片數量,副本數量,記錄metadata 將索引數據切分到datanode
PS:分片無法控制,是選舉的master負責分配
ES集羣搭建完成