计算机系统应用教程网站

网站首页 > 技术文章 正文

cerebro+kibana+2节点elasticsearch搭建

btikc 2024-10-19 03:08:44 技术文章 5 ℃ 0 评论

简述

这里我们使用docker-compose快速搭建:cerebro+kibana+2节点elasticsearch

并在最后附上我搭建过程中遇到的问题。可供参考。

docker-compose.yaml 配置文件

cerebro+kibana+2节点elasticsearch

[root@localhost bin]# touch docker-compose.yaml
[root@localhost bin]# vi docker-compose.yaml 
version: '2.2'
services:
 cerebro:
 image: lmenezes/cerebro:0.8.3
 container_name: cerebro
 ports:
 - "9000:9000"
 command:
 - -Dhosts.0.host=http://es7_01:9200
 networks:
 - es7net
 kibana:
 image: docker.io/kibana:7.1.0
 container_name: kibana7
 environment:
 - I18N_LOCALE=zh-CN
 - XPACK_GRAPH_ENABLED=true
 - TIMELION_ENABLED=true
 - XPACK_MONITORING_COLLECTION_ENABLED="true"
 ports:
 - "5601:5601"
 networks:
 - es7net
 elasticsearch:
 image: docker.io/elasticsearch:7.3.2
 container_name: es7_01
 environment:
 - cluster.name=geektime
 - node.name=es7_01
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
 - discovery.seed_hosts=es7_01,es7_02
 - cluster.initial_master_nodes=es7_01,es7_02
 ulimits:
 memlock:
 soft: -1
 hard: -1
 volumes:
 - es7data1:/usr/share/elasticsearch/data
 ports:
 - 9200:9200
 networks:
 - es7net
 elasticsearch2:
 image: docker.io/elasticsearch:7.3.2
 container_name: es7_02
 environment:
 - cluster.name=geektime
 - node.name=es7_02
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
 - discovery.seed_hosts=es7_01,es7_02
 - cluster.initial_master_nodes=es7_01,es7_02
 ulimits:
 memlock:
 soft: -1
 hard: -1
 volumes:
 - es7data2:/usr/share/elasticsearch/data
 networks:
 - es7net
volumes:
 es7data1:
 driver: local
 es7data2:
 driver: local
networks:
 es7net:
 driver: bridge
[root@localhost bin]# 

启动容器

[root@localhost bin]# ll
-rw-r--r--. 1 root root 1600 9月 24 17:18 docker-compose.yaml
[root@localhost bin]# docker-compose up > log.txt
Starting es7_01 ... done
Starting cerebro ... done
Starting kibana7 ... done
Starting es7_02 ... done

如果启动成功,会显示以上内容,并把启动日志保存到当前目录的log.txt中。(注意:这里不要使用ctrl+c退出窗口,否则容器都会stop,新开一个命令行窗口)

另一个命令行窗口查看运行状态:

[root@localhost bin]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ea1ee424001 docker.io/elasticsearch:7.3.2 "/usr/local/bin/do..." 22 minutes ago Up 12 minutes 9200/tcp, 9300/tcp es7_02
3704143fe6cd docker.io/kibana:7.1.0 "/usr/local/bin/ki..." 22 minutes ago Up 12 minutes 0.0.0.0:5601->5601/tcp kibana7
5ce37aebf865 lmenezes/cerebro:0.8.3 "/opt/cerebro/bin/..." 22 minutes ago Up 12 minutes 0.0.0.0:9000->9000/tcp cerebro
5f046e5a2a52 docker.io/elasticsearch:7.3.2 "/usr/local/bin/do..." 22 minutes ago Up 12 minutes 0.0.0.0:9200->9200/tcp, 9300/tcp es7_01 ##容器名称

检查es运行状态:

[root@localhost bin]# curl http://localhost:9200
{
 "name" : "es7_01",
 "cluster_name" : "geektime",
 "cluster_uuid" : "vjTBSm4NT3yZoshs2OFbBA",
 "version" : {
 "number" : "7.3.2",
 "build_flavor" : "default",
 "build_type" : "docker",
 "build_hash" : "1c1faf1",
 "build_date" : "2019-09-06T14:40:30.409026Z",
 "build_snapshot" : false,
 "lucene_version" : "8.1.0",
 "minimum_wire_compatibility_version" : "6.8.0",
 "minimum_index_compatibility_version" : "6.0.0-beta1"
 },
 "tagline" : "You Know, for Search"
}

es7_01容器中运行Elasticsearch端口为9200。由于我们在docker-compose.yaml中,把es7_01容器中的9200端口映射到本机的9200端口上。

所以上面我们使用curl http://localhost:9200可以访问到Elasticsearch服务。

使用cerebro访问Elasticsearch

cerebro是Elasticsearch的可视化客户端,使用docker ps 我们能看到cerebro端口为:9000

[root@localhost bin]# docker ps | grep cerebro
5ce37aebf865 lmenezes/cerebro:0.8.3 "/opt/cerebro/bin/..." 30 minutes ago Up 20 minutes 0.0.0.0:9000->9000/tcp cerebro

访问http://localhost:9000

点击进来之后,我看到的是:

查看当前docker服务器ip和容器中对外暴露端口 的工具

说明:这个对于搭建Elasticsearch不是必须的。

我的使用场景是:由于我是window电脑,我在vm ware虚拟机中安装了centos mini系统,并在此centos系统中安装了docker。

由于centos是最简版的——没有图形界面,没有浏览器。所以我使用以下工具——dockerhostip.sh,来快速查看centos虚拟机的当前ip和docker端口号。

以便我能快速复制出来虚拟机的ip和docker容器的端口,快速在window浏览器上访问。

[root@localhost bin]# touch dockerhostip.sh
[root@localhost bin]# vi dockerhostip.sh
echo '============================================='
echo '当前centos虚拟机ip:'
hostname -I | awk -F ' ' '{print $1}'
echo ''
count=`docker ps -q | wc -l`
if [ $count -gt '0' ];then
 docker ps --format='{{.Names}} {{.Ports}}' | sed -s "s/0.0.0.0/`hostname -I | awk -F ' ' '{print $1}'`/g" 
else
 echo 'No container is running....'
fi
echo '============================================='
[root@localhost bin]# chmod +x dockerhostip.sh
## 运行dockerhostip.sh查看输出:
[root@localhost bin]# dockerhostip.sh
=============================================
当前ip:
192.168.xxx.xxx ##这里是备注:这里使用xxx.xxx来脱敏ip了。
es7_02 9200/tcp, 9300/tcp
kibana7 192.168.xxx.xxx:5601->5601/tcp
cerebro 192.168.xxx.xxx:9000->9000/tcp
es7_01 192.168.xxx.xxx:9200->9200/tcp, 9300/tcp
=============================================

这里我直接在window浏览器中输入http://192.168.xxx.xxx:9000就能直接访问cerebro了。

报错及解决

一、docker-compose up -d 启动时报错:

exec: "docker-proxy": executable file not found in $PATH

解决:https://www.cnblogs.com/cxbhakim/p/9149596.html

解决之后,再次使用docker-compose up -d 报错:

failed: port is already allocated

原因:docker-proxy报错时,此时端口号已经分配了,所以这里要重新启动一下docker服务器。重启后,ok

二、[36mes7_01 |[0m [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

启动一会之后,查看docker ps 发现es的容器都停止了。

查看日志发现报错信息:

[36mes7_01 |[0m [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改:修改方案参考

查看当前vm.max_map_count 配置:

grep vm.max_map_count /etc/sysctl.conf

修改配置:

sysctl -w vm.max_map_count=262144

重新启动容器:

docker-compose up 

一段时间后,查看es,仍在运行。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表