先拉取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
mkdir -p -m 777 /var/lib/es/node1/plugins
mkdir -p -m 777 /var/lib/es/node1/data
mkdir -p -m 777 /var/lib/es/node2/plugins
mkdir -p -m 777 /var/lib/es/node2/data
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_OPTS | java虚拟机参数 |
启动 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: "*"