Docker 安装部署中间件 ElasticSearch 和 Kibana

环境说明:

Centos 8.1 

Docker 版本 : 19.03.8

ElasticSearch: 6.4.0

Kibana: 6.4.0

主机IP:172.16.244.140

 

一、镜像下载.

docker pull elasticsearch:6.4.0    #下载 6.4.0版本镜像

docker pull kibana:6.4.0           #下载 kibana 6.4.0版本镜像

运行镜像创库容器:

二、构建elasticsearch容器,并验证是否成功

在构建前选设置: sysctl -w vm.max_map_count=262144 虚拟内存 。否则有可能启动失败。

mkdir -p /elk/es/data /elk/es/plugins 
创建后分别授抒权限
chmod 777 /elk/es/data/
#创建相应目录用于容器外挂
es/data : 存放es的数据文件目录
es/plugins : 存放es的插件安装目录,比如ik分词器

docker run:

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch -e "discovery.type=single-node" -e "cluster.name=elasticsearch" -v /elk/es/plugins:/usr/share/elasticsearch/plugins -v /elk/es/data:/usr/share/elasticsearch/data  -d elasticsearch:6.4.0


--name ${容器名} #指定容器名
-e | --env ${环境变量} #用来设置环境变量和指定值
     single-node 表示创建单节点服务。
     集群名为 elasticsearch
-v  进行目录挂载到缩主机。

通过curl http://localhost:9200 访问或浏览器输入http://ip:9200;  我的ip:172.16.244.140 宿主机IP。

查看容器(elasticsearch)IP地址,此ip地址不是固定的,随着每次容器启动动态分配的。

#查看容器IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' elasticsearch

同样也可以使用容器IP地址进行访问:(不能在浏览器中访问,只能在宿主机中)

注:如果浏览器不能访问,查下防火墙。

firewall-cmd --zone=public --add-port=9200/tcp --permanent

firewall-cmd --reload

 

三、安装kibana

docker run --name kibana -p 5601:5601 --link elasticsearch:es -e "elasticsearch.host=http://es:9200" -d kibana:6.4.0

--link 容器名:别名 #通过link 可以让kibana容器通过es这个别名连接到elasticsearch这个容器上,从而实现通讯访问。

在浏览中输入http://ip:5601 进行访问。 正常情况下是可以正常访问并连接上es,但我这就偏偏不尽人意。好事多磨。

出现边接失败的情况。我们来看下日志;

docker logs -f kibana

连接不上elasticsearch

进入到容器中排查原因:

docker exec -it kibana bash

ping es ;可以看到ping成功,但并不能代表可以访问。使用curl http://es:9200看下情况。

可以看到产生No route to host 不能路由到主机。

怀疑hosts没有进行域名映射?经查看 /etc/下的hosts已经有映射了。那使用ip试试?

使用ip也不行。

后经多方找资料问题在docker0 这个桥接网卡上。

在宿主机非容器中,按顺序执行下面命令。(但似乎这段对docker-compose不启作用,单独启服务可以,compose就不行)

 
nmcli connection modify docker0 connection.zone trusted
systemctl stop NetworkManager.service
firewall-cmd --permanent --zone=trusted --change-interface=docker0
systemctl start NetworkManager.service
nmcli connection modify docker0 connection.zone trusted
systemctl restart docker.service

执行上面命令前:

执行命令后:经对比少了ipv6的部份。应该不是ipv6的问题吧?

经过上面的命令后:终于可以看到了。

查访问,好像是说centos8 上面的确是有这个问题发生,需要禁用防火墙: systemctl stop firewalld.service  且重启docker服务

systemctl restart docker

https://stackoverflow.com/questions/59867733/kibana-couldnt-estabilish-connection-to-elasticsearch-inside-docker-compose

 

 

三、安装IK分词器(非必选,后面装也行,这个是插件)

下载对应版本的ik分词器,

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip

下载好之后 考到 /elk/es/plugins 下,建一个ik文件夹。

进行解压缩即可。

OK装好之后,重启elasticsearch容器。

然后使用postman验证下分词器是否OK。

 

附:如果使用docker-compose 来启动的。仍出现No route to Host 。则尝试关防火墙。

systemctl stop firewalld.service    #停止防火墙
systemctl restart docker                #重起docker 

docker-compose -f  xxxx.yml up -d   #重新运行容器

又或者

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.17.0.0/16 accept' && firewall-cmd --reload

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边缘998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值