概述
docker elasticsearch集群
1.安装镜像
# 搜索
docker search elasticsearch
# 拉取官方镜像
docker pull elasticsearch
docker pull elasticsearch:7.7.0
2.修改配置文件(elasticsearch.yml)
# master节点配置文件
# 集群名称,相同名称为一个集群, 三个es节点须一致
cluster.name: elasticsearch-cluster
# 设置一个初始master节点
cluster.initial_master_nodes: es-master
node.name: es-master
network.host: 0.0.0.0
network.publish_host: 172.18.0.2
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
# 用于配置master节点
discovery.zen.ping.unicast.hosts: ["172.18.0.2"]
discovery.zen.minimum_master_nodes: 1
# slaver节点配置文件
cluster.name: elasticsearch-cluster
cluster.initial_master_nodes: es-master
node.name: es-slaver
network.host: 0.0.0.0
network.publish_host: 172.18.0.3
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: false
node.data: true
# 用于配置master节点
discovery.zen.ping.unicast.hosts: ["172.18.0.2"]
discovery.zen.minimum_master_nodes: 1
- 设置docker固定ip
#创建docker固定网络(es-network)
docker network create --subnet=172.18.0.0/16 es-network
- 启动docker容器
# 启动master节点。设置挂载目录(日志、数据、配置文件)。同时设置网络组与固定ip
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m"
-itd -p 9200:9200 -p 9300:9300 --net=es-network --ip=172.18.0.2 -v /www/elasticsearch/master/data:/usr/share/elasticsearch/data -v /www/elasticsearch/master/logs:/usr/share/elasticsearch/logs -v /www/elasticsearch/master/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name es_master elasticsearch:7.7.0
# 启动slaver节点。设置挂载目录(日志、数据、配置文件)。同时设置网络组与固定ip
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m"
-itd -p 9201:9200 -p 9301:9300 --net=es-network --ip=172.18.0.3 -v /www/elasticsearch/slaver/data:/usr/share/elasticsearch/data -v /www/elasticsearch/slaver/logs:/usr/share/elasticsearch/logs -v /www/elasticsearch/slaver/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name es_slave elasticsearch:7.7.0
# 启动完成后监控节点信息
curl 127.0.0.1:9200/_cat/nodes
- 拉取elasticsearch-head监控
docker pull mobz/elasticsearch-head:5
# 访问监控界面
http://xxx.xxx.xxx.xxx:9100
- 注意
如果启动后无法检查到集群状态,报错“master_not_discovered_exception”
检查配置项cluster.initial_master_nodes: es-master
在每个配置文件设置一个开始节点
如果启动失败,则也有可能是elasticsearch用户权限不足或者内存不足的问题。
# 增加权限
chown -R elasticsearch.elasticsearch /挂载的目录/
# 修改可用内存
sysctl -w vm.max_map_count=262144
(临时生效,重启失效)
vi /etc/sysctl.conf
(永久生效)
sysctl vm.max_map_count=262144
# 添加此行
使用docker-compose时,docker-compose.yml的目录名不能一样。
- docker-compose
# 执行命令(以守护进程模式运行加-d选项)(类似于dockerFile的build)
docker-compose up -d
# 查看服务
docker-compose ps
# 查看日志
docker-compose logs [name]
# 停止服务
docker-compose stop [name]
# 退出服务
docker-compose kill [name]
# 删除服务
docker-compose rm [name]
# 单机部署多服务,可以都放在"services:"下
# master docker-compose.yml
version: '3'
services:
# 服务名称
es-master:
networks:
es-network:
ipv4_address: 172.18.0.2
# 使用的镜像
image: elasticsearch:7.7.0
# 容器名称
container_name: es-master
# 失败自动重启策略
restart: always
environment:
# 节点名称,集群模式下每个节点名称唯一
- node.name=es-master
# 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
- network.publish_host=172.18.0.2
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
- network.host=0.0.0.0
# es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
- discovery.seed_hosts=172.18.0.2
# es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.initial_master_nodes=172.18.0.2
# 集群名称,相同名称为一个集群, 三个es节点须一致
- cluster.name=elasticsearch-cluster
# - http.cors.enabled=true
# 是否支持跨域,是:true
# - http.cors.allow-origin="*" # 表示支持所有域名
# 内存交换的选项,官网建议为true
- bootstrap.memory_lock=true
# 设置内存,如内存不足,可以尝试调低点
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
# 栈内存的上限
ulimits:
memlock:
# 不限制
soft: -1
# 不限制
hard: -1
volumes:
# 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
- /www/elasticsearch/master/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /www/elasticsearch/master/data:/usr/share/elasticsearch/data
- /www/elasticsearch/master/logs:/usr/share/elasticsearch/logs
#- esdata:/usr/share/elasticsearch/data
# 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
ports:
# http端口,可以直接浏览器访问
- 9200:9200
# es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
- 9300:9300
#volumes:
#
esdata:
#
driver: local
# 会生成一个对应的目录和文件,如何查看,下面有说明。
networks:
es-network:
external:
name: es-network
# slaver docker-compose.yml
version: '3'
services:
# 服务名称
es-slaver:
networks:
es-network:
ipv4_address: 172.18.0.3
# 使用的镜像
image: elasticsearch:7.7.0
# 容器名称
container_name: es-slaver
# 失败自动重启策略
restart: always
environment:
# 节点名称,集群模式下每个节点名称唯一
- node.name=es-slaver
# 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
- network.publish_host=172.18.0.3
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
- network.host=0.0.0.0
# es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
- discovery.seed_hosts=172.18.0.2
# es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.initial_master_nodes=172.18.0.2
# 集群名称,相同名称为一个集群, 三个es节点须一致
- cluster.name=elasticsearch-cluster
# - http.cors.enabled=true
# 是否支持跨域,是:true
# - http.cors.allow-origin="*" # 表示支持所有域名
# 内存交换的选项,官网建议为true
- bootstrap.memory_lock=true
# 设置内存,如内存不足,可以尝试调低点
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
# 栈内存的上限
ulimits:
memlock:
# 不限制
soft: -1
# 不限制
hard: -1
volumes:
# 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
- /www/elasticsearch/slaver/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /www/elasticsearch/slaver/data:/usr/share/elasticsearch/data
- /www/elasticsearch/slaver/logs:/usr/share/elasticsearch/logs
#- esdata:/usr/share/elasticsearch/data
# 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
ports:
# http端口,可以直接浏览器访问
- 9201:9200
# es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
- 9301:9300
#volumes:
#
esdata:
#
driver: local
# 会生成一个对应的目录和文件,如何查看,下面有说明。
networks:
es-network:
external:
name: es-network
最后
以上就是美满过客为你收集整理的docker elasticsearch集群的全部内容,希望文章能够帮你解决docker elasticsearch集群所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复