云服务器内容精选

  • 跨VPC访问和通过DNAT访问实例 请按照表4设置安全组规则。 表4 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 9011 198.19.128.0/17 通过 VPC终端节点 实现跨VPC访问Kafka实例(密文接入和明文接入都适用)。 入方向 TCP 9011 0.0.0.0/0 使用DNAT访问Kafka实例(密文接入和明文接入都适用)。 入方向 TCP 9092 0.0.0.0/0 使用对等连接跨VPC访问Kafka实例(明文接入)。 入方向 TCP 9093 0.0.0.0/0 使用对等连接跨VPC访问Kafka实例(密文接入)。
  • 使用内网通过同一个VPC访问实例 客户端和实例是否使用相同的安全组? 是,如果保留了创建安全组后,系统默认添加的入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,则无需添加其他规则。否则,请添加表1所示规则。 表1 安全组规则 方向 协议 类型 端口 源地址 说明 入方向 TCP IPv4 9092 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(明文接入)。 入方向 TCP IPv6 9192 ::/0 使用内网通过同一个VPC访问Kafka实例(关闭SSL加密)。 入方向 TCP IPv4 9093 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(密文接入)。 入方向 TCP IPv6 9193 ::/0 使用内网通过同一个VPC访问Kafka实例(开启SSL加密)。 否,执行2。 参考如下配置安全组规则。 假设客户端和Kafka实例的安全组分别为:sg-53d4、Default_All。以下规则,远端可使用安全组,也可以使用具体的IP地址,本章节以安全组为例介绍。 客户端所在安全组需要增加如下规则,以保证客户端能正常访问Kafka实例。 表2 安全组规则 方向 策略 协议端口 目的地址 出方向 允许 全部 Default_All 图1 配置客户端安全组 Kafka实例所在安全组需要增加如下规则,以保证能被客户端访问。 表3 安全组规则 方向 策略 协议端口 源地址 入方向 允许 全部 sg-53d4 图2 配置Kafka实例安全组
  • Kafka实例的SASL_SSL开关如何修改? 在“华北-北京一”、“中东-利雅得”、“拉美-圣保罗一”和“拉美-圣地亚哥”区域,Kafka SASL_SSL开关不支持购买实例后修改,在购买时,请慎重选择,如果购买后需要修改,需要重新购买实例。 除“华北-北京一”、“中东-利雅得”、“拉美-圣保罗一”和“拉美-圣地亚哥”以外的区域,集群版实例的SASL_SSL开关支持修改,具体步骤请参考修改实例的接入方式。单机版实例不支持SASL_SSL功能。 开启IPv6的实例不支持动态修改SASL_SSL开关。 父主题: 实例问题
  • 与RabbitMQ、RocketMQ的差异 表1 功能差异 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 3.8.35版本:支持。建议优先级大小设置在0-10之间。 AMQP-0-9-1版本:不支持。 延迟队列 支持 不支持 不支持 死信队列 支持 不支持 支持 消息重试 支持 不支持 3.8.35版本:不支持。 AMQP-0-9-1版本:支持。 消费模式 支持客户端主动拉取和服务端推送两种方式。 客户端主动拉取。 支持客户端主动拉取和服务端推送两种模式。 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 3.8.35版本:不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 AMQP-0-9-1版本:支持。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 3.8.35版本:不支持。 AMQP-0-9-1版本:支持。 消息过滤 支持 支持 3.8.35版本:不支持,但可以自行封装。 AMQP-0-9-1版本:支持。 多租户 支持 支持 支持 多协议支持 兼容RocketMQ协议。 只支持Kafka自定义协议。 RabbitMQ基于AMQP协议实现。 跨语言支持 支持多语言的客户端。 采用Scala和Java编写,支持多种语言的客户端。 支持多种语言的客户端。 流量控制 RocketMQ 5.x支持基于实例规格的流量控制。 支持client、user和Topic级别,通过主动设置可将流控作用于生产者或消费者。 RabbitMQ的流控基于Credit-Based算法,是内部被动触发的保护机制,作用于生产者层面。 消息顺序性 单队列(queue)内有序。 支持单分区(partition)级别的顺序性。 单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能时,才能实现消息有序。 安全机制 支持SSL认证。 支持SSL、SASL身份认证和读写权限控制。 3.8.35版本:支持SSL认证。 AMQP-0-9-1版本:支持ACL访问控制。 事务性消息 支持 支持 支持
  • 步骤四:修改客户端配置文件 开启SSL双向认证后,需要在客户端的“consumer.properties”和“producer.properties”文件中,分别修改服务端证书配置,并增加客户端证书配置。 security.protocol=SSL ssl.truststore.location=/opt/kafka_2.12-2.7.2/config/client.truststore.jks ssl.truststore.password=dms@kafka ssl.endpoint.identification.algorithm= #增加以下的客户端证书配置 ssl.keystore.location=/var/private/ssl/kafka/client.keystore.jks ssl.keystore.password=txxx3 ssl.key.password=txxx3 security.protocol配置证书协议类型,开启SSL双向认证时,必须设置为SSL。 ssl.truststore.location配置为client.truststore.jks证书的存放路径。 ssl.truststore.password为client.truststore.jks的密码。 ssl.endpoint.identification.algorithm为证书 域名 校验开关,为空则表示关闭。这里需要保持关闭状态,必须设置为空。 ssl.keystore.location配置为client.keystore.jks证书的存放路径。 ssl.keystore.password配置为client.keystore.jks的密码。 ssl.key.password配置为client.keystore.jks的密码。
  • 连接Kafka网络要求 客户端可以通过公网连接Kafka实例,也可以通过内网连接Kafka实例。使用内网连接时,注意以下几点: 如果客户端和Kafka实例部署在同一个VPC内,网络默认互通。 如果客户端和Kafka实例部署在不同VPC中,由于VPC之间逻辑隔离,客户端和Kafka实例不能直接通信,需要打通VPC之间的网络。 客户端连接Kafka实例的方式如表1所示。 表1 连接方式说明 连接方式 实现方式 参考文档 公网连接 客户端通过IPv4地址访问Kafka实例:在Kafka控制台开启公网访问,配置弹性公网IP,客户端通过弹性公网IP访问Kafka实例。 客户端通过IPv6地址访问Kafka实例:在Kafka控制台开启IPv6功能,将IPv6地址加入到共享带宽中,实现客户端通过公网访问Kafka实例。 配置Kafka实例的公网访问 使用DNAT通过端口映射方式,实现客户端通过公网连接Kafka实例。 使用DNAT实现公网访问Kafka 内网连接 客户端和Kafka实例部署在同一个VPC中,此时网络默认互通。 - 客户端和Kafka实例部署在同一个Region的不同VPC中,利用VPC终端节点在不同VPC间建立跨VPC的连接通道,实现跨VPC访问。 使用VPCEP实现跨VPC访问Kafka 客户端和Kafka实例部署在同一个Region的不同VPC中,利用VPC对等连接将两个VPC间的网络打通,实现跨VPC访问。 对等连接 客户端连接Kafka实例前,需要放通如下安全组,否则会连接失败。 创建安全组后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问Kafka实例,无需添加表2的规则。 表2 安全组规则 方向 协议 类型 端口 源地址 说明 入方向 TCP IPv4 9094 0.0.0.0/0 通过公网访问Kafka实例(明文接入)。 入方向 TCP IPv4 9092 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(明文接入)。 使用对等连接跨VPC访问Kafka实例(明文接入)。 入方向 TCP IPv6 9192 ::/0 通过IPv6地址访问Kafka实例(关闭SSL加密)(内网和公网都适用)。 入方向 TCP IPv4 9095 0.0.0.0/0 通过公网访问Kafka实例(密文接入)。 入方向 TCP IPv4 9093 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(密文接入)。 使用对等连接跨VPC访问Kafka实例(密文接入)。 入方向 TCP IPv6 9193 ::/0 通过IPv6地址访问Kafka实例(开启SSL加密)(内网和公网都适用)。 入方向 TCP IPv4 9011 198.19.128.0/17 通过VPC终端节点实现跨VPC访问Kafka实例(密文接入和明文接入都适用)。 入方向 TCP IPv4 9011 0.0.0.0/0 使用DNAT访问Kafka实例(密文接入和明文接入都适用)。 父主题: 配置Kafka网络连接
  • 步骤五:验证接口连通性 参考使用客户端连接Kafka(关闭SASL)或者使用客户端连接Kafka(开启SASL),测试是否可以生产和消费消息。 测试接口连通性时,注意以下几点: 连接Kafka实例的地址为“advertised.listeners IP:9011”,以图8为例,连接Kafka实例的地址为“192.168.0.71:9011,192.168.0.11:9011,192.168.0.21:9011”。 在Kafka实例安全组的入方向规则中放通9011端口,以及198.19.128.0/17网段的地址。 如果Kafka实例的子网配置了网络ACL功能,需要在网络ACL的入方向规则中放通198.19.128.0/17网段的地址,以及VPC终端节点涉及的子网。 198.19.128.0/17是为VPC终端节点分配的网段,使用VPC终端节点需要放通此网段。
  • 迁移方案三:先迁消费,再迁生产 指首先通过Smart Connect同步两个Kafka的消息,其次将消费端迁移到新Kafka,最后将生产端迁移到新Kafka。 本方案依赖于Smart Connect,Smart Connect实时同步源端和目标端的数据,但是消费进度是通过批处理同步的,可能会导致源端和目标端每个分区的消费进度存在0-100之间的差异,存在少量重复消费问题。此场景适用于生产端不可停止,端到端有时延要求,但是可以兼容少量重复消费的业务。 创建Kafka数据复制的Smart Connect任务,用于同步两个Kafka的消息。具体步骤请参见配置Kafka间的数据复制。 在Kafka控制台的“消息查询”页面,查看两个Kafka的最新消息是否一致,确认两个Kafka的同步进度是否一致。具体步骤请参见查看Kafka消息。 是,执行3。 否,在监控页面查看两个Kafka的“Kafka每分钟同步数据量”是否正常,如果正常,先等待两个Kafka的同步进度一致,然后执行3。 将消费客户端的Kafka连接地址修改为新Kafka实例的连接地址。 重启消费业务,使得消费者从新Kafka实例中消费消息。 观察消费者是否能正常从新Kafka实例中获取数据。 修改生产客户端,Kafka连接地址改为新Kafka实例的连接地址。 重启生产客户端,将生产业务迁移到新Kafka实例中。 生产业务迁移后,观察连接新Kafka实例的消费业务是否正常。 迁移结束。
  • 迁移方案二:同时消费,后迁生产 指消费者业务启用多个消费客户端,分别向原Kafka和新Kafka实例消费消息,然后将生产业务切到新Kafka实例,这样能确保所有消息都被及时消费。 本方案中消费业务会在一段时间内同时消费原Kafka和新Kafka实例。由于在迁移生产业务之前,已经有消费业务运行在新Kafka实例上,因此不会存在端到端时延的问题。但在迁移生产的开始阶段,同时消费原Kafka与新Kafka实例,会导致部分消息之间的生产顺序无法保证,存在消息乱序的问题。此场景适用于对端到端时延有要求,却对消息顺序不敏感的业务。 启动新的消费客户端,配置Kafka连接地址为新Kafka实例的连接地址,消费新Kafka实例中的数据。 原有消费客户端需继续运行,消费业务同时消费原Kafka与新Kafka实例的消息。 修改生产客户端,Kafka连接地址改为新Kafka实例的连接地址。 重启生产客户端,将生产业务迁移到新Kafka实例中。 生产业务迁移后,观察连接新Kafka实例的消费业务是否正常。 等待原Kafka中数据消费完毕,关闭原有消费业务客户端。 迁移结束。
  • 迁移方案一:先迁生产,再迁消费 指先将生产消息的业务迁移到新的Kafka,原Kafka不会有新的消息生产。待原有Kafka实例的消息全部消费完成后,再将消费消息业务迁移到新的Kafka,开始消费新Kafka实例的消息。 本方案为业界通用的迁移方案,操作步骤简单,迁移过程由业务侧自主控制,整个过程中消息不会存在乱序问题,适用于对消息顺序有要求的场景。但是该方案中需要等待消费者业务直至消费完毕,存在一个时间差的问题,部分数据可能存在较大的端到端时延。 将生产客户端的Kafka连接地址修改为新Kafka实例的连接地址。 重启生产业务,使得生产者将新的消息发送到新Kafka实例中。 观察各消费组在原Kafka的消费进度,直到原Kafka中数据都已经被消费完毕。 将消费客户端的Kafka连接地址修改为新Kafka实例的连接地址。 重启消费业务,使得消费者从新Kafka实例中消费消息。 观察消费者是否能正常从新Kafka实例中获取数据。 迁移结束。
  • 迁移准备 配置网络环境。 Kafka实例分内网地址以及公网地址两种网络连接方式。如果使用公网地址,则消息生成与消费客户端需要有公网访问权限,并配置如下安全组。 表1 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 9094 0.0.0.0/0 通过公网访问Kafka(明文接入)。 入方向 TCP 9095 0.0.0.0/0 通过公网访问Kafka(密文接入)。 创建目标Kafka实例。 目标Kafka的规格不能低于原业务使用的Kafka规格。具体请参考购买Kafka实例。 在目标Kafka实例中创建Topic。 在目标Kafka实例上创建与原Kafka实例相同配置的Topic,包括Topic名称、副本数、分区数、消息老化时间,以及是否同步复制和落盘等。具体请参考创建Kafka Topic。
  • 步骤三:修改客户端配置文件 替换证书后,需要在客户端的“consumer.properties”和“producer.properties”文件中,分别修改“ssl.truststore.location”和“ssl.truststore.password”参数。 security.protocol=SASL_SSL ssl.truststore.location=/opt/kafka_2.12-2.7.2/config/client.truststore.jks ssl.truststore.password=dms@kafka ssl.endpoint.identification.algorithm= ssl.truststore.location配置为client.truststore.jks证书的存放路径。 ssl.truststore.password为客户端证书的Truststore密码。 ssl.endpoint.identification.algorithm为证书域名校验开关,为空则表示关闭。这里需要保持关闭状态,必须设置为空。
  • 变更配置后对计费的影响 如果您在购买按需计费实例后变更了实例规格,会产生一个新订单并开始按新规格的价格计费,旧订单自动失效。 如果您在一个小时内变更了实例规格,将会产生多条计费信息。每条计费信息的开始时间和结束时间对应不同规格在该小时内的生效时间。 例如,您在9:00:00购买了一个按需计费实例,实例规格为kafka.2u4g.cluster*3,并在9:30:00升配为kafka.4u8g.cluster*3,那么在9:00:00 ~ 10:00:00间会产生两条计费信息。 第一条对应9:00:00 ~ 9:30:00,实例规格按照kafka.2u4g.cluster*3计费。 第二条对应9:30:00 ~ 10:00:00,实例规格按照kafka.4u8g.cluster*3计费。
  • 计费周期 按需计费Kafka实例按秒计费,每一个小时整点结算一次费用(以UTC+8时间为准),结算完毕后进入新的计费周期。计费的起点以Kafka实例创建成功的时间点为准,终点以实例删除时间为准。 例如,您在8:45:30购买了一个按需计费的Kafka实例,然后在8:55:00将其删除,则计费周期为8:00:00 ~ 9:00:00,在8:45:30 ~ 8:55:30间产生费用,该计费周期内的计费时长为600秒。
  • 计费示例 假设您于2023/04/18 9:59:30在“华北-北京四”区域购买了一个按需计费Kafka实例(规格:kafka.2u4g.cluster*3,总存储空间:高I/O 300GB),计费资源包括实例费用(代理规格和代理数量),以及存储空间费用(高I/O 300GB),然后在2023/04/18 10:45:46将其删除,则: 第一个计费周期为9:00:00 ~ 10:00:00,在9:59:30 ~ 10:00:00间产生费用,该计费周期内的计费时长为30秒。 第二个计费周期为10:00:00 ~ 11:00:00,在10:00:00 ~ 10:45:46间产生费用,该计费周期内的计费时长为2746秒。 您需要为每个计费周期付费,各项Kafka资源单独计费,计费公式如表2所示。产品价格详情中标出了资源的每小时价格,您需要将每小时价格除以3600,得到每秒价格。 表2 计费公式 资源类型 计费公式 资源单价 实例费用 实例规格单价 * 购买时长 请参见分布式消息服务Kafka版价格详情中的“实例价格”。 存储空间费用 存储空间单价 * 购买时长 请参见分布式消息服务Kafka版价格详情中的“存储价格”。 图2给出了上述示例配置的费用计算过程。 图中价格仅供参考,实际计算请以分布式消息服务Kafka版价格详情中的价格为准。 图2 按需计费Kafka实例费用计算示例(华北-北京四区域)