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/