cerebro+kibana+2节点elasticsearch搭建

简述

这里我们使用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

cerebro+kibana+2节点elasticsearch搭建

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

cerebro+kibana+2节点elasticsearch搭建

查看当前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,仍在运行。


分享到:


相關文章: