一、准备条件
1、ElasticSearch版本 7.5.1
2、jdk依赖环境已安装
3、三台服务器,其IP地址分别为 192.168.0.100、192.168.0.101、192.168.0.102
二、elasticsearch.yml 配置环境
参数 | 说明 |
cluster.name | 集群名称,相同名称为一个集群 |
node.name | 节点名称,集群模式下每个节点名称唯一 |
node.master | 当前节点是否可以被选举为master节点,是:true、否:false |
node.data | 当前节点是否用于存储数据,是:true、否:false |
path.data | 索引数据存放的位置 |
path.logs | 日志文件存放的位置 |
bootstrap.memory_lock | 需求锁住物理内存,是:true、否:false |
bootstrap.system_call_filter | SecComp检测,是:true、否:false |
network.host | 监听地址,用于访问该es |
network.publish_host | 可设置成内网ip,用于集群内各机器间通信 |
http.port | es对外提供的http端口,默认 9200 |
transport.tcp.port | TCP的默认监听端口,默认 9300 |
discovery.seed_hosts | es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点 |
cluster.initial_master_nodes | es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master |
http.cors.enabled | 是否支持跨域,是:true,在使用head插件时需要此配置 |
http.cors.allow-origin | “*” 表示支持所有域名 |
三、安装步骤
3.1 将下载的elasticsearch-7.5.1解压到指定安装目录,假设先安装的服务器IP地址为192.168.0.100。在config文件夹下配置elastic文件elasticsearch.yml,设置配置如下
#
# ---------------------------------- Cluster -----------------------------------
#设置集群名称,集群内所有节点的名称必须一致
cluster.name: es-cluster
#
# ------------------------------------ Node ------------------------------------
# 设置节点名称,唯一
node.name: node-0
# 当前节点是否会作为主节点
node.master: true
# 当前节点是否用于存储数据
node.data: true
# ----------------------------------- Paths ------------------------------------
# 索引数据存放路径,如果root空间不大,注意不要放在root目录,容易引发运行错误
path.data: /home/elasticsearch-7.5.1/data
#
# 日志文件存放路径
#
path.logs: /home/elasticsearch-7.5.1/log
#
# ----------------------------------- Memory -----------------------------------
#
# 需求锁住物理内存
#
bootstrap.memory_lock: true
# ---------------------------------- Network -----------------------------------
# 监听地址,用于访问该es
network.host: 0.0.0.0
# 对外提供的http端口,默认9200
http.port: 9200
# TCP 监听端口,默认9300
transport.tcp.port: 9304
# --------------------------------- Discovery ----------------------------------
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.0.100:9304", "192.168.0.101:9304", "192.168.0.102:9304"]
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 2
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-0", "node-1", "node-2"]
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
3.2 配置es内存
打开文件config/jvm.options, 配置参数,建议设置内存为安装主机内存的一版,但不要超过31g。
-Xms31g
-Xmx31g
3.3 拷贝文件
将192.168.0.100整个目录拷贝到服务器192.168.0.101、192.168.0.102上,修改其配置文件elasticsearch.yml。只需要修改节点名称node.name即可。
192.168.0.101节点elasticsearch.yml配置文件如下:
#
# ---------------------------------- Cluster -----------------------------------
#设置集群名称,集群内所有节点的名称必须一致
cluster.name: es-cluster
#
# ------------------------------------ Node ------------------------------------
# 设置节点名称,唯一
node.name: node-1
# 当前节点是否会作为主节点
node.master: true
# 当前节点是否用于存储数据
node.data: true
# ----------------------------------- Paths ------------------------------------
# 索引数据存放路径,如果root空间不大,注意不要放在root目录,容易引发运行错误
path.data: /home/elasticsearch-7.5.1/data
#
# 日志文件存放路径
#
path.logs: /home/elasticsearch-7.5.1/log
#
# ----------------------------------- Memory -----------------------------------
#
# 需求锁住物理内存
#
bootstrap.memory_lock: true
# ---------------------------------- Network -----------------------------------
# 监听地址,用于访问该es
network.host: 0.0.0.0
# 对外提供的http端口,默认9200
http.port: 9200
# TCP 监听端口,默认9300
transport.tcp.port: 9304
# --------------------------------- Discovery ----------------------------------
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.0.100:9304", "192.168.0.101:9304", "192.168.0.102:9304"]
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 2
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-0", "node-1", "node-2"]
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
192.168.0.102 节点elasticsearch.yml配置如下
#
# ---------------------------------- Cluster -----------------------------------
#设置集群名称,集群内所有节点的名称必须一致
cluster.name: es-cluster
#
# ------------------------------------ Node ------------------------------------
# 设置节点名称,唯一
node.name: node-2
# 当前节点是否会作为主节点
node.master: true
# 当前节点是否用于存储数据
node.data: true
# ----------------------------------- Paths ------------------------------------
# 索引数据存放路径,如果root空间不大,注意不要放在root目录,容易引发运行错误
path.data: /home/elasticsearch-7.5.1/data
#
# 日志文件存放路径
#
path.logs: /home/elasticsearch-7.5.1/log
#
# ----------------------------------- Memory -----------------------------------
#
# 需求锁住物理内存
#
bootstrap.memory_lock: true
# ---------------------------------- Network -----------------------------------
# 监听地址,用于访问该es
network.host: 0.0.0.0
# 对外提供的http端口,默认9200
http.port: 9200
# TCP 监听端口,默认9300
transport.tcp.port: 9304
# --------------------------------- Discovery ----------------------------------
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.0.100:9304", "192.168.0.101:9304", "192.168.0.102:9304"]
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 2
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-0", "node-1", "node-2"]
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
3.3 启动服务
由于elasticsearch不能使用root用户启动,需要创建非root用户
3.3.1 在三台服务器上创建非root用户elasticsearch
groupadd elasticsearch
useradd -g elasticsearch elasticsearch
3.3.2 改变elasticsearch所有文件夹到当前用户,即elasticsearch用户
# 改变安装目录elasticsearch-7.5.1到用户elasticsearch
sudo chown -R elasticsearch:elasticsearch elasticsearch-7.5.1
# 改变数据目录、日志目录到用户elasticsearch
sudo chown -R elasticsearch:elasticsearch /home/elasticsearch-7.5.1/data
sudo chown -R elasticsearch:elasticsearch /home/elasticsearch-7.5.1/log
3.3.3在三台服务器上均执行操作, 切换到elasticsearch用户,启动服务
# 切换用户
su elasticsearch
# 进入bin目录,后台启动elastic
./elasticsearch -d
3.3.4 至此,三台服务器均启动elasticsearch服务。若无报错,浏览器访问http://192.168.0.100:9200/_cat/nodes?v查看节点信息,可以看到集群三个节点均正常启动
四、 安装kibana可视化工具
下载 Kibana 7.5.1 ,解压到服务器 192.168.0.100 目录,编辑配置文件 config/kibana.yml
# 服务端口
sever.port: 5601
# 监听ip
server.hos: "0.0.0.0"
# elasticsearch 查询接口
elasticsearch.hosts: ["http://192.168.0.100:9200"]
# 设置中文
i18n.locale: "zh-CN"
进入bin目录,以root用户后台运行Kibana
nohup ./kibana --allow-root &
重启Kibana
# 找到kibana对应的进程
netstat -anltp|grep 5601
# kill相关进程
kill -9 进程号
五、一些问题
5.1 启动es节点,访问elasticsearch-head时只显示一个master
解决方案:进到节点2、3的/elasticsearch-7.5.1/data/目录下删除nodes文件,之后重启节点2、3的es进程
5.2 在配置discovery.seed_hosts: [“192.168.100:9304”, “192.168.0.101:9304”, “192.168.0.102:9304”]需要注意如下图所示内容中的空格不能去掉,否则集群搭建不成