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 这个桥接网卡上。
在宿主机非容器中,按顺序执行下面命令。
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分词器,
下载好之后 考到 /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.****.net/fengsh998/article/details/107323099
上一篇: MySQL闭包表
推荐阅读
-
ElasticSearch 学习01——安装Elasticsearch、Kibana和X-Pack
-
Linux 部署 Elasticsearch和Kibana
-
Centos7安装Elasticsearch和Kibana
-
docker 部署 Elasticsearch kibana及ik分词器详解
-
Windows 10 安装ElasticSearch(2)- MSI安装ElasticSearch和安装Kibana
-
使用Docker安装Elasticsearch Kibana
-
安装Elasticsearch和Kibana
-
centos使用diocker安装elasticsearch和kibana
-
使用docker安装elasticsearch及elasticsearch-head和kibana
-
ubuntu安装elasticsearch和kibana