

喜讯:国内、香港、海外云服务器租用特惠活动,2核/4G/10M仅需31元每月,点击抢购>>>
点击这里进入阿里云ECS官方页面,立即免费体验云服务器ECS>>>
阿里云老客户点击这里申请VIP账号,享终身8折优惠(续费也打折)>>>
基于支持eRDMA能力的ECS实例部署Kafka集群,可以充分利用eRDMA提供的低延迟、高吞吐以及低CPU占用等特性,以优化Kafka集群内部节点间的数据传输效率,适用于对消息吞吐量和时延要求较高的应用场景。本文介绍如何基于支持eRDMA能力的ECS实例部署Kafka集群,并测试eRDMA对Kafka性能的提升效果。
说明
Kafka是一个分布式流处理平台,用于高效地处理和存储大量数据流,支持实时消息发布和订阅,广泛应用于日志聚合、事件源、实时分析等场景。更多信息,请参见Kafka官方文档。
eRDMA(Elastic Remote Direct Memory Access,弹性RDMA),是阿里云提供的低延迟、大吞吐、高弹性的高性能RDMA网络服务。更多信息,请参见eRDMA概述。
部署集群需要准备多台ECS实例用于搭建Broker、Zookeeper服务、部署压测环境。 Broker:集群中的核心数据节点,负责实际的消息存储、传输和管理。 ZooKeeper:在Kafka集群中提供分布式服务协调与管理功能。 压测实例:用于验证已部署的Kafka集群的性能。 本文准备5台ECS实例,1台作为Zookeeper实例、3台作为Broker实例、2台作为压测实例,实例配置要求如下: 重要 选用的实例规格需支持eRDMA能力。支持eRDMA能力的实例规格,请参见使用限制。 用途 所需实例 云盘要求 网络要求 镜像要求 作为Broker实例 3台,本文示例规格ecs.g8a.2xlarge 选择ESSD PL3云盘,容量按需选择 均需开通公网IP地址 在同一个专有网络VPC,默认内网互通 均需开启eRDMA功能。更多信息,请参见在企业级实例上配置eRDMA Alibaba Cloud Linux 3.2104 LTS 64位 作为Zookeeper实例 1台,本文示例规格ecs.g8a.xlarge 无限制 作为压测实例 1台,本文示例规格ecs.g8a.16xlarge 无限制 您可以依次登录步骤一准备的5台ECS实例,执行相关命令安装SMC-R、Java工具、Kafka软件。 说明 在使用eRDMA功能时,需要部署SMC-R。SMC-R工作于内核空间,eRDMA资源的使用、管理与维护均由SMC-R协议栈完成。更多信息,请参见共享内存通信(SMC)使用说明。 依次登录所有ECS实例。 具体操作,请参见通过密码或密钥认证登录Linux实例。 (条件必选)确保所有实例内核版本(通过 执行以下命令,在所有实例上安装SMC工具集smc-tools。 执行以下命令,在所有实例上查看eRDMA设备,确保能查到eRDMA设备。 返回结果示例: 执行以下命令,在所有实例上禁用IPv6。 说明 阿里云eRDMA设备与SMC目前均不支持使用IPv6地址,禁用IPv6可以确保流量正确地通过IPv4走RDMA通道。 执行以下命令,安装Java、Git工具。 执行以下命令,下载Kafka并解压。 登录所有实例。 修改 在Zookeeper实例上执行以下命令,启动Zookeeper。 分别在3台Broker实例上启动Broker。 说明 如果是在不使用eRDMA功能的场景下测试,需要去掉命令中的 在第1台Broker实例上指定Broker ID为 在第2台Broker实例上指定Broker ID为 在第3台Broker实例上指定Broker ID为 下载Benchmark工具并模拟一个最高可用网络带宽的环境,然后分别在启用eRDMA功能和不启用eRDMA功能的场景中测试Kafka性能,根据测试结果比较eRDMA对Kafka集群带来的性能提升。 登录压测实例,下载并编译Open Messaging Benchmark。 下载并安装Open Messaging Benchmark编译工具Maven。 配置Maven源加速。 在 下载Open Messaging Benchmark源码并编译。 推荐:TOP云智能建站优惠活动,仅880元即可搭建一个后台管理五端合一的智能网站(PC网站、手机网站、百度智能小程序、微信小程序、支付宝小程序),独享百度搜索SEO优势资源,让你的网站不仅有颜值有排面,更有排名,可以实实在在为您带来效益,请点击进入TOP云智能建站>>>,或咨询在线客服了解详情。步骤一:准备ECS实例
步骤二:安装工具和Kafka
uname -r查询)大于等于5.10.134-16.3。如果实例内核版本小于5.10.134-16.3,执行以下命令将内核升级至最新版本。sudo yum update kernel
sudo reboot
sudo yum install smc-tools -y
smcr dev
Net-Dev IB-Dev IB-P IB-State Type Crit #Links PNET-ID
eth0 erdma_0 1 ACTIVE 0x107f No 0
sudo sysctl net.ipv6.conf.all.disable_ipv6=1
sudo yum install java-11-openjdk-1:11.0.21.0.9-2.0.3.al8 java-11-openjdk-devel-1:11.0.21.0.9-2.0.3.al8 git -y
wget https://archive.apache.org/dist/kafka/3.5.0/kafka_2.13-3.5.0.tgz
tar -xf kafka_2.13-3.5.0.tgz
步骤三:启动Kafka的Zookeeper和Broker
/etc/hosts文件,分别在每个实例的/etc/hosts文件中添加所有实例的私网IP和主机名的对应关系。
bash $HOME/kafka_2.13-3.5.0/bin/zookeeper-server-start.sh -daemon $HOME/kafka_2.13-3.5.0/config/zookeeper.properties
smc_run。broker 0并启动Broker,<zookeeper ip>需替换为Zookeeper实例的私网IP地址。KAFKA_HEAP_OPTS="-Xmx4G -Xms4G" smc_run bash $HOME/kafka_2.13-3.5.0/bin/kafka-server-start.sh -daemon $HOME/kafka_2.13-3.5.0/config/server.properties --override broker.id=0 --override log.dirs=$HOME/kafka-logs --override zookeeper.connect=<zookeeper ip>:2181
broker 1并启动Broker,<zookeeper ip>需替换为Zookeeper实例的私网IP地址。KAFKA_HEAP_OPTS="-Xmx4G -Xms4G" smc_run bash $HOME/kafka_2.13-3.5.0/bin/kafka-server-start.sh -daemon $HOME/kafka_2.13-3.5.0/config/server.properties --override broker.id=1 --override log.dirs=$HOME/kafka-logs --override zookeeper.connect=<zookeeper ip>:2181
broker 2并启动Broker,<zookeeper ip>需替换为Zookeeper实例的私网IP地址。KAFKA_HEAP_OPTS="-Xmx4G -Xms4G" smc_run bash $HOME/kafka_2.13-3.5.0/bin/kafka-server-start.sh -daemon $HOME/kafka_2.13-3.5.0/config/server.properties --override broker.id=2 --override log.dirs=$HOME/kafka-logs --override zookeeper.connect=<zookeeper ip>:2181
步骤四:性能测试
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar -xf apache-maven-3.8.8-bin.tar.gz
export PATH=$PATH:$HOME/apache-maven-3.8.8/bin/
vi $HOME/apache-maven-3.8.8/conf/settings.xml
settings.xml mirrors标签内添加下列内容后保存文件并退出。<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>


湘公网安备43019002001857号
备案号:
客服1