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.7.0 安装与集群配置

Elasticsearch7.8.0版本环境——集群部署(win10系统)

Elasticsearch7.8.0版本入门——集群部署(linux环境-centos7)

Centos单机部署Elasticsearch7.2集群

CentOS7 部署 ElasticSearch7.0.1 集群

centos7下部署elasticsearch7.2集群