dockerzookeeper的简单介绍

本篇文章给大家谈谈dockerzookeeper,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

Powered By Z-BlogPHP 1.7.2

备案号:蜀ICP备2023005218号