介绍
介绍
既然选择ES集群自然是要达到更好的高可用性能,ES集群比较常见的操作就是扩容和缩容(即:添加节点和删除节点),那么ES集群如何实现在不停服务的情况下添加节点和删除节点的呢?
今天福哥就带着大家学习如何给ES集群添加主机节点、删除主机节点,一起来吧~
添加节点
当前节点
可以看到目前集群tfes-cluster有三个节点。
当前分片
当前有10个分片,5个主分片,5个副本分片。它们分散在01~03三个主机节点里面。
docker-compose-es-cluster.yml
这里福哥要给集群tfes-cluster添加一个新主机节点tfes05,而集群tfes-cluster目前是由tfes01、tfes02和tfes03三个主机节点组成的,要将tfes05添加到集群tfes-cluster里面需要更改docker-compose-es-cluster.yml。
福哥在docker-compose-es-cluster.yml里面添加了一个tfes05服务,配置hosts包括了tfes01、tfes02、tfes03和tfes05自身。
tfes05: image: registry.tongfu.net:5000/elasticsearch:6.8.15 container_name: tfes05 environment: - node.name=tfes05 - cluster.name=tfes-cluster - discovery.zen.ping.unicast.hosts=tfes01,tfes02,tfes03,tfes05 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - /data/docker.data/tfes05/data:/usr/share/elasticsearch/data
目录
福哥一下子建立了tfes05目录用来做映射数据卷。
启动
现在福哥单独启动了tfes05这个服务。
docker-compose -f docker-compose-es-cluster.yml up -d tfes05
查看节点状态,tfes05被加进来了。
docker exec tfes01 curl -sS http://localhost:9200/_cat/nodes?v
查看健康状态是green没有问题。
docker exec tfes01 curl -sS http://localhost:9200/_cluster/health?pretty=true
查看分片信息,tfes05上的主分片和副本分片都没有文档。
测试
插入数据
福哥往test索引里面插入三条数据。
curl -X POST -H 'Content-Type: application/json' -d '{"id":4,"name":"PHP"}' 'http://localhost:9200/test/test' curl -X POST -H 'Content-Type: application/json' -d '{"id":5,"name":"Python"}' 'http://localhost:9200/test/test' curl -X POST -H 'Content-Type: application/json' -d '{"id":6,"name":"Java"}' 'http://localhost:9200/test/test'
查看分片信息
现在我们来看看分片信息,可以看到tfes05上面有文档了。
总结
福哥只是在tfes05服务上面指定discovery.zen.ping.unicast.hosts添加了tfes05,而tfes01~03上面还没有添加tfes05,但是tfes05依然成功加入了tfes-cluster集群。
这个设计确实很方便啊!
福哥又添加了一个tfes06节点,集群依然顺利的找到新节点并且将新节点加入了进来。
删除节点
删除节点
福哥把前面添加的tfes03节点停止了,模拟节点被撤下的效果。
docker stop tfes03
状态
查看集群节点状态,没有了tfes03节点。
查看集群健康状态,变成了4个节点了。
查看分片信息,少了tfes03节点,依然是6个文档。
查看人tfes01节点的日志,由于tfes01连接不到tfes03节点,触发了删除节点的事件。
总结
看来即使某个节点被意外关闭了服务还是可以正常运行的,这个就是集群的价值所在了。
恢复节点
恢复节点
福哥现在把tfes03再启动起来。
docker start tfes03
状态
查看集群节点状态,tfes03又回来了。
查看集群健康状态是green没有问题。
查看分片信息,主分片和副本分片有分片在tfes03节点上。
总结
今天福哥带着大家学习了给ES集群添加主机节点和删除主机节点的方法,根据我们的实验结果证明,无论是添加还是删除,ES集群的高可用都还是很可靠的。