elasticsearch7 docker集群部署
Posted daiyuenlong110
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch7 docker集群部署相关的知识,希望对你有一定的参考价值。
背景
在日志分析中常用中间件 ELK,工作中需要部署一套 elastic 7 集群用于存储数据。搭建过程如下。
镜像版本
elasticsearch:7.16.2
kibana:7.16.2
部署地址:192.168.20.20/192.168.20.21/192.168.20.22
创建目录
sudo mkdir -p /app/server/elasticsearch/temp/config
sudo mkdir -p /app/server/elasticsearch/temp/data
sudo mkdir -p /app/server/elasticsearch/temp/logs
修改权限
sudo chmod 777 /app/server/elasticsearch/temp/config
sudo chmod 777 /app/server/elasticsearch/temp/data
sudo chmod 777 /app/server/elasticsearch/temp/logs
在config目录新增配置文件, elasticsearch.yml
启动命令:docker run -d --network=host --privileged=true -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e TAKE_FILE_OWNERSHIP=true --name es-node2 -v /dockerdata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /dockerdata/elasticsearch/data:/usr/share/elasticsearch/data -v /dockerdata/elasticsearch/logs:/usr/share/elasticsearch/logs -v /dockerdata/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.3.0
# 设置集群名称,集群内所有节点的名称必须一致。
cluster.name: kont
# 设置节点名称,集群内节点名称必须唯一。
node.name: es-node1
# 表示该节点会不会作为主节点,true表示会;false表示不会
# node.master: true
# 当前节点是否用于存储数据,是:true、否:false
# node.data: true
# 索引数据存放的位置
#path.data: /dockerdata/elasticsearch/data
# 日志文件存放的位置
#path.logs: /dockerdata/elasticsearch/logs
# 需求锁住物理内存,是:true、否:false
#bootstrap.memory_lock: true
# 监听地址,用于访问该es
network.host: 0.0.0.0
# es对外提供的http端口,默认 9200
http.port: 9200
# TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
# discovery.zen.minimum_master_nodes: 1
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["82.157.156.231:9300","82.157.69.53:9300"]
# discovery.zen.fd.ping_timeout: 1m
# discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
# cluster.initial_master_nodes: ["82.157.156.231:9300","82.157.69:53:9300"]
#下面这句里面要填写节点名称不是ip地址
cluster.initial_master_nodes: ["es-node1","es-node2"]
#设置当前节点与其他节点交互的IP地址(没有这一句访问http://82.157.69.53:9200/_cat/nodes?pretty会报错master_not_discovered_exception)
network.publish_host: 82.157.156.231
#在每个配置文件指定初始节点:
# cluster.initial_master_nodes: es-node1
# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
# 设置集群名称,集群内所有节点的名称必须一致。
cluster.name: kont
# 设置节点名称,集群内节点名称必须唯一。
node.name: node1
# 表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 索引数据存放的位置
#path.data: /usr/share/elasticsearch/data
# 日志文件存放的位置
#path.logs: /usr/share/elasticsearch/logs
# 需求锁住物理内存,是:true、否:false
#bootstrap.memory_lock: true
# 监听地址,用于访问该es
network.host: 192.168.130.20
# es对外提供的http端口,默认 9200
http.port: 9200
# TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
容器启动配置。磁盘挂载
/app/server/elasticsearch/temp/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
/app/server/elasticsearch/temp/data:/usr/share/elasticsearch/data
/app/server/elasticsearch/temp/logs:/usr/share/elasticsearch/logs
启动好后进行验证
# 安装ik分词器
1.在本地电脑下载:
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.0/elasticsearch-analysis-ik-7.3.0.zip
2.将压缩包解压并分别上传到所在集群节点的plugs挂在目录
3.docker restart xxx 重启容器
打开浏览器,检查集群是否正常
http://xx.xx.xx.xx:9200/_cat/nodes?pretty
curl -l http://192.168.20.20:19200
查看集群状态
curl -X GET "192.168.20.20:19200/_cat/health?v"
查看节点
curl -X GET "192.168.20.20:19200/_cat/nodes?v&pretty"
查看所有索引
curl -XGET "http://192.168.20.20:19200/_cat/indices?v&pretty"
可视化工具安装
####### kibana 安装
1 创建文件夹
sudo mkdir -p /app/server/elasticsearch/kibana/config
2 配置文件,kibana.yml
sudo vi /app/server/elasticsearch/kibana/config/kibana.yml
server.port: 9901
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://192.168.20.20:19200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true
3 启动配置
/app/server/elasticsearch/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
######## elasticsearch-hq 安装
docker run -d -p 9900:5000 elastichq/elasticsearch-hq:release-v3.5.12
以上是关于elasticsearch7 docker集群部署的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch7.8.0版本环境——集群部署(win10系统)
Elasticsearch7.8.0版本入门——集群部署(linux环境-centos7)