当前位置: 移动技术网 > IT编程>脚本编程>Python > Docker 安装部署中间件 ElasticSearch 和 Kibana

Docker 安装部署中间件 ElasticSearch 和 Kibana

2020年07月15日  | 移动技术网IT编程  | 我要评论

环境说明:

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://www.lhsxpumps.com/_ip:5601 进行访问。 正常情况下是可以正常访问并连接上es,但我这就偏偏不尽人意。好事多磨。

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

docker logs -f kibana

连接不上elasticsearch

进入到容器中排查原因:

docker exec -it kibana bash

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

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

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

使用ip也不行。

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

在宿主机非容器中,按顺序执行下面命令。

 
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的问题吧?

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

 

三、安装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

 

 

 

 

本文地址:https://blog.csdn.net/fengsh998/article/details/107323099

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网