先拉取Elasticsearch镜像

docker pull elasticsearch:7.9.3

2设置 max_map_count
必须修改系统参数 max_map_count,否则 Elasticsearch 无法启动:

在 /etc/sysctl.conf 文件中添加 vm.max_map_count=262144

echo 'vm.max_map_count=262144' >>/etc/sysctl.conf

查看上面语句是否添加成功

cat /etc/sysctl.conf

准备虚拟网络和挂载目录

创建虚拟网络

docker network create es-net

node1 的挂载目录

mkdir -p -m 777 /var/lib/es/node1/plugins
mkdir -p -m 777 /var/lib/es/node1/data

node2 的挂载目录

mkdir -p -m 777 /var/lib/es/node2/plugins
mkdir -p -m 777 /var/lib/es/node2/data

node3 的挂载目录

mkdir -p -m 777 /var/lib/es/node3/plugins
mkdir -p -m 777 /var/lib/es/node3/data

在这里插入图片描述

环境变量说明
node.name节点在集群中的唯一名称
node.master可已被选举为主节点
network.host当前节点的地址
discovery.seed_hosts集群中其他节点的地址列表
cluster.initial_master_nodes候选的主节点地址列表
cluster.name集群名
ES_JAVA_OPTSjava虚拟机参数

启动 Elasticsearch 集群
node1

docker run -d   --name=node1   --restart=always   --net es-net   -p 9200:9200   -p 9300:9300   -v /var/lib/es/node1/plugins:/usr/share/elasticsearch/plugins   -v /var/lib/es/node1/data:/usr/share/elasticsearch/data   -e node.name=node1   -e node.master=true   -e network.host=node1   -e discovery.seed_hosts=node1,node2,node3   -e cluster.initial_master_nodes=node1   -e cluster.name=es-cluster   -e "ES_JAVA_OPTS=-Xms256m -Xmx256m"   elasticsearch:7.9.3

node2

docker run -d   --name=node2   --restart=always   --net es-net   -p 9201:9200   -p 9301:9300   -v /var/lib/es/node2/plugins:/usr/share/elasticsearch/plugins   -v /var/lib/es/node2/data:/usr/share/elasticsearch/data   -e node.name=node2   -e node.master=true   -e network.host=node2   -e discovery.seed_hosts=node1,node2,node3   -e cluster.initial_master_nodes=node1   -e cluster.name=es-cluster   -e "ES_JAVA_OPTS=-Xms256m -Xmx256m"   elasticsearch:7.9.3

node3

docker run -d   --name=node3   --restart=always   --net es-net   -p 9202:9200   -p 9302:9300   -v /var/lib/es/node3/plugins:/usr/share/elasticsearch/plugins   -v /var/lib/es/node3/data:/usr/share/elasticsearch/data   -e node.name=node3   -e node.master=true   -e network.host=node3   -e discovery.seed_hosts=node1,node2,node3   -e cluster.initial_master_nodes=node1   -e cluster.name=es-cluster   -e "ES_JAVA_OPTS=-Xms256m -Xmx256m"   elasticsearch:7.9.3

查看集群

curl http://127.0.0.1:9200/_cat/nodes?pretty

设置elasticsearch-head

docker run -d     --name=elasticsearch-head     -p 9100:9100     -m 512m     --memory-swap=1024m     mobz/elasticsearch-head:5

在这里插入图片描述

集群配置之后可能存在连接不上elasticsearch-head的情况,需要到三个集群的容器里边设置下跨域的问题

进入到节点容器中的docker exec -it node2 /bin/bash(node2 是节点名称)
找到elasticsearch.yml进去修改下内容,每个节点都需要修改

在这里插入图片描述
在这里插入图片描述
增加这两句

http.cors.enabled: true
http.cors.allow-origin: "*"
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐