elasticsearch单机多节点集群搭建
elasticsearch7开始不支持单机多节点部署
环境准备
- centos服务器两台:10.188.131.247、10.20.148.122
- elasticsearch-6.8.23、kibana-6.8.23安装包下载(下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch)
- 新增es用户(elasticsearch不能用root用户启动)
groupadd es
useradd -g es -m es
passwd es
集群搭建
- 集群概览:3个master节点,3个数据节点
服务器 | 节点名称 | 是否为主节点 | 是否为数据节点 |
10.20.148.122 | node-1 | true | true |
10.20.148.122 | node-2 | true | true |
10.20.148.122 | node-3 | true | true |
- 解压elasticsearch-6.8.23.tar.gz
tar -zxvf elasticsearch-6.8.23.tar.gz
mv elasticsearch-6.8.23 elasticsearch
- 复制为node-1
cp -r elasticsearch node-1
# 创建数据储存目录
cd node-1
mkdir -p data
# 创建日志储存目录
mkdir -p logs
# 创建归档目录
mkdir -p es_snapshot
- 配置elasticsearch.yml(以node-1节点为例)
vim /home/es/node-1/config/elasticsearch.yml
注意:每个配置项冒号后面需要空一格,否则启动会报错
#集群的名称,不同的节点通过相同集群名称来组装集群
cluster.name: es-cluster-122
#节点名称,每个节点配置不同名称
node.name: node-1
#是否主节点
node.master: true
#是否数据节点
node.data: true
#单机最大节点数
node.max_local_storage_nodes: 3
#索引数据的存储路径
path.data: /data2/es/node-1/data
#日志文件的存储路径
path.logs: /data2/es/node-1/logs
#绑定的ip地址
network.host: 10.20.148.122
#设置对外服务的http端口,默认为9200
http.port: 9200
#设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
transport.tcp.compress: true
#设置集群中节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["10.20.148.122:9300", "10.20.148.122:9301","10.20.148.122:9302"]
#防止脑裂现象,如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 这将导致数据丢失当节点<=2时设置为1,>2时官方的推荐值是(N/2)+1
discovery.zen.minimum_master_nodes: 2
#启动时锁定内存,设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
#========使用head插件的时候需要添加这3个配置========
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
#action.destructive_requires_name: true
#防止同一个shard的主副本存在同一个物理机上
cluster.routing.allocation.same_shard.host: true
#es 归档仓库路径
path.repo: ["/data2/es/node-1/es_snapshot"]
thread_pool.write.queue_size: 8192
- 创建node-2、node3节点
cp -r node-1 node-2
cp -r node-1 node-3
node-2,node-3节点配置与node-1类似,修改node.name、path.data、path.log、http.port、transport.tcp.port、path.repo等配置为对应值即可
- 如果内存空间不足,需修改jvm.options中配置
vim /home/es/node-1/config/jvm.options
#默认是1g官方建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50%
-Xms750m
-Xmx750m
- 启动各个节点
#!/bin/bash
WORKDIR=$(dirname $0)
nohup $WORKDIR/node-1/bin/elasticsearch -d 2>&1 &
nohup $WORKDIR/node-2/bin/elasticsearch -d 2>&1 &
nohup $WORKDIR/node-3/bin/elasticsearch -d 2>&1 &
如果出现
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
解决办法是修改jvm.options文件配置vim /home/es/node-1/config/jvm.options
,将
-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC
- 查看节点情况
curl -XGET 'http://10.20.148.122:9200/_cat/nodes?pretty'
curl -XGET 'http://10.20.148.122:9200/_cat/health?v'
kibana可视化平台
- 解压kibana-6.8.23-linux-x86_64.tar.gz
tar -zxvf kibana-6.8.23-linux-x86_64.tar.gz
mv kibana-6.8.23-linux-x86_64.tar.gz kibana
- 配置kibana.yml
cd kibana/config/
vim kibana.yml
# 修改端口
server.port: 5601
# 修改IP
server.host: "10.188.131.247"
# 修改监控的es集群地址
elasticsearch.hosts: ["http://10.20.148.122:9200"]
- 启动
cd kibana/bin/
nohup ./kibana &
# 查看进程
lsof -i:5601/netstat -tunlp|grep 5601
- 可视化
http://10.188.131.247:5601/