Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群,三个Master节点最多只能故障一台Master节点,如果故障两个Master节点,Elasticsearch将无法组成集群.会报错,Kibana也无法启动,因为Kibana无法获取集群中的节点信息。
我们可以在虚拟机中启动三台虚拟机或者购买三台服务器,考虑个人电脑同时打开3台虚拟机太卡或者购买服务器价格过高,可以使用在一台虚拟机或服务器安装三个ES实列,搭建伪集群,ES启动是比较耗内存的,启用之前先配置好内存使用大小限制。
es下载安装详解参考博文:Linux系统中安装elasticsearch详解_IT之一小佬的博客-CSDN博客
本文以elasticsearch-7.17.6版本为例:
集群的环境如下表所示:
| cluster name | node name | IP Addr | http端口/通信端口 |
| es-cluster | node1 | 192.168.1.1 | 9201 / 9700 |
| es-cluster | node2 | 192.168.1.1 | 9202 / 9800 |
| es-cluster | node3 | 192.168.1.1 | 9203 / 9900 |
注意:本测试用例使用一台服务器,使用同一个IP地址,所以将端口号分别设置为不同的。


如:chown -R admin:admin ./logs

elasticsearch-7.17.6-node1配置文件:
- cluster.name: es_cluster
- node.name: node1
- node.master: true
- node.data: true
- node.max_local_storage_nodes: 3
- network.host: 0.0.0.0
- http.port: 9201
- transport.tcp.port: 9700
- discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
- cluster.initial_master_nodes: ["node1", "node2", "node3"]
- path.data: /home/admin/es_cluster/data
- path.logs: /home/admin/es_cluster/logs
- # 详细介绍
- # 集群名称
- cluster.name: es_cluster
- # 节点名称
- node.name: node1
- # 是不是有资格主节点
- node.master: true
- # 是否存储数据
- node.data: true
- # 最大集群数量
- node.max_local_storage_nodes: 3
- # IP地址
- network.host: 0.0.0.0
- http.port: 9201
- # 节点之间沟通端口
- transport.tcp.port: 9700
- # 节点发现
- discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
- # 初始化一个新的集群时需要此配置来选举master
- cluster.initial_master_nodes: ["node1", "node2", "node3"]
- # 数据和存储路径
- path.data: /home/admin/es_cluster/data
- path.logs: /home/admin/es_cluster/logs
elasticsearch-7.17.6-node2配置文件:
- cluster.name: es_cluster
- node.name: node2
- node.master: true
- node.data: true
- node.max_local_storage_nodes: 3
- network.host: 0.0.0.0
- http.port: 9202
- transport.tcp.port: 9800
- discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
- cluster.initial_master_nodes: ["node1", "node2", "node3"]
- path.data: /home/admin/es_cluster/data
- path.logs: /home/admin/es_cluster/logs
elasticsearch-7.17.6-node3配置文件:
- cluster.name: es_cluster
- node.name: node3
- node.master: true
- node.data: true
- node.max_local_storage_nodes: 3
- network.host: 0.0.0.0
- http.port: 9203
- transport.tcp.port: 9900
- discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
- cluster.initial_master_nodes: ["node1", "node2", "node3"]
- path.data: /home/admin/es_cluster/data
- path.logs: /home/admin/es_cluster/logs
修改 jvm.options文件内存使用的大小,分别对三个文件修改
设置es的jvm占用内存参数,防止内存不足的错误或系统卡顿。
-xms:最小内存
-xmx:最大内存

启动时可能报的错误:

查看:
sudo sysctl -a|grep vm.max_map_count

修改:
sudo sysctl -w vm.max_map_count=262144

注意:上述方法在服务器或虚拟机重启后会恢复默认值,可以使用下述方法一劳永逸:
在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
即可永久修改
运行node1节点:

上述可以从日志中看到: master not discovered yet。还没有发现主节点。
访问单个node1节点:

访问集群状态信息:http://192.168.1.1:9201/_cat/health?v显示不成功。

当其它节点也启动时显示成功。


当看到total为3时,表示集群启动成功!

在elasticsearch-header中查看:

为了更好的管理集群,可以在kibana中进行配置。