`
拓子轩
  • 浏览: 204495 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Kafka多节点环境安装

    博客分类:
  • java
阅读更多

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秒即可。
  • dataDirZooKeeper会在内存中保存系统快照,并定期写入该路径指定的文件夹中。生产环境中需要注意该文件夹的磁盘占用情况。
  • clientPortZooKeeper监听客户端连接的端口,一般设置成默认值2181即可。
  • initLimit:指定follower节点初始时连接leader节点的最大tick次数。假设是5,表示follower必须在5*tickTime时间内(默认值10秒)连接上leader,否则将被视为超时。
  • syncLimit:设定follower节点与leader节点进行同步的最大时间。与initLimit类似,它也是以tickTime为单位进行指定的。
  • server.X=host:port:port:配置文件中的最后三行都是这种形式的。这里的X必须是一个全局唯一的数字,且需要与myid文件中的数字相对应。一般设置X1-255之间的整数。这行的后面还配置了两个端口,通常是28882888。第一个端口用于使follower节点连接leader节点,而第二个端口则用于leader选举。

 

      每个ZooKeeper服务器都有一个唯一的ID。这个ID主要用在两个地方:一个是刚刚我们配置的zoo.cfg文件,另一个则是myid文件。myid文件位于zoo.cfgdataDir配置的目录下,其内容也很简单,仅是一个数字,即ID

 

下面就以一台机器为例展示如何安装3个节点的ZooKeeper集群,多台机器上安装的方法类似。

首先,在zookeeperconf目录下创建3个配置文件zoo1.cfgzoo2.cfgzoo3.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

上面的配置中分别选取了2181218221833个端口。如果是多机器安装方案,指定相同的端口号也可以,只要确保没有端口冲突就行,这也包括配置文件中的所有其他端口。

下一步是创建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时最好使用节点的FQDNFully 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.logjps命令来确认Kafka broker是否已经启动成功。

分享到:
评论

相关推荐

    linux-单节点的一个kafka容器环境包括zookeeperkafkakafkaeagle

    单节点的一个kafka容器环境,包括zookeeper、kafka、kafka eagle

    centos 7.4安装kafka

    centos 7.4安装kafka 一、 关闭防火墙 二、 禁止selinux 三、 更新系统 四、 安装JDK 五、 配置Java环境变量 六、 安装kafka 七、 安装zookeeper 八、 配置kafka 九、 测试kafka 十、 把zookeeper配置成服务 十一、...

    快速部署单机kafka集群(win环境)

    kafka集群类型: single broker(单节点单boker集群,亦即kafka只启一个broker消息中间件服务,producer、consumer、broker均通过zookeeper集群交换消息,具体可参考:http://exp-blog.com/2018/08/03/pid-2187/

    bitnami版本的zookeeper和kafka的docker-compose配置

    这个Docker Compose 文件定义了一个包含Zookeeper和三个Kafka节点的服务集群。通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的...

    06-Kafka线上集群部署方案怎么.pdf

    既然是集群,那必然就要有多个Kafka节点机 器,因为只有单台机器构成的Kafka伪集群只能用于日常测试之用,根本无法满足实际的线上生产需求。而 真正的线上环境需要仔细地考量各种因素,结合自身的业务需求而制定。...

    kafka_2.9.2-0.8.2.1.tgz

    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集群环境的安装步骤详解

    主要给大家介绍了关于kafka与storm集群环境安装步骤的相关资料,两者并不是一定联系的,写在一起主要是因为两个都是有zookeeper管理的,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来...

    Java实现Kafka数据生产者

    "Java实现Kafka数据生产者"这个功能可以让你使用Java编程语言创建一个能够连接到指定的Kafka集群(通过bootstrap servers)并向其中发送数据的应用程序。...可伸缩性:Kafka集群可以水平扩展,通过添加更多的节点来增

    Kafka安装部署 for Mac or Linux

    以下是单节点部署 1)解压 解压到指定文件夹 tar -zxvf kafka_2.11-0.9.0.0.tgz -C ~/programming/ 2)配置环境变量 编辑~/.bash_profile 文件 vi ~/.bash_profile 在文件中添加 export KAFKA_HOME=/Users/...

    kafka-couchbase-demo

    Vagrant 可以帮助准备 Couchbase 和 Kafka 节点。 安装先决条件: 、 和 。 yum install https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.2_x86_64.rpm yum install ansible vagrant plugin install ...

    nodejs-express-kafka-mongodb:使用 node.jsexpress 应用程序向 kafka 发送消息和将 kafka 消息保存到数据库的 bakground worker 进行测试

    安装节点工头$ npm install -g foreman 运行$ npm install 卡夫卡 如果您使用的是 Mac,请按照的说明设置 docker 环境。 安装 启动测试环境 fig up 启动一个 kafka shell ./start-kafka-shell.sh <Docker> ...

    超好用的Kafka集群启动,关闭脚本

    之前介绍过Kafka集群环境的搭建,但是细心的朋友们都发现,Kafka与ZooKeeper一样,都需要在每台节点上执行对应的开启/关闭脚本,十分的不方便。现在我们学习只用到了3台节点,如果以后到了企业,节点多了我们肯定就...

    在线商城单节点搭建.zip

    准备服务器环境:在你的服务器上安装并配置合适的 web 服务器(比如 Nginx 或 Apache)、数据库(比如 MySQL 或 PostgreSQL)以及 PHP 或其他必要的后端语言环境。 安装和配置选定的电子商务平台 添加商品和设置商城...

    【Hadoop部署】Hadoop环境部署5-Zookeeper、Kafka安装

    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:...

    k8s-kafka:用于Kafka-on-Kubernetes的Docker容器

    Docker容器,用于通过环境中的配置设置在Ubuntu容器(java7)中运行kafka (0.8.1.1)。 环境 这些环境变量的名称经过精心选择,以与Kubernetes(主要是GKE)为定义的服务提供的内容兼容。 KAFKA_SERVER_ID :必需...

    大数据综合实验环境搭建(3个集群、Zookeeper、Hive、HBase)

    大数据综合实验环境搭建(3个集群、Zookeeper、Hive、HBase)

    mysql-to-kafka:POC 将 Mysql 复制更改流式传输到 Kafka 队列

    安装 pip install -r requirements.txt npm install 哦,去设置并让它在localhost:9092上运行。 跑步 在您的环境中设置RDS_URL ,或添加到本地.env文件并使用foreman运行。 首先,运行 Mysql 复制侦听器: ...

    Kafka-zk-restapi:Kafka Zookeeper RESTful API执行主题消费者组管理度量(偏移\滞后\消息)收集和监控

    Kafka / ZK REST API将提供可用于生产环境的端点,以执行一些针对Kafka和Zookeeper的管理/度量任务。 提供以下功能: 集群/节点/控制器信息描述 经纪人名单 代理配置获取/更新,动态配置获取/更新/删除 日志目录...

    simple-kafka-node:在Node.js中使用Kafka的简单界面

    简单kafka节点 在Node.js中使用Kafka的简单界面 用法 npm安装simple-kafka-node 讯息格式 { "type" :"anEventType", "data" :"A data object" } 配置 环境变量 MESSAGING_HOST: kafka host, default "locahost:...

    KafkaOffsetMonitor-0.2.1

    1、支持Kafka集群节点查看 2、支持Kafka Topic列表查看 注:支持在无互联网环境下使用(已对所需的静态资源本地化引用处理)

Global site tag (gtag.js) - Google Analytics