先给出正确的配置文件,然后来描述过程中遇到的问题及解决方式
基本情况:在M1中搭建3个节点的es集群及es可视化软件kinana
docker-compose.yml 文件:
version: '3.6'
services:
es_1:
# 镜像名称
image: elasticsearch:8.0.1
# 容器名称
container_name: es_1
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# 文件映射到主机
volumes:
- /Users/chenjuan/develope/my/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 赋予权限
privileged: true
#端口映射
ports:
- 9200:9199
- 9300:9300
# 指定网段
networks:
defalut:
ipv4_address: 173.199.8.2 #设置ip地址
es_2:
# 镜像名称
image: elasticsearch:8.0.1
# 容器名称
container_name: es_2
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# 文件映射到主机
volumes:
- /Users/chenjuan/develope/my/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 赋予权限
privileged: true
#端口映射
ports:
- 9201:9199
- 9301:9300
# 指定网段
networks:
defalut:
ipv4_address: 173.199.8.3 #设置ip地址
es_3:
# 镜像名称
image: elasticsearch:8.0.1
# 容器名称
container_name: es_3
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# 文件映射到主机
volumes:
- /Users/chenjuan/develope/my/es/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 赋予权限
privileged: true
#端口映射
ports:
- 9202:9199
- 9302:9300
# 指定网段
networks:
defalut:
ipv4_address: 173.199.8.4 #设置ip地址
kibana:
# 镜像名称
image: kibana:8.0.1
# 容器名称
container_name: kibana
ports:
- 5601:5601
volumes:
- /Users/chenjuan/develope/my/es/config/kibana.yml:/usr/share/kibana/config/kibana.yml
depends_on:
- elasticsearch-cluster
networks:
defalut:
ipv4_address: 173.199.8.5 #设置ip地址
networks:
defalut:
driver: bridge
ipam:
config:
- subnet: "173.199.8.0/24"
同级目录下建config文件夹,并创建下面4个文件
es1.yml, es2.yml, es3.yml, kibana.yml
es1.yml 内容如下:
cluster.name: elasticsearch-cluster
node.name: es-node1
network.host: 0.0.0.0
network.publish_host: 173.199.8.2
http.port: 9199
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: es-node1
discovery.seed_hosts: ["173.199.8.2:9300", "173.199.8.3:9300", "173.199.8.4:9300"]
transport.profiles.default.port: 9300
xpack.security.enabled: false
es2.yml 内容如下:
cluster.name: elasticsearch-cluster
node.name: es-node2
network.host: 0.0.0.0
network.publish_host: 173.199.8.3
http.port: 9199
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: es-node1
discovery.seed_hosts: ["173.199.8.2:9300", "173.199.8.3:9300", "173.199.8.4:9300"]
transport.profiles.default.port: 9300
xpack.security.enabled: false
es3.yml 内容如下:
cluster.name: elasticsearch-cluster
node.name: es-node3
network.host: 0.0.0.0
network.publish_host: 173.199.8.4
http.port: 9199
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: es-node1
discovery.seed_hosts: ["173.199.8.2:9300", "173.199.8.3:9300", "173.199.8.4:9300"]
transport.profiles.default.port: 9300
xpack.security.enabled: false
kibana.yml 内容如下:
elasticsearch.hosts: ["http://es_1:9199","http://es_2:9199","http://es_3:9199"]
server.host: 0.0.0.0
server.port: 5601
然后在docker-compose 文件所在的目录下执行 docker-compose up -d
最后一步:docker的desktop 来重启kibana(原因后面说明)
所遇到的问题:
1.localhost:5601 打不开,具体表现为 (52) Empty reply from server , 用docker-compose up 查看启动过程,发现并无异常(进入kibana 容器中看,也能连上es)。解决方法:在kibana的配置文件中加入这个:server.host: 0.0.0.0
2.localhost:5601 打不开,具体表现为 Kibana server is not ready yet. 用docker-compose up 查看启动过程,发现kibana 在es集群启动前尝试连接,但是连接不成功,控制台报错:[ERROR][elasticsearch-service] Unable to retrieve version information from Elasticsearch nodes. connect ECONNREFUSED 173.199.8.3:9199 在这里之后,es 集群还在启动,而启动成功之后,kibana 并不尝试重新连接(进入kibana 容器中看,也能连上es),所以猜测是要把kibana 配置成在es集群之后启动,在docker-compose.yml文件中设置depends_on为集群后,再重新尝试启动,发现还是报一样的问题,查了很多种方法还未生效,因此我借助docker的desktop 来重启kibana 发现成功了
- 其他的坑:
M1所使用的镜像跟之前的版本不同,M1的最好去找docker-hub上的官方稳定版本
es镜像的版本和kibana的版本要保持一致
网上搜索的docker-compose文件内容可能跟自己的环境不一致,需要自己看着改动一点
启动的过程中多看看具体启动过程,可以看到相关报错,不能一开始就 up -d ,遇到问题先 up 看看中间发生了什么好对症下药
好了,我要去学 kibana 相关使用了。
网友评论