安装步骤
拉取镜像
docker pull elasticsearch:7.8.0
配置文件
1. 创建文件挂载目录,并开放端口
#创建三个挂载目录,并在挂载目录下创建data和config文件夹
[root@ykp es]# mkdir node1
[root@ykp es]# mkdir node2
[root@ykp es]# mkdir node3
2. 修改文件权限,不修改的话会报错
[root@ykp node3]# chmod 777 data/
3. 新建配置文件
进入到config文件夹目录下编辑配置文件
#节点1的配置文件
[root@ykp config]# vim elasticsearch.yml
[root@ykp config]# cat elasticsearch.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.15.8
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.15.8:9300","192.168.15.8:9301","192.168.15.8:9302"]
#discovery.zen.ping.unicast.hosts: ["192.168.15.8:9300","192.168.15.8:9301","192.168.15.8:9302"]
#discovery.zen.minimum_master_nodes: 2
#节点2的配置文件
[root@ykp config]# vim elasticsearch.yml
[root@ykp config]# cat elasticsearch.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.15.8
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.15.8:9300","192.168.15.8:9301","192.168.15.8:9302"]
#discovery.zen.ping.unicast.hosts: ["192.168.15.8:9300","192.168.15.8:9301","192.168.15.8:9302"]
#discovery.zen.minimum_master_nodes: 2
#节点3的配置文件
[root@ykp config]# vim elasticsearch.yml
[root@ykp config]# cat elasticsearch.yml
cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.15.8
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
node.ingest: true
discovery.seed_hosts: ["192.168.15.8:9300","192.168.15.8:9301","192.168.15.8:9302"]
#discovery.zen.ping.unicast.hosts: ["192.168.15.8:9300","192.168.15.8:9301","192.168.15.8:9302"]
#discovery.zen.minimum_master_nodes: 2
启动三个容器
[root@ykp /]# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /cyyuse/es/node1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /cyyuse/es/node1/data:/usr/share/elasticsearch/data --name ES01 elasticsearch:7.8.0
1c6ad925862474df2cc4d337f82b41c5ad068e2179ed81c934edc0c62df69cf9
[root@ykp /]# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /cyyuse/es/node2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /cyyuse/es/node2/data:/usr/share/elasticsearch/data --name ES02 elasticsearch:7.8.0
4139efc8fefcab773098ffe42563c20d7617280e849dd8be7d06ed156f382c81
[root@ykp node3]# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /cyyuse/es/node3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /cyyuse/es/node3/data:/usr/share/elasticsearch/data --name ES03 elasticsearch:7.8.0
68104485fd4467e912f4160620ae638b4ade278c226c0d61ee99fea945d93200
#查看容器启动是否成功
[root@ykp /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4139efc8fefc elasticsearch:7.8.0 "/tini -- /usr/local…" 3 seconds ago Up 2 seconds 9200/tcp, 0.0.0.0:9201->9201/tcp, :::9201->9201/tcp, 9300/tcp, 0.0.0.0:9301->9301/tcp, :::9301->9301/tcp ES02
1c6ad9258624 elasticsearch:7.8.0 "/tini -- /usr/local…" 10 seconds ago Up 9 seconds 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp ES01
68104485fd44 elasticsearch:7.8.0 "/tini -- /usr/local…" 21 minutes ago Up 21 minutes 9200/tcp, 0.0.0.0:9202->9202/tcp, :::9202->9202/tcp, 9300/tcp, 0.0.0.0:9302->9302/tcp, :::9302->9302/tcp ES03
947bc3b9e608 mysql:8.0 "docker-entrypoint.s…" 5 days ago Up 5 days 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql
验证
在浏览器查看是否构建成功:
好的,失败了,错误原因:
{
"error" : {
"root_cause" : [
{
"type" : "master_not_discovered_exception",
"reason" : null
}
],
"type" : "master_not_discovered_exception",
"reason" : null
},
"status" : 503
}
解决方法: 在每个.yml配置文件中设置默认主节点
cluster.initial_master_nodes: ["es-node1"]
重启三个容器:
[root@ykp config]# docker restart ES01 ES02 ES03
ES01
ES02
ES03
再次在浏览器中查看节点:
报错
1. 报错内容如下:
"Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes",
解决方法:在node路径下修改权限
[root@ykp node3]# chmod 777 data/