拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.1.0
本地下载太慢,我这里用我自己的香港服务器执行上述命令拉取镜像,导出到服务器本地,再下载下来,重新导入到虚拟机中。
# docker下导出镜像到本地
mkdir -p /data/docker_images/
docker save > /data/docker_images/es-7.1.0.tar.gz docker.elastic.co/elasticsearch/elasticsearch:7.1.0
# 下载下来
sz /data/docker_images/es-7.1.0.tar.gz
# 文件上传到虚拟机/data/docker_images/目录下、加载到docker中
docker load < /data/docker_images/es-7.1.0.tar.gz
单机版
集群版
创建网络
docker network create elk
配置
# 创建目录
mkdir -p /data/elasticsearch/7.1.0/node-1/conf
mkdir -p /data/elasticsearch/7.1.0/node-2/conf
mkdir -p /data/elasticsearch/7.1.0/node-3/conf
mkdir -p /data/elasticsearch/7.1.0/node-4/conf
mkdir -p /data/elasticsearch/7.1.0/node-5/conf
mkdir -p /data/elasticsearch/7.1.0/node-6/conf
mkdir -p /data/elasticsearch/7.1.0/node-1/data
mkdir -p /data/elasticsearch/7.1.0/node-2/data
mkdir -p /data/elasticsearch/7.1.0/node-3/data
mkdir -p /data/elasticsearch/7.1.0/node-4/data
mkdir -p /data/elasticsearch/7.1.0/node-5/data
mkdir -p /data/elasticsearch/7.1.0/node-6/data
mkdir -p /data/elasticsearch/7.1.0/node-1/logs
mkdir -p /data/elasticsearch/7.1.0/node-2/logs
mkdir -p /data/elasticsearch/7.1.0/node-3/logs
mkdir -p /data/elasticsearch/7.1.0/node-4/logs
mkdir -p /data/elasticsearch/7.1.0/node-5/logs
mkdir -p /data/elasticsearch/7.1.0/node-6/logs
vim /data/elasticsearch/7.1.0/node-1/conf/elasticsearch.yml
cluster.name: es
node.name: node1
node.master: true
node.data: false
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 3
discovery.seed_hosts: ["192.168.1.201:9300", "192.168.1.201:9301", "192.168.1.201:9302", "192.168.1.201:9303", "192.168.1.201:9304", "192.168.1.201:9305"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
vim /data/elasticsearch/7.1.0/node-2/conf/elasticsearch.yml
cluster.name: es
node.name: node2
node.master: true
node.data: false
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 3
discovery.seed_hosts: ["192.168.1.201:9300", "192.168.1.201:9301", "192.168.1.201:9302", "192.168.1.201:9303", "192.168.1.201:9304", "192.168.1.201:9305"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
vim /data/elasticsearch/7.1.0/node-3/conf/elasticsearch.yml
cluster.name: es
node.name: node3
node.master: true
node.data: false
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 3
discovery.seed_hosts: ["192.168.1.201:9300", "192.168.1.201:9301", "192.168.1.201:9302", "192.168.1.201:9303", "192.168.1.201:9304", "192.168.1.201:9305"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
vim /data/elasticsearch/7.1.0/node-4/conf/elasticsearch.yml
cluster.name: es
node.name: node4
node.master: false
node.data: true
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 3
discovery.seed_hosts: ["192.168.1.201:9300", "192.168.1.201:9301", "192.168.1.201:9302", "192.168.1.201:9303", "192.168.1.201:9304", "192.168.1.201:9305"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
vim /data/elasticsearch/7.1.0/node-5/conf/elasticsearch.yml
cluster.name: es
node.name: node5
node.master: false
node.data: true
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 3
discovery.seed_hosts: ["192.168.1.201:9300", "192.168.1.201:9301", "192.168.1.201:9302", "192.168.1.201:9303", "192.168.1.201:9304", "192.168.1.201:9305"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
vim /data/elasticsearch/7.1.0/node-6/conf/elasticsearch.yml
cluster.name: es
node.name: node6
node.master: false
node.data: true
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 3
discovery.seed_hosts: ["192.168.1.201:9300", "192.168.1.201:9301", "192.168.1.201:9302", "192.168.1.201:9303", "192.168.1.201:9304", "192.168.1.201:9305"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
启动容器
docker run --name es-node1 --restart always --net elk -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9200:9200 -p 9300:9300 -v /data/elasticsearch/7.1.0/node-1/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/7.1.0/node-1/data:/usr/share/elasticsearch/data -v /data/elasticsearch/7.1.0/node-1/logs:/usr/share/elasticsearch/logs -d docker.elastic.co/elasticsearch/elasticsearch:7.1.0
docker run --name es-node2 --restart always --net elk -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9201:9200 -p 9301:9300 -v /data/elasticsearch/7.1.0/node-2/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/7.1.0/node-2/data:/usr/share/elasticsearch/data -v /data/elasticsearch/7.1.0/node-2/logs:/usr/share/elasticsearch/logs -d docker.elastic.co/elasticsearch/elasticsearch:7.1.0
docker run --name es-node3 --restart always --net elk -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9202:9200 -p 9302:9300 -v /data/elasticsearch/7.1.0/node-3/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/7.1.0/node-3/data:/usr/share/elasticsearch/data -v /data/elasticsearch/7.1.0/node-3/logs:/usr/share/elasticsearch/logs -d docker.elastic.co/elasticsearch/elasticsearch:7.1.0
docker run --name es-node4 --restart always --net elk -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9203:9200 -p 9303:9300 -v /data/elasticsearch/7.1.0/node-4/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/7.1.0/node-4/data:/usr/share/elasticsearch/data -v /data/elasticsearch/7.1.0/node-4/logs:/usr/share/elasticsearch/logs -d docker.elastic.co/elasticsearch/elasticsearch:7.1.0
docker run --name es-node5 --restart always --net elk -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9204:9200 -p 9304:9300 -v /data/elasticsearch/7.1.0/node-5/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/7.1.0/node-5/data:/usr/share/elasticsearch/data -v /data/elasticsearch/7.1.0/node-5/logs:/usr/share/elasticsearch/logs -d docker.elastic.co/elasticsearch/elasticsearch:7.1.0
docker run --name es-node6 --restart always --net elk -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9205:9200 -p 9305:9300 -v /data/elasticsearch/7.1.0/node-6/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/7.1.0/node-6/data:/usr/share/elasticsearch/data -v /data/elasticsearch/7.1.0/node-6/logs:/usr/share/elasticsearch/logs -d docker.elastic.co/elasticsearch/elasticsearch:7.1.0
解决目录权限问题
chmod 777 /data/elasticsearch/7.1.0/*/*
测试集群状态
# 浏览器访问
http://192.168.1.201:9200/_cat/health
# 返回结果
1584291279 16:54:39 es green 1 1 0 0 0 0 0 0 - 100.0%
附录
两个报错解决方案(宿主机上配置即可,无需到容器内配置)
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
vim /etc/security/limits.conf
# 添加如下配置
*** hard nofile 65536
*** soft nofile 65536
*** 是启动ES的用户
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [655360]
vim /etc/sysctl.conf
# 添加如下配置
vm.max_map_count=655360
保存后,执行sysctl -p ,修改生效。
sysctl -p