本篇文章给大家谈谈dockerzookeeper,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、docker多服务依赖问题解决
- 2、Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager
- 3、Docker(单机Kafka安装)
- 4、docker 配置 kafka+zookeeper,golang接入示例
- 5、docker 搭建zookeeper Notification timeout
docker多服务依赖问题解决
官方文档
普通的部署方式(直接在服务器安装各个应用:tomcat、mysql、nginx、zookeeper等)
docker 容器部署方式(将各个应用部署到单独的容器中)
注:tomcat启动时,当所有应用启动春盯槐完成后扒友才会将开启HTTP端口
在docker-compose.yaml各个服务的command中的配置如下:
在解决服务依赖问题上使用dockerize:
在docker-compose.yaml各个服务的command中的配置如下:
-wait 参数可以添加多个,代表依赖多个服则租务
-timeout 后面跟持续等待的秒数,默认是10秒
最后一个命令是各依赖服务准备好之后要执行的命令,也就是当前应用启动的命令
支持的协议有:file, tcp, tcp4, tcp6, http, https and unix
Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager
这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,友中最好是能有多台机器。
默认的,容器内配置文件在,/conf/zoo.cfg,数据和日志目录默认在/data 和 /datalog,需要的话可以将上述目录映射到宿主机的可靠文件目录下。
使用docker命令可快速在同一台机器搭建多个kafka,只需要改变brokerId和端口
中间两个参数的 192.168.0.102 改为 宿主机器 的IP地址,如果不这么设置,可能会导致在别的机器上访问不到 kafka。
或者可以通过 kafka-manager 创建
在kafka容器中的 opt/kafka_2.12-1.1.0/ 目录下输入
显示每个分区的Leader机器为broker0,在broker0和1上具有备份,Isr代表存活的备份机器中存活的。
当停掉纤备kafka1后,
再查看topic状态,输出结果:
kafka-manager 有图形化UI,可以方便的监控集群状态,调整队列配置
容器启动以后访问主机的9000端口,0.0.0:9000
首次进入需要添加一个集群标识,如下图所示
配置好以后,通过Zookeeper该管理节点可以读取到整毁告毁个Kafka集群的信息,并且我们可以通过JMX直接看到集群的健康状态
也可以看到主题的读写速度,偏移量等信息,如下图所示:
Brokers ,Partitions,Replicas 都能看到
以及 group:
原文地址: mac 使用 docker搭建 kafka集群 + Zookeeper + kafka-manager
[img]Docker(单机Kafka安装)
KAFKA_ADVERTISED_HOST_NAME参数需要设置为宿主机地址(或服务器外网地址)
KAFKA_ZOOKEEPER_CONNECT参数设置zookeeper容器内部地镇尺启困冲址和端口,查看指令为docker inspect kafka_zk_net
1. 启动consumer发现: Error while fetching metadata with correlation id
修复步骤:
vi /opt/kafka/kafka/config/server.properties
添加:
kafka listeners和advertised配置
发现:Docker:bash: vi: command not found
停止kafka容器和重启
ps:如果你修改容器文件导致无法启动容器可以参考:
Docker容器无法启动,里面的配置文件如何修改
非内网连接,必须构建时指定御如端口和网址...测试了一下,修改是没用的,应该zookeeper已经存了元数据了..
docker 配置 kafka+zookeeper,golang接入示例
配置zookeeper 使用kafka/bin/下自带的zk
运行 报错 卒。配置低了
docker-compose.yml
报错
换云搬瓦工的机器试一下滑颂粗
但是docker ps -a 发现只有zookeeper启动了,kafka失败, 检查日志 发现kafka运行需要java环境,而且对内存有要求,搬瓦工的vps不足够
因此修改docker-compose.yml 加入以下
stop 再启动
完美
测试
进入容器
查看已信镇经建好的topic (docker-compose.yml)
发送樱碧消息
接收消息
接下来是golang接入kafka了
运行
docker 搭建zookeeper Notification timeout
按照 docker搭建zookeeper集群 中步骤,安装完docker,配置好三台容器后,启动zookeeper环境。发现两台正常,一台报Notification timeout的日志。
而异常的原因是cannot assign requested address。渗拦配该问题要么ip、port不通要么就是开启监听的server地址和发送消丛指息的地址不对。
查看源码位置,发现在QuorumCnxManager.java文件中抛的异常
找到异常,去上下看看是否有迹可循
然后,去日志看下绑定的ip、port是什么。发现Slave1的日志里打印出了信息
2018-06-15 01:28:53,612 [myid:3] - INFO [Slave2/172.17.0.4:3890:QuorumCnxManager$Listener@534] - My election bind port: Slave2/172.17.0.4:3890
我的zoo.cfg server配置如下
server.1=Master:2888:3888
server.2=Slave1:2889:3889
server.3=Slave2:2890:3890
参考“艾伦蓝”的博客介绍了
server.A=B:C:D: 其中 A 是一个数字,表示这个是第几号服务器; B 是这个服务器的 ip 地址;C 表示的是这个服衡尘务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
也就是说我本地绑定的端口是server.3的端口。(看日志感觉应该起的server.2的3889才对!)
剩下的工作就是看看zookeeper配置文件如何加载,为什么解析的不正确!
回到刚才的源码,获取addr的地方:
addr = self.quorumPeers.get(self.getId()).electionAddr;
查看QuorumPeerConfig.java发现quorumPeers存的是server1,2,3的信息。那id是哪来的?
public long getId() {
return myid;
}
myid又是从哪里来的?
这个myid是解析myid的文件来的。
莫非是这个myid还要和server.#的值必须匹配起来?
server.2的myid必须是2。
查看Slave1和Slave2的myid文件,果然Slave1 写的3,Slave2写的2。
以上!得出结论修改Slave1和Slave2的myid文件为2,3。
问题解决!!
关于dockerzookeeper和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。