为了保证服务质量和用户体验,阿里云消息队列 Kafka 商业化后将全部以提供用户专有的商业化实例,不再提供公测版的共享实例服务。

说明 公测期间所有实例均为共享类型,供所有用户使用;公测结束后(预计在 2019 年 4 月上旬结束公测),您需购买您的实例,可以是 VPC 或公网类型。购买后,您将不再与其他用户共享实例。

本文以 VPC 网络类型的实例为例。公网接入的更多信息请参见。公网 + VPC 接入

  • 若您目前使用的是经典网络,区别于 VPC 网络,您需要先创建 VPC,然后通过 ClassicLink 的方式将经典网络与 VPC 连通,之后无需任何鉴权即可访问 VPC 中部署的消息队列 Kafka 实例。完整的业务迁移方案请参见下文。

  • 若您目前是 VPC 的用户,请参考 【公测迁移】VPC和公网用户迁移迁移业务。

步骤一:创建 VPC

  1. 登录 VPC 控制台
  2. 在顶部菜单栏,选择专有网络的地域。

    注意 专有网络的地域必须与您经典网络中需要使用消息队列 Kafka 服务的客户端对应的 ECS 实例所在的地域相同。
  3. 在左侧导航栏,单击专有网络

  4. 专有网络页面,单击创建专有网络按钮。

  5. 创建专有网络页面,填写所需的信息,包括专有网络和交换机(VSwitch)的信息,然后单击确定按钮。专有网络和相应的交换机就创建好了。

    说明 专有网络的目标网段,请选择“172.16.0.0/12”;交换机的可用区,建议与经典网络中需要使用消息队列 Kafka 服务的客户端对应的 ECS 实例所在的可用区保持一致。

步骤二:建立 ClassicLink 连接

您需要先登录 VPC 控制台开启 ClassicLink 功能,然后到 ECS 控制台将用于消息队列 Kafka 服务的经典网络的 ECS 实例接入 VPC。

开启 CLassicLink

  1. 登录 VPC 控制台

  2. 专有网络页面,单击创建的 VPC。

  3. 专有网络详情页面,单击开启ClassicLink, 然后在弹出的对话框,单击确定

接入 VPC

  1. 登录 ECS 管理控制台

  2. 在左侧导航栏,单击实例

  3. 在顶部导航栏,选择选择实例的所属地域,然后在实例ID/名称列,勾选用于消息队列 Kafka 服务的经典网络的 ECS 实例。

  4. 单击更多 > 网络和安全组 > 连接专有网络



  5. 连接专有网络对话框,选择之前创建的 VPC,然后单击确定

  6. 单击前往实例安全组列表添加 ClassicLink 安全组规则,设置配置规则,然后单击确定

    ClassicLink 安全组规则的详细说明,请参见建立ClassicLink连接中的安全组规则配置表。

  7. 在 ECS 管理控制台的实例列表页面,单击 图标,在弹出的自定义列表项对话框,勾选连接状态,然后单击确定,查看 ECS 实例的连接状态。

步骤三:购买消息队列 Kafka 实例

前往产品购买页,请根据业务所在地域购买相应的实例。

步骤四:部署消息队列 Kafka 实例

  1. 登录消息队列 Kafka 控制台,在概览页查看已购买的实例。

  2. 选择处于未部署状态的实例,单击部署按钮,然后根据页面提示填写 VPC 信息。

    完成后,实例会进入部署中状态。实例部署预计需要 10 分钟 ~ 30 分钟。

    注意 获取需要填写的 VPC 信息的步骤请参见 VPC 接入
  3. 刷新控制台页面。实例状态显示服务中,即表示已部署成功。

步骤五:创建 Topic

消息主题(Topic)是消息队列 Kafka 里对消息进行的一级归类,比如可以创建“Topic_Trade”这一主题用来识别交易类消息。 使用消息队列 Kafka 的第一步就是先为您的应用创建 Topic。

请按照以下步骤创建 Topic:

  1. 在消息队列 Kafka 控制台的左侧导航栏中,单击 Topic管理

  2. 单击左侧菜单栏的 Topic管理

  3. Topic管理页面的上方选择相应的地域,例如华北2(上海),然后单击创建Topic 按钮。

  4. Topic申请页面,输入 Topic 名称和备注,然后单击创建

完成后,您创建的 Topic 将出现在 Topic 管理页面的列表中。

说明 Topic 不能跨地域使用,需要在应用程序所在的地域(即所部署的 ECS 的所在地域)进行创建。比如 Topic 创建在华北2(上海)这个地域,那么消息生产端和消费端也必须运行在华北2(上海)的 ECS 上。地域的详细介绍请参见地域和可用区

步骤六:创建 Consumer Group

Consumer Group 是一类 Consumer 的标识,这类 Consumer 通常接收并消费同一类消息,且消费逻辑一致。Consumer Group 和 Topic 的关系是 N:N。 同一个 Consumer Group 可以订阅多个 Topic,同一个 Topic 也可以被多个 Consumer Group 订阅。

创建完 Topic 后,请按以下步骤创建 Consumer Group:

  1. 在消息队列 Kafka 控制台的左侧导航栏中,单击 Consumer Group管理

  2. Consumer Group管理页面的上方选择相应的地域(比如“华东1”),单击 创建Consumer Group 按钮。

  3. 创建Consumer Group 页面,填写 Consumer Group 的名称,单击创建

完成后,您创建的 Consumer Group 将出现在 Consumer Group管理页面的列表中。

步骤七:获取实例接入点

  1. 进入控制台的 Topic 管理Consumer Group管理页面。

  2. 单击 Topic 或 Consumer Group 操作列中的获取接入点

  3. 接入点页面,单击复制



注意 同一个实例的接入点一致,因此可任意选择该实例的资源(Topic 或 Consumer Group)获取接入点即可。

步骤八:修改代码配置,执行迁移

消息队列 Kafka 提供以下两种迁移方案:

  • 方案一:若您的业务允许丢弃少量未消费的消息数据,那么,您可以直接将生产者和消费者更新为您新部署实例的配置,即可完成迁移。

  • 方案二:若您的业务对消息数据比较敏感,那么,您需要在保证消息消费完成的情况下,完成业务的平滑迁移。

方案二的平滑迁移步骤如下:

  1. 将生产者更新为新部署实例的配置,则新消息写入新部署实例。

  2. 确保消费者在共享实例上的既存消息已消费完成。

  3. 将消费者更新为新部署实例的配置,开始消费新部署实例上的消息。

请按照以下示例代码修改配置:

### Java(Python、NodeJS 可同理参考)
1. bootstrap.server 修改:旧接入点(如 kafka-cn-internet.aliyun.com:8080) => 新部署实例接入点(如 192.168.0.1:9092,192.168.0.2:9092);
2. security.protocol 修改:"SASL_SSL" => "PLAINTEXT";


### Go
1. servers 修改:旧接入点(比如kafka-cn-internet.aliyun.com:8080) => 新集群的接入点(比如192.168.0.1:9092,192.168.0.2:9092)
2. clusterCfg.Net.SASL.Enable 修改:true => false
3. clusterCfg.Net.TLS.Enable 修改:true => false
			

步骤九:确认迁移是否成功

如果生产者能成功发送且消费者能成功消费消息,则说明迁移成功。

确认生产者是否能成功发送消息

  1. 在消息队列 Kafka 控制台左侧导航栏单击 Topic管理
  2. 在 Topic 的操作列单击查看分区状态

若能看到最近更新时间有更新,则代表生产者已成功发送消息。

确认消费者是否能成功消费消息

  1. 在消息队列 Kafka 控制台左侧导航栏单击 Consumer Group管理
  2. 在 Consumer Group 的操作列单击查看消息堆积

若能看到最近消费时间有更新,则代表消费者已成功消费消息。