docker-compose es集群部署
1.创建es数据的存放目录
$ mkdir /usr/local/docker/es
2.进入es目录
$ cd /usr/local/docker/es
3.创建映射文件
//创建文件
$ mkdir config data plugins
//赋予权限
$ chmod -R +777 config data plugins
4.创建elasticsearch.yml文件
$ vi ./config/elasticsearch.yml
添加以下内容:
network.host: 0.0.0.0
http.cors.enabled: true # 设置跨域,主要用于head插件访问es
http.cors.allow-origin: "*" # 允许所有域名访问
5.创建docker-compose.yml文件
$ vi docker-compose.yml
添加以下内容:
version: "3"
# 服务配置
services:
elasticsearch:
container_name: es
image: elasticsearch:7.17.13
# 用来给容器root权限(不安全)可移除
privileged: true
restart: always
environment:
- node.name=node-1 # 节点名称,集群模式下每个节点名称唯一
- network.publish_host=192.168.1.33 # 用于集群内各机器间通信,其他机器访问本机器的es服务
- network.host=0.0.0.0 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
- discovery.seed_hosts=192.168.1.33,192.168.1.34,192.168.1.35 # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
- cluster.initial_master_nodes=192.168.1.33,192.168.1.34,192.168.1.35 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.name=es-cluster # 集群名称,相同名称为一个集群
- bootstrap.memory_lock=true # 内存交换的选项,官网建议为true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" # 设置内存
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9200:9200"
- "9300:9300"
volumes:
- ./data:/usr/share/elasticsearch/data
- ./plugins:/usr/share/elasticsearch/plugins
- ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
6.内存设置
$ vi /etc/sysctl.conf
在文件最后一行,添加一下内容:
vm.max_map_count=262144
立即生效
$ sysctl -p
7.启动容器
$ docker-compose up -d
8.访问 http://192.1687.1.33:9200/_cluster/health?pretty 查看是否集群正常运行
若正常会显示一下页面: