阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Kafka集群安装与扩容

134次阅读
没有评论

共计 2391 个字符,预计需要花费 6 分钟才能阅读完成。

介绍略

集群安装:

一. 准备工作:

1. 版本介绍:

目前我们使用版本为 kafka_2.9.2-0.8.1(scala-2.9.2 为 kafka 官方推荐版本,此外还有 2.8.2 和 2.10.2 可以选择)

2. 环境准备:

安装 JDK6,目前使用版本为 1.6,并配置 Java_HOME

3. 配置修改:

1)拷贝线上配置到本地 kafka 目录。

2)需要注意的是 server.properties 里 broker 和 ip 的指定,必须要唯一。

3)server.properties 中 log.dirs 必须要手动指定。此配置项是 kafka 接收日志的存储目录 (目前我们保存 7 天数据 log.retention.hours=168)

4)zookeeper 的指定可以是下面这种形式,手动定制 zookeeper 的目录,并且用逗号分隔 ip

zookeeper.connect=1.1.1.1:2181,1.1.1.2:2181,1.1.1.3:2181/kafka-0.8.1

5)默认分区和备份数分别为 10 和 3(num.partitions=10 / default.replication.factor=3)当然这也可以在创建 topic 时手动指定。

详细配置介绍项请看链接:kafka 配置

分布式发布订阅消息系统 Kafka 架构设计 http://www.linuxidc.com/Linux/2013-11/92751.htm

Apache Kafka 代码实例 http://www.linuxidc.com/Linux/2013-11/92754.htm

Apache Kafka 教程笔记 http://www.linuxidc.com/Linux/2014-01/94682.htm

Kafka 使用入门教程 http://www.linuxidc.com/Linux/2014-07/104470.htm

4. 部署:

目前 kafka 统一安装在 /opt/apps_install/ 下。

JMX_PORT=9997 bin/kafka-server-start.sh config/server.properties >/dev/null 2>&1 &

部署新节点,然后通过命令启动 kafka,JMX_PORT 是为了打开 kafka 的可管理端口(默认不启用)。

5. 命令:

常用增删改查命令:kafka 基本命令,高级命令

6. 扩容:

1)先部署好新节点环境,并根据上文 ” 配置修改 ” 修改配置,然后启动集群,确保新节点为可用状态。

2)“高级命令“的 Expanding your cluster 小节介绍了扩容的基本方法:

生成扩容使用的 json 文件:
cat topics-to-move.json

{“topics”: [{“topic”: “topic1”}], // 加粗部分是要手动指定的 topic 名称
“version”:1
}

通过上一步写好的 json 文件,使用 kafka 命令生成数据迁移配置
bin/kafka-reassign-partitions.sh –topics-to-move-json-file topics-to-move.json –zookeeper 1.1.1.99:2181/kafka-0.8.1 –broker-list “0,1,2,3,4” –generate // 加粗部分是指定数据迁移到那些 broker。

将第一部分保存留作回退备份 (即 Proposed partition reassignment configuration 上面的 json 串),下面 json 串为扩容将要使用的到的配置,将其保存为 expand-cluster-reassignment.json

执行扩容命令:bin/kafka-reassign-partitions.sh –zookeeper 1.1.1.99:2181/kafka-0.8.1 –reassignment-json-file expand-cluster-reassignment.json –execute 正常执行的话会生成同上图类似的 json 串,表示原始状态和目标状态

查询执行状态:bin/kafka-reassign-partitions.sh –zookeeper 1.1.1.99:2181/kafka-0.8.1 –reassignment-json-file expand-cluster-reassignment.json –verify 正常执行后会返回当前数据迁移的不用 partion 的,信息状态类似下面

Reassignment of partition [foo1,0] completed successfully  // 移动成功
Reassignment of partition [foo1,1] is in progress          // 这行代表数据在移动中
Reassignment of partition [foo1,2] is in progress
Reassignment of partition [foo2,0] completed successfully
Reassignment of partition [foo2,1] completed successfully
Reassignment of partition [foo2,2] completed successfully 数据迁移一旦开始无法停止,也不要强行停止集群,这样会造成数据不一致,带来无法挽回的后果。

注意:kafka 数据迁移的原理是先拷贝数据到目标节点,然后再删除原节点的数据。这样的话如果集群原节点空间不足,不要继续指定其为迁移 broker,这样将造成原节点空间用尽,例如原节点是 broker 为 0,1,2,3,4 就不要这样指定 –broker-list “0,1,2,3,4”,应该这样 –broker-list “5,6”。
另外数据迁移也可以通过手工定制。

Kafka 的详细介绍 :请点这里
Kafka 的下载地址 :请点这里

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2391字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中