先給出正確的配置文件,然后來描述過程中遇到的問題及解決方式
基本情況:在M1中搭建3個節(jié)點的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"
# 文件映射到主機(jī)
volumes:
- /Users/chenjuan/develope/my/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 賦予權(quán)限
privileged: true
#端口映射
ports:
- 9200:9199
- 9300:9300
# 指定網(wǎng)段
networks:
defalut:
ipv4_address: 173.199.8.2 #設(shè)置ip地址
es_2:
# 鏡像名稱
image: elasticsearch:8.0.1
# 容器名稱
container_name: es_2
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# 文件映射到主機(jī)
volumes:
- /Users/chenjuan/develope/my/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 賦予權(quán)限
privileged: true
#端口映射
ports:
- 9201:9199
- 9301:9300
# 指定網(wǎng)段
networks:
defalut:
ipv4_address: 173.199.8.3 #設(shè)置ip地址
es_3:
# 鏡像名稱
image: elasticsearch:8.0.1
# 容器名稱
container_name: es_3
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# 文件映射到主機(jī)
volumes:
- /Users/chenjuan/develope/my/es/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 賦予權(quán)限
privileged: true
#端口映射
ports:
- 9202:9199
- 9302:9300
# 指定網(wǎng)段
networks:
defalut:
ipv4_address: 173.199.8.4 #設(shè)置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 #設(shè)置ip地址
networks:
defalut:
driver: bridge
ipam:
config:
- subnet: "173.199.8.0/24"
同級目錄下建config文件夾,并創(chuàng)建下面4個文件
es1.yml, es2.yml, es3.yml, kibana.yml
es1.yml 內(nèi)容如下:
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 內(nèi)容如下:
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 內(nèi)容如下:
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 內(nèi)容如下:
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 文件所在的目錄下執(zhí)行 docker-compose up -d
最后一步:docker的desktop 來重啟kibana(原因后面說明)
所遇到的問題:
1.localhost:5601 打不開,具體表現(xiàn)為 (52) Empty reply from server , 用docker-compose up 查看啟動過程,發(fā)現(xiàn)并無異常(進(jìn)入kibana 容器中看,也能連上es)。解決方法:在kibana的配置文件中加入這個:server.host: 0.0.0.0
2.localhost:5601 打不開,具體表現(xiàn)為 Kibana server is not ready yet. 用docker-compose up 查看啟動過程,發(fā)現(xiàn)kibana 在es集群啟動前嘗試連接,但是連接不成功,控制臺報錯:[ERROR][elasticsearch-service] Unable to retrieve version information from Elasticsearch nodes. connect ECONNREFUSED 173.199.8.3:9199 在這里之后,es 集群還在啟動,而啟動成功之后,kibana 并不嘗試重新連接(進(jìn)入kibana 容器中看,也能連上es),所以猜測是要把kibana 配置成在es集群之后啟動,在docker-compose.yml文件中設(shè)置depends_on為集群后,再重新嘗試啟動,發(fā)現(xiàn)還是報一樣的問題,查了很多種方法還未生效,因此我借助docker的desktop 來重啟kibana 發(fā)現(xiàn)成功了
- 其他的坑:
M1所使用的鏡像跟之前的版本不同,M1的最好去找docker-hub上的官方穩(wěn)定版本
es鏡像的版本和kibana的版本要保持一致
網(wǎng)上搜索的docker-compose文件內(nèi)容可能跟自己的環(huán)境不一致,需要自己看著改動一點
啟動的過程中多看看具體啟動過程,可以看到相關(guān)報錯,不能一開始就 up -d ,遇到問題先 up 看看中間發(fā)生了什么好對癥下藥
好了,我要去學(xué) kibana 相關(guān)使用了。