本章实际上是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系列 第二章去继续看吧。
==========================================================================结束=====================================================================