本章實際上是ELK第二章的插入章節。html
本章ES集羣的多節點是docker啓動在同一個虛擬機上node
=====================================================================================linux
ELK系列的示例中,啓動的是單個的ES節點。git
系列文章:github
【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎應用 集羣,安裝ik分詞器spring
【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命令詳解
======================================================================================
單節點ES使用起來,沒有多大的問題。
但有一點沒法避免,即index建立多分片和多備份的話,會顯示ES節點狀態爲yellow。
那,即圖中所描述的:備份雖然設置爲1 可是每一個分片的備份其實都沒有成功。由於沒有另外一個節點能夠提供備份的場所。
最終致使的結果就是ES集羣的健康狀態爲yellow。
而若是本ES節點掛掉,則數據徹底丟失。
在前幾章中,其實都是使用的ES單節點提供服務。
而spring boot中若是不是用自定義settings設置index的shards和replicas,那默認的index的shards=5,而replicas=1。
一樣spring boot日誌logback對接logstash,搭建ELK分佈式日誌系統,默認的index的shards=5,而replicas=1。
若是依舊啓動的是單節點Nodes=1,那麼就會致使
本章實際上是ELK系列文章 第二章的插入章節。
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"
docker inspect es1
docker inspect es2
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配置文件內容都修改成上面的內容便可
exit
docker restart es1 es2
docker logs -f es1
其中一個節點啓動後,必定會報錯,提示目前集羣中只有一個master節點可是配置文件中 need 2 須要兩個。
而這種狀況一直會持續到 另外一個節點也啓動成功,而且成功加入集羣后, 集羣的健康狀態 會由 yellow變成 Green.
查看另一個節點的啓動日誌,能夠發現兩個節點已經互相發現
固然,最後能夠經過請求查看集羣狀態
curl '192.168.92.130:9200/_cluster/health?pretty'
kibana的安裝以及ELK整個環境的搭建 仍是得回到ELK系列文件的第二章節
不只上面這張圖能夠反映 建立集羣成功後,一個Index分別設置shards=5 replicas=1 後,集羣的health=Green
下面這張圖更能清晰的看出來
其實在第6步看到日誌之後,就能夠肯定ES的集羣啓動成功了。
第7步只是在kibana上直觀的能夠感覺到集羣的分佈。
最後須要注意的一點,就是es1和es2若是須要應用於業務,其實還須要將ik分詞器,pinyin分詞器,繁簡體轉換等插件分別安裝完成。
這個安裝的步驟,仍是回到ELK系列 第二章去繼續看吧。
==========================================================================結束=====================================================================