【ELK】【docker】6.Elasticsearch 集羣啓動多節點 + 解決ES節點集羣狀態爲yellow

本章實際上是ELK第二章的插入章節。html

本章ES集羣的多節點是docker啓動在同一個虛擬機上node

=====================================================================================linux

ELK系列的示例中,啓動的是單個的ES節點。git

 系列文章:github

【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎應用 集羣,安裝ik分詞器spring

【ELK】【docker】【elasticsearch】2.使用elasticSearch+kibana+logstash+ik分詞器+pinyin分詞器+繁簡體轉化分詞器  6.5.4 啓動   ELK+logstash概念描述docker

【ELK】【ElasticSearch】3.es入門基本操做curl

【ELK】4.spring boot 2.X集成ES spring-data-ES 進行CRUD操做 完整版+kibana管理ES的index操做elasticsearch

【ELK】5.spring boot日誌集成ELK,搭建日誌系統分佈式

【ELK】【docker】6.Elasticsearch 集羣啓動多節點 + 解決ES節點集羣狀態爲yellow

【ELK】7. elasticsearch linux上操做es命令詳解

======================================================================================

1、單節點的問題描述----ES集羣狀態可能爲yellow

單節點ES使用起來,沒有多大的問題。

但有一點沒法避免,即index建立多分片和多備份的話,會顯示ES節點狀態爲yellow。

1.ES集羣健康狀態爲yellow

那,即圖中所描述的:備份雖然設置爲1  可是每一個分片的備份其實都沒有成功。由於沒有另外一個節點能夠提供備份的場所。

最終致使的結果就是ES集羣的健康狀態爲yellow。

而若是本ES節點掛掉,則數據徹底丟失。

 

2.spring boot對接ES或spring boot日誌對接ELK多數默認index的replicas爲1

在前幾章中,其實都是使用的ES單節點提供服務。

而spring boot中若是不是用自定義settings設置index的shards和replicas,那默認的index的shards=5,而replicas=1。

一樣spring boot日誌logback對接logstash,搭建ELK分佈式日誌系統,默認的index的shards=5,而replicas=1。

若是依舊啓動的是單節點Nodes=1,那麼就會致使

 

 

2、ElasticSearch 6.5.4版本啓動集羣

本章實際上是ELK系列文章 第二章的插入章節。

1.前提步驟就是拉取鏡像  和  跳轉第一步同樣

2.先分別啓動es1和es2

docker run  -d --name es1  -p 9200:9200 -p 9300:9300 --restart=always  elasticsearch:6.5.4
docker run  -d --name es2  -p 9201:9201 -p 9301:9301 --restart=always  elasticsearch:6.5.4

注意:和啓動單節點少了個參數 

-e "discovery.type=single-node"

 

3.分別查詢es1和es2容器的IP

docker inspect es1

docker inspect es2

 

4.分別進入es1和es2容器中,修改elasticsearch.yml文件內容

elasticsearch.yml文件路徑

cd   /usr/share/elasticsearch/config

 

文件原內容

 

分別修改elasticsearch.yml文件內容爲:

cluster.name: "docker-cluster"
network.host: 0.0.0.0

# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts: ["127.0.0.1","172.17.0.2:9200","172.17.0.7:9201","172.17.0.2:9300","172.17.0.7:9301"]

註釋1:

  discovery.zen.minimum_master_nodes: 2  是保證集羣中的節點知道集羣中有N個master資格的節點

註釋2:

  discovery.zen.ping.unicast.hosts: ["127.0.0.1","172.17.0.2:9200","172.17.0.7:9201","172.17.0.2:9300","172.17.0.7:9301"]  標明集羣初始的master節點列表

  須要注意的是,這裏的IP是docker容器本身的IP,而不是宿主機的IP。【在同一臺虛擬機上啓動兩個es實例的狀況下】

註釋3:

  修改內容的說明能夠參考elasticsearch.yml配置文件詳解或者【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎應用 集羣,安裝ik分詞器

  這兩篇中都有詳細說明

註釋4:

  es1的配置文件和es2配置文件內容都修改成上面的內容便可

 

5.分別推出容器,分別重啓es1和es2容器實例

exit
docker restart  es1   es2

 

6.分別觀察es1的啓動日誌和es2的啓動日誌,並查看集羣健康狀態

docker logs -f es1

其中一個節點啓動後,必定會報錯,提示目前集羣中只有一個master節點可是配置文件中 need 2  須要兩個。

 

 而這種狀況一直會持續到 另外一個節點也啓動成功,而且成功加入集羣后, 集羣的健康狀態 會由  yellow變成 Green.

 

查看另一個節點的啓動日誌,能夠發現兩個節點已經互相發現

 

 

 

 

固然,最後能夠經過請求查看集羣狀態

curl '192.168.92.130:9200/_cluster/health?pretty'

 

 

 

 

7.若是成功安裝kibana了,也能夠查看ES的節點情況

kibana的安裝以及ELK整個環境的搭建 仍是得回到ELK系列文件的第二章節

 

不只上面這張圖能夠反映   建立集羣成功後,一個Index分別設置shards=5  replicas=1 後,集羣的health=Green

下面這張圖更能清晰的看出來

 

 

 

8.最後要注意的

其實在第6步看到日誌之後,就能夠肯定ES的集羣啓動成功了。

第7步只是在kibana上直觀的能夠感覺到集羣的分佈。

最後須要注意的一點,就是es1和es2若是須要應用於業務,其實還須要將ik分詞器,pinyin分詞器,繁簡體轉換等插件分別安裝完成。

這個安裝的步驟,仍是回到ELK系列 第二章去繼續看吧。

 

==========================================================================結束=====================================================================

相關文章
相關標籤/搜索