搭建es集群

一、准备条件

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_filterSecComp检测,是:true、否:false
network.host监听地址,用于访问该es
network.publish_host可设置成内网ip,用于集群内各机器间通信
http.portes对外提供的http端口,默认 9200
transport.tcp.portTCP的默认监听端口,默认 9300
discovery.seed_hostses7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
cluster.initial_master_nodeses7.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”]需要注意如下图所示内容中的空格不能去掉,否则集群搭建不成

六、参考链接

1、https://blog.csdn.net/qq_27512271/article/details/98740135?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&dist_request_id=a7c5204f-07ca-464a-898d-192070a8754c&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control

2、https://cloud.tencent.com/developer/article/1189282

3、https://www.cnblogs.com/zhangan/p/10998894.html

4、https://www.cnblogs.com/yuanbaodong/p/8242129.html

5、https://www.cnblogs.com/gcgc/p/12402454.html

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值