Docker 安装 ES8

723 阅读2分钟

下载 Elastic Search 镜像

docker pull elasticsearch:8.2.0

集群部署结构

20201024193959184.png 在一台服务器上,使用Docker部署三个ES容器组成的集群

准备虚拟网络和挂载目录

# 创建虚拟网络
docker network create es-net

# node1 的挂载目录
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/node1/config

# node2 的挂载目录
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/node2/config

# node3 的挂载目录
mkdir -p -m 777 /var/lib/es/node3/plugins
mkdir -p -m 777 /var/lib/es/node3/data
mkdir -p -m 777 /var/lib/es/node3/config

设置 max_map_count

必须修改系统参数 max_map_count,否则 Elasticsearch 无法启动: 在 /etc/sysctl.conf 文件中添加 vm.max_map_count=262144

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

# 立即生效
sysctl -p

启动 Elasticsearch 集群

node1:

  docker run -d \
  --name=node2 \
  --restart=always \
  --net es-net \
  -p 9200:9200 \
  -p 9300:9300 \
  -v /var/lib/es/node1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  -v /var/lib/es/node1/plugins:/usr/share/elasticsearch/plugins \
  -v /var/lib/es/node1/data:/usr/share/elasticsearch/data \
  -e discovery.seed_hosts=node1,node2,node3 \
  -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" \
  elasticsearch:8.2.0

node1/config/elasticsearch.yml

cluster.initial_master_nodes: ["node1"]
xpack.security.enabled: false
ingest.geoip.downloader.enabled: false
cluster.name: elastic-nodes 
node.name: node1 
http.host: 0.0.0.0 # 允许来自其他 IP 的连接
network.host: 0.0.0.0
#以下两项是外部访问http需要开启的项启用跨域资源共享
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.max-age: 1728000 

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:8.3.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:8.3.3

查看启动结果结果