4.3.1 安装多节点ZooKeeper集群
目前来说Kafka可以说是强依赖ZooKeeper的,因此生产环境中一个高可用、高可靠的ZooKeeper集群也必不可少的。ZooKeeper集群通常被称为一个ensemble。只要这个ensemble中的大多数节点存活,那么ZooKeeper集群就能正常提供服务。显然,既然是大多数,那么最好使用奇数个服务器,即2n+1个服务器,这样整个ZooKeeper集群最多可以容忍n台服务器宕机而保证依然提供服务。如果使用偶数个服务器则通常会浪费一台服务器的资源。
基于上面的规则,一个生产环境中最少的ZooKeeper集群节点数量是3。在实际使用场景中,5台服务器构成的ZooKeeper集群也是十分常见的,再多数量的集群则不常见。
典型的多节点环境配置文件zoo.cfg:
tickTime=2000 dataDir=/usr/zookeeper/data_dir clientPort=2181 initLimit=5 syncLimit=2 server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888 |
关键参数的含义:
- tickTime: ZooKeeper最小的时间单位,用于丈量心跳时间和超时时间等。通常设置成默认值2秒即可。
- dataDir:ZooKeeper会在内存中保存系统快照,并定期写入该路径指定的文件夹中。生产环境中需要注意该文件夹的磁盘占用情况。
- clientPort:ZooKeeper监听客户端连接的端口,一般设置成默认值2181即可。
- initLimit:指定follower节点初始时连接leader节点的最大tick次数。假设是5,表示follower必须在5*tickTime时间内(默认值10秒)连接上leader,否则将被视为超时。
- syncLimit:设定follower节点与leader节点进行同步的最大时间。与initLimit类似,它也是以tickTime为单位进行指定的。
- server.X=host:port:port:配置文件中的最后三行都是这种形式的。这里的X必须是一个全局唯一的数字,且需要与myid文件中的数字相对应。一般设置X为1-255之间的整数。这行的后面还配置了两个端口,通常是2888和2888。第一个端口用于使follower节点连接leader节点,而第二个端口则用于leader选举。
每个ZooKeeper服务器都有一个唯一的ID。这个ID主要用在两个地方:一个是刚刚我们配置的zoo.cfg文件,另一个则是myid文件。myid文件位于zoo.cfg中dataDir配置的目录下,其内容也很简单,仅是一个数字,即ID。
下面就以一台机器为例展示如何安装3个节点的ZooKeeper集群,多台机器上安装的方法类似。
首先,在zookeeper的conf目录下创建3个配置文件zoo1.cfg、zoo2.cfg和zoo3.cfg,注意,如果是在多台服务器上安装ZooKeeper集群,可以选取相同的配置文件名字。
zoo1.cfg:
tickTime=2000 dataDir=/mnt/disk/huxitest/data_logs/zookeeper1 clientPort=2181 initLimit=5 syncLimit=2 server.1=zk1:2888:3888 server.2=zk2:2889:3889 server.3=zk3:2890:3890 |
zoo2.cfg:
tickTime=2000 dataDir=/mnt/disk/huxitest/data_logs/zookeeper2 clientPort=2182 initLimit=5 syncLimit=2 server.1=zk1:2888:3888 server.2=zk2:2889:3889 server.3=zk3:2890:3890 |
zoo3.cfg:
tickTime=2000 dataDir=/mnt/disk/huxitest/data_logs/zookeeper3 clientPort=2183 initLimit=5 syncLimit=2 server.1=zk1:2888:3888 server.2=zk2:2889:3889 server.3=zk3:2890:3890 |
上面的配置中分别选取了2181、2182和2183这3个端口。如果是多机器安装方案,指定相同的端口号也可以,只要确保没有端口冲突就行,这也包括配置文件中的所有其他端口。
下一步是创建myid文件,myid文件必须位于配置文件的dataDir中,即/mnt/disk/huxitest/data_logs/zookeeper1,2,3下,具体命令如下:
echo "1" > /mnt/disk/huxitest/data_logs/zookeeper1/myid echo "2" > /mnt/disk/huxitest/data_logs/zookeeper2/myid echo "3" > /mnt/disk/huxitest/data_logs/zookeeper3/myid |
下一步就是启动3个控制台终端分别在ZooKeeper的安装目录下执行以下命令启动ZooKeeper服务器:
java -cp zookeeper-3.4.10.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.16.jar:conf org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo1.cfg java -cp zookeeper-3.4.10.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.16.jar:conf org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo2.cfg java -cp zookeeper-3.4.10.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.16.jar:conf org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo3.cfg |
如果是多节点安装方案,既可以使用上面的命令启动ZooKeeper,也可以直接运行zkServer脚本启动ZooKeeper,比如:
bin/zkServer.sh(bat) start conf/zoo.cfg |
当所有的ZooKeeper服务器启动成功后,我们还需要检查一下整个集群的状态,分别执行以下命令:
bin/zkServer.sh status conf/zoo1.cfg bin/zkServer.sh status conf/zoo2.cfg bin/zkServer.sh status conf/zoo3.cfg |
4.3.2 安装多节点的Kafka
下面使用一台机器来模拟一个3节点Kafka集群的搭建,多台机器搭建的方式类似。
创建多份配置,配置文件1:
broker.id=0 delete.topic.enable=true listeners=PLAINTEXT://kafka1:9092 log.dirs=/mnt/disk/huxitest/data_logs/kafka1 zookeeper.connect=zk1:8001,zk2:8002,zk3:8003 unclean.leader.election.enable=false zookeeper.connection.timeout.ms=6000 |
配置文件2:
broker.id=1 delete.topic.enable=true listeners=PLAINTEXT://kafka2:9092 log.dirs=/mnt/disk/huxitest/data_logs/kafka2 zookeeper.connect=zk1:8001,zk2:8002,zk3:8003 unclean.leader.election.enable=false zookeeper.connection.timeout.ms=6000 |
配置文件3:
broker.id=2 delete.topic.enable=true listeners=PLAINTEXT://kafka3:9092 log.dirs=/mnt/disk/huxitest/data_logs/kafka3 zookeeper.connect=zk1:8001,zk2:8002,zk3:8003 unclean.leader.election.enable=false zookeeper.connection.timeout.ms=6000 |
在上面3个配置文件中我们需要每台Kafka服务器指定不同的broker ID。该ID在整个集群中必须是唯一的。而配置listeners时最好使用节点的FQDN(Fully Qualified Domain Name)即全称域名,尽量不要使用IP地址。zookeeper.connect必须同时指定所有的ZooKeeper节点。
创建Kafka配置文件后,只需要执行下列命令启动Kafka broker服务器:
bin/kafka-server-start.sh -daemon config/server1.properties bin/kafka-server-start.sh -daemon config/server2.properties bin/kafka-server-start.sh -daemon config/server3.properties |
可以通过查看位于Kafka logs目录下的server.log或jps命令来确认Kafka broker是否已经启动成功。
相关推荐
单节点的一个kafka容器环境,包括zookeeper、kafka、kafka eagle
centos 7.4安装kafka 一、 关闭防火墙 二、 禁止selinux 三、 更新系统 四、 安装JDK 五、 配置Java环境变量 六、 安装kafka 七、 安装zookeeper 八、 配置kafka 九、 测试kafka 十、 把zookeeper配置成服务 十一、...
kafka集群类型: single broker(单节点单boker集群,亦即kafka只启一个broker消息中间件服务,producer、consumer、broker均通过zookeeper集群交换消息,具体可参考:http://exp-blog.com/2018/08/03/pid-2187/
这个Docker Compose 文件定义了一个包含Zookeeper和三个Kafka节点的服务集群。通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的...
既然是集群,那必然就要有多个Kafka节点机 器,因为只有单台机器构成的Kafka伪集群只能用于日常测试之用,根本无法满足实际的线上生产需求。而 真正的线上环境需要仔细地考量各种因素,结合自身的业务需求而制定。...
kafka_2.9.2-0.8.2.1.tgz 安装 liunx环境 ... 2) 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录删除zookeeper "/brokers/topics/"目录下相关topic节点
主要给大家介绍了关于kafka与storm集群环境安装步骤的相关资料,两者并不是一定联系的,写在一起主要是因为两个都是有zookeeper管理的,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来...
"Java实现Kafka数据生产者"这个功能可以让你使用Java编程语言创建一个能够连接到指定的Kafka集群(通过bootstrap servers)并向其中发送数据的应用程序。...可伸缩性:Kafka集群可以水平扩展,通过添加更多的节点来增
以下是单节点部署 1)解压 解压到指定文件夹 tar -zxvf kafka_2.11-0.9.0.0.tgz -C ~/programming/ 2)配置环境变量 编辑~/.bash_profile 文件 vi ~/.bash_profile 在文件中添加 export KAFKA_HOME=/Users/...
Vagrant 可以帮助准备 Couchbase 和 Kafka 节点。 安装先决条件: 、 和 。 yum install https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.2_x86_64.rpm yum install ansible vagrant plugin install ...
安装节点工头$ npm install -g foreman 运行$ npm install 卡夫卡 如果您使用的是 Mac,请按照的说明设置 docker 环境。 安装 启动测试环境 fig up 启动一个 kafka shell ./start-kafka-shell.sh <Docker> ...
之前介绍过Kafka集群环境的搭建,但是细心的朋友们都发现,Kafka与ZooKeeper一样,都需要在每台节点上执行对应的开启/关闭脚本,十分的不方便。现在我们学习只用到了3台节点,如果以后到了企业,节点多了我们肯定就...
准备服务器环境:在你的服务器上安装并配置合适的 web 服务器(比如 Nginx 或 Apache)、数据库(比如 MySQL 或 PostgreSQL)以及 PHP 或其他必要的后端语言环境。 安装和配置选定的电子商务平台 添加商品和设置商城...
zookeeper配置 cd zk/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改: dataDir=/usr/local/zk/data 新增: server.0=sparkproject1:2888:3888 server.1=sparkproject2:2888:3888 server.2=sparkproject3:2888:...
Docker容器,用于通过环境中的配置设置在Ubuntu容器(java7)中运行kafka (0.8.1.1)。 环境 这些环境变量的名称经过精心选择,以与Kubernetes(主要是GKE)为定义的服务提供的内容兼容。 KAFKA_SERVER_ID :必需...
大数据综合实验环境搭建(3个集群、Zookeeper、Hive、HBase)
安装 pip install -r requirements.txt npm install 哦,去设置并让它在localhost:9092上运行。 跑步 在您的环境中设置RDS_URL ,或添加到本地.env文件并使用foreman运行。 首先,运行 Mysql 复制侦听器: ...
Kafka / ZK REST API将提供可用于生产环境的端点,以执行一些针对Kafka和Zookeeper的管理/度量任务。 提供以下功能: 集群/节点/控制器信息描述 经纪人名单 代理配置获取/更新,动态配置获取/更新/删除 日志目录...
简单kafka节点 在Node.js中使用Kafka的简单界面 用法 npm安装simple-kafka-node 讯息格式 { "type" :"anEventType", "data" :"A data object" } 配置 环境变量 MESSAGING_HOST: kafka host, default "locahost:...
1、支持Kafka集群节点查看 2、支持Kafka Topic列表查看 注:支持在无互联网环境下使用(已对所需的静态资源本地化引用处理)