elasticsearch 集群部署
系统内存: 要是在生产环境下确定你的内存在16G以上 ,因为我们的ES7.X默认需要这么大的内存
配置环境:三台 centos7
版本号:7.9.1
1. 下载并解压
```
tar -zxvf elasticsearch-7.9.1-linux-x86_64.tar.gz
```
2.修改配置
2.1 重新指定jdk
vi bin/elasticsearch
#配置ES自带的jdk
export JAVA_HOME=/home/es/elasticsearch-7.9.1/jdk
export PATH=$JAVA_HOME/bin:$PATH
#添加jdk判断,注意,要带小引号。
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/home/es/elasticsearch-7.9.1/jdk/bin/java"
else
JAVA=`which java`
fi
2.1.1 创建es的数据文件和日志文件
设置索引数据的存储路径,默认是es根目录下的data文件夹
mkdir data
设置日志文件的存储路径,默认是es根目录下的logs文件夹
mkdir logs
在启动elasticsearch之前,ES在启动的时候是不允许使用root账户的,所以我们要新建一个用户 es。
2.2 创建用户
useradd es
2.3 更换权限
chown -R es:es /home/es/elasticsearch/elasticsearch-7.9.1
chown -R /data
chown -R /logs
2.4 切换用户
su es
2.5 启动 测试是否成功运行
./bin/elasticsearch
查看端口占用情况
jps 或者
测试9200端口,能否获得响应
curl 127.0.0.1:9200 或者
netstat -ntplu
2.6 绑定ip
vi /es/elasticsearch-7.9.1/config/elasticsearch.yml
network.host: 192.168.31.110
discovery.seed_hosts: ["192.168.31.110:9700"]
cluster.initial_master_nodes: ["192.168.31.110:9700"]
elasticsearch.yml详细配置.
cluster.name:
配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
node.name:
节点名,通常一台物理服务器就是一个节点,es会默认随机指定一个名字,建议指定一个有意义
的名称,方便管理
一个或多个节点组成一个cluster集群,集群是一个逻辑的概念,节点是物理概念,后边章节会
详细介绍。
path.conf:
设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认
在/etc/ elasticsearch
path.data:
设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔
开。
path.logs:
设置日志文件的存储路径,默认是es根目录下的logs文件夹
path.plugins:
设置插件的存放路径,默认是es根目录下的plugins文件夹
bootstrap.memory_lock: true
设置为true可以锁住ES使用的内存,避免内存与swap分区交换数据。
network.host:
设置绑定主机的ip地址,设置为0.0.0.0表示绑定任何ip,允许外网访问,生产环境建议设置为
具体的ip。
http.port: 9200
设置对外服务的http端口,默认为9200。
transport.tcp.port: 9300 集群结点之间通信端口
node.master:
指定该节点是否有资格被选举成为master结点,默认是true,如果原来的master宕机会重新选
举新的master。
node.data:
指定该节点是否存储索引数据,默认为true。
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["localhost:9700","localhost:9800","localhost:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1", "node2","node3"]
node.max_local_storage_nodes:
单机允许的最大存储结点数,通常单机启动一个结点建议设置为1,开发环境如果单机启动多个节
点可设置大于1。
2.7 设置es内存
vi /es/elasticsearch-7.9.1/config/jvm.options
在配置文件中设置
-Xms8g
-Xmx8g
根据生产情况设定。建议-Xms与-Xmx配置成一样,同时不要超过32G,一些文档说是30.5G
参考文献:https://www.elastic.co/cn/blog/a-heap-of-trouble
2.8 .访问我们es的地址了
http:192.168.31.110:9200
2.9 es后台启动
./bin/elasticsearch -d
集群部署
第一台服务器配置:
vi /es/elasticsearch.7.9.1/config/elasticsearch.yml
#集群名称
cluster.name: my_es
#节点名称
node.name: node1
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
network.host: 192.168.31.110
#端口
http.port: 9201
#内部节点之间沟通端口
transport.tcp.port: 9700
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.31.110:9700","192.168.31.111:9800","192.168.31.112:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1", "node2","node3"]
#数据和存储路径
path.data: /data
path.logs: /logs
第二台服务器配置:
#集群名称
cluster.name: my_es
#节点名称
node.name: node2
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#ip地址 你的IP地址,请自行配置
network.host: 192.168.31.111
#端口
http.port: 9202
#内部节点之间沟通端口
transport.tcp.port: 9800
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.31.110:9700","192.168.31.111:9800","192.168.31.112:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1", "node2","node3"]
#数据和存储路径
path.data: /data
path.logs: /logs
访问集群状态信息 http://192.168.149.135:9201/_cat/health?v 成功
健康状况结果解释:
cluster 集群名称
status 集群状态
green代表健康;
yellow代表分配了所有主分片,但至少缺少一个副本,此时集群数据仍旧完整;
red 代表部分主分片不可用,可能已经丢失数据。这个时候我们就可以启动我们的第三个ES节点,
第三台服务器配置文件
启动完成之后,我们去访问
集群状态信息 http://192.168.149.135:9201/_cat/health?v 成功。
我们这个时候就能够看到集群的节点数已经变成了三个,我们的ES集群就已经成功搭建了
使用Kibana配置和管理集群
集群配置
因为之前我们在单机演示的时候也使用到了Kibana,我们直接将他修改成集群配置
修改Kibana的集群配置
node.total代表在线的节点总数量
node.data代表在线的数据节点的数量
shards 存活的分片数量
pri 存活的主分片数量 正常情况下 shards的数量是pri的两倍。
relo迁移中的分片数量,正常情况为 0
init 初始化中的分片数量 正常情况为 0
unassign未分配的分片 正常情况为 0
pending_tasks准备中的任务,任务指迁移分片等 正常情况为 0
max_task_wait_time任务最长等待时间
active_shards_percent正常分片百分比 正常情况为 100%
第三台服务器配置:
#集群名称
cluster.name: my_es
#节点名称
node.name: node3
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#ip地址 你的IP地址,请自行配置
network.host: 192.168.31.112
#端口
http.port: 9203
#内部节点之间沟通端口
transport.tcp.port: 9900
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.31.110:9700","192.168.31.111:9800","192.168.31.112:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1", "node2","node3"]
#数据和存储路径
path.data: /data
path.logs: /logs