

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 了解连接器
<a name="msk-connect-connectors"></a>

连接器会持续将数据来源中的流数据复制到您的 Apache Kafka 集群，或者持续将数据从集群复制到数据接收器中，从而将外部系统和 Amazon 服务与 Apache Kafka 集群相集成。连接器还可以执行轻量级逻辑，例如在将数据传送到目标之前进行转换、格式转换或数据筛选。源连接器从数据来源提取数据，并将这些数据推送到集群中，而接收器连接器则从集群中提取数据，并将这些数据推送到数据接收器中。

下图显示了连接器的架构。工作程序是运行连接器逻辑的 Java 虚拟机（JVM）进程。每个工作程序都会创建一组任务，这些任务在并行线程中运行并执行复制数据的工作。任务不存储状态，因此可以随时启动、停止或重新启动，以提供弹性且可扩展的数据管道。

![\[显示连接器集群架构的示意图。\]](http://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/images/mkc-worker-architecture.png)


# 了解连接器容量
<a name="msk-connect-capacity"></a>

连接器的总容量取决于该连接器拥有的工作器数量以及每个工作人员的 MSK Connect 单元数 (MCUs)。每个 MCU 代表 1 个 vCPU 的计算能力和 4GiB 的内存。MCU 内存与工作程序实例的总内存有关，而不是正在使用的堆内存。

MSK Connect 工作程序使用客户提供的子网中的 IP 地址。每个工作程序都使用客户提供的子网中的一个 IP 地址。您应确保在提供给 CreateConnector 请求的子网中有足够的可用的 IP 地址来考虑其指定容量，尤其是在自动缩放连接器时，工作人员数量可能会波动。

要创建连接器，必须选择以下两种容量模式之一。
+ *已预置* – 如果您知道连接器的容量要求，请选择此模式。指定两个值：
  + 工作程序数量。
  +  MCUs 每个工作人员的人数。
+ *自动扩缩* – 如果连接器的容量要求各不相同，或者您事先不知道连接器的容量要求，请选择此模式。当您使用自动缩放模式时，Amazon MSK Connect 会使用与连接器中运行的工作线程数量和每个工作线程的数量成比例的值来覆盖连接器的`tasks.max`属性。 MCUs 

  指定三组值：
  + 最小和最大工作程序数量。
  + CPU 利用率的横向缩减百分比和横向扩展百分比，该百分比由 `CpuUtilization` 指标确定。当连接器的 `CpuUtilization` 指标超过横向扩展百分比时，MSK Connect 会增加连接器中运行的工作程序数量。当 `CpuUtilization` 指标低于横向缩减百分比时，MSK Connect 会减少工作程序数量。工作程序的数量将始终保持在创建连接器时指定的最小和最大数量之间。
  +  MCUs 每个工作人员的人数。
  + （可选）*最大自动缩放任务数*-自动缩放操作期间分配给连接器的最大任务数。此参数允许您设置任务创建的上限，从而更好地控制与 Kafka 主题分区相关的资源利用率和并行度。

有关工作人员的更多信息[了解 MSK Connect 工作程序](msk-connect-workers.md)，请参阅；有关最大自动缩放任务数的更多信息，请参阅[了解最大自动缩放任务数](msk-connect-max-autoscaling-task-count.md)。要了解有关 MSK Connect 指标的信息，请参阅[监控 Amazon MSK Connect](mkc-monitoring-overview.md)。

# 了解最大自动缩放任务数
<a name="msk-connect-max-autoscaling-task-count"></a>

该`maxAutoscalingTaskCount`参数是一个可选容量字段，可用于 Amazon MSK Connect 中的自动缩放连接器。此参数允许您设置连接器自动缩放操作期间可以创建的最大任务数的上限，从而更好地控制资源利用率和性能。

当您使用自动扩展容量模式时，Amazon MSK Connect 会自动使用与工作人员数量和 MCUs 每个工作人员的数量成比例的值来覆盖连接器的`tasks.max`属性。该`maxAutoscalingTaskCount`参数提供了一个额外的可配置选项，用于限制为连接器创建的最大任务数。

当您想要控制与 Kafka 集群中主题分区数量相关的并行度时，此功能特别有用。通过设置此限制，您可以优化性能并防止在自动计算的任务计数超过工作负载要求时可能出现的任务分配效率低下。

## 配置要求
<a name="msk-connect-max-autoscaling-task-count-requirements"></a>

该`maxAutoscalingTaskCount`参数必须满足以下要求：

```
maxAutoscalingTaskCount ≥ maxWorkerCount
```

此要求通过为每位工作人员维护至少一项任务来确保资源的有效利用。系统强制执行此最低限度以优化连接器功能。

如果指定`maxAutoscalingTaskCount`，则该限制将在连接器创建后以及所有后续扩展事件中立即应用。在自动缩放操作期间，随着工作人员数量的增加或减少，系统将继续遵守此限制。该`tasks.max`值根据工作人员数量和 MCUs 每个工作人员的数量按比例调整，但永远不会超过配置`maxAutoscalingTaskCount`的值。

如果您未指定此参数，则连接器将使用没有任何限制的标准计算：`tasks.max = workerCount × mcuCount × tasksPerMcu`（其中 tasksPerMcu 为 2）。

## 何时使用 C maxAutoscalingTask ount
<a name="msk-connect-max-autoscaling-task-count-when-to-use"></a>

考虑`maxAutoscalingTaskCount`在以下场景中使用：
+ *分区数有限*：当你的 Kafka 主题的固定分区数低于自动计算的任务数时，设置限制可以防止创建没有工作可执行的空闲任务。
+ *性能优化*：当您确定特定任务计数可为您的工作负载提供最佳吞吐量时，您可以限制最大任务数以保持稳定的性能。
+ *资源管理*：无论有多少工作线程在运行，都要控制连接器的最大并行度和资源消耗。

## 示例
<a name="msk-connect-max-autoscaling-task-count-example"></a>

对于具有以下配置的连接器：

```
minWorkerCount: 1
maxWorkerCount: 4
mcuCount: 8
maxAutoscalingTaskCount: 15
```

否则`maxAutoscalingTaskCount`，当扩展到 4 个工作器时，连接器将创建 64 个任务（每个 MCU 4 个工作人员 MCUs × 8 × 2 个任务）。`maxAutoscalingTaskCount`设置为 15 时，连接器仅创建 15 个任务，如果您的 Kafka 主题有 15 个或更少的分区，这可能更合适。

# 配置双栈网络类型
<a name="msk-connect-dual-stack"></a>

Amazon MSK Connect 支持新连接器的双栈网络类型。使用双栈网络，您的连接器可以通过 IPv4 和 IPv6连接到目的地。请注意， IPv6 连接仅在双栈模式 (IPv4 \$1 IPv6) 下可用，不支持 IPv6仅联网。

默认情况下，新连接器使用 IPv4 网络类型。要创建双栈网络类型的连接器，请确保您已满足下一节中描述的先决条件。请注意，使用双栈网络类型创建连接器后，就无法修改其网络类型。要更改网络类型，必须删除并重新创建连接器。

Amazon MSK Connect 还支持通过 IPv6 和 IPv4进行服务 API 终端节点连接。要使用 IPv6 连接进行 API 调用，您需要使用双堆栈终端节点。有关 MSK Connect 服务终端节点的更多信息，请参阅[亚马逊 MSK Connect 终端节点和](https://docs.aws.amazon.com/general/latest/gr/msk-connect.html)配额。

## 使用双栈网络类型的先决条件
<a name="dual-stack-prerequisites"></a>

在为连接器配置双栈网络类型之前，请确保在创建连接器期间提供的所有子网均已分配双栈网络 IPv6 和 IPv4 CIDR 块。

## 使用双栈网络类型的注意事项
<a name="dual-stack-considerations"></a>
+ IPv6 支持目前仅在双堆栈模式 (IPv4 \$1 IPv6) 下可用，不支持仅在双栈模式 (\$1) 下可用 IPv6
+ 启用双堆栈的连接器可以同时连接到 MSK IPv4 和 IPv6 Sink 或源数据系统
+ 创建连接器后无法修改网络类型-必须删除并重新创建连接器才能更改网络类型
+ 连接器创建期间指定的所有子网都必须支持双堆栈，才能成功创建双栈网络类型的连接器
+ 如果使用双栈子网但未指定网络类型，则为了向后兼容，连接器将默认为 IPv4-only
+ 对于现有连接器，您无法更新网络类型-必须删除并重新创建连接器才能更改网络类型
+ 使用双栈联网不会产生额外费用

# 创建 连接器
<a name="mkc-create-connector-intro"></a>

此过程介绍了如何使用 AWS 管理控制台创建连接器。

**使用创建连接器 AWS 管理控制台**

1. 在 [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/) 打开 Amazon MSK 控制台。

1. 在左侧窗格的 **MSK Connect** 下，选择**连接器**。

1. 选择 **Create connector (创建连接器)**。

1. 您可以选择使用现有的自定义插件来创建连接器，也可以先创建新的自定义插件。有关自定义插件以及如何创建这些插件的信息，请参阅[创建自定义插件](msk-connect-plugins.md)。在此过程中，假设您有一个要使用的自定义插件。在自定义插件列表中，找到要使用的插件，选中其左侧的复选框，然后选择**下一步**。

1. 输入名称和描述（可选）。

1. 选择您想要连接到的集群。

1. 在 “**连接器网络设置”** 部分，为网络类型选择以下选项之一：
   + **IPv4**（默认）- IPv4 仅用于通过连接目的地
   + **双栈**-用于通过 IPv4 和连接到目的地 IPv6 （仅当您的子网具有 IPv4 IPv6 CIDR 块与之关联时才可用）

1. 指定连接器配置。您需要指定的配置参数取决于要创建的连接器类型。但是，部分参数是所有连接器通用的参数，例如 `connector.class` 和 `tasks.max` 参数。以下是 [Confluent Amazon S3 Sink Connector](https://www.confluent.io/hub/confluentinc/kafka-connect-s3) 的配置示例。

   ```
   connector.class=io.confluent.connect.s3.S3SinkConnector
   tasks.max=2
   topics=my-example-topic
   s3.region=us-east-1
   s3.bucket.name=amzn-s3-demo-bucket
   flush.size=1
   storage.class=io.confluent.connect.s3.storage.S3Storage
   format.class=io.confluent.connect.s3.format.json.JsonFormat
   partitioner.class=io.confluent.connect.storage.partitioner.DefaultPartitioner
   key.converter=org.apache.kafka.connect.storage.StringConverter
   value.converter=org.apache.kafka.connect.storage.StringConverter
   schema.compatibility=NONE
   ```

1. 接下来，配置您的连接器容量。您可以在两种容量模式之间选择：已预置和自动扩缩。有关这两个选项的信息，请参阅[了解连接器容量](msk-connect-capacity.md)。

1. （可选）在 “**最大自动扩缩任务数**” 部分中，使用 “最大自动扩缩任务数” 字段输入要在自动缩放操作期间分配给连接器的最大任务数。该值必须至少等于您的最大工作人员人数。如果您未指定值，则连接器将使用没有任何限制的标准计算。有关更多信息，请参阅 [了解最大自动缩放任务数](msk-connect-max-autoscaling-task-count.md)。

1. 选择默认工作程序配置或自定义工作程序配置。有关创建自定义工作程序配置的信息，请参阅[了解 MSK Connect 工作程序](msk-connect-workers.md)。

1. 接下来，指定服务执行角色。这必须是 MSK Connect 可以担任的 IAM 角色，该角色向连接器授予访问必要 AWS 资源所需的所有权限。这些权限取决于连接器的逻辑。有关如何创建此角色的信息，请参阅[了解服务执行角色](msk-connect-service-execution-role.md)。

1. 选择**下一步**，查看安全信息，然后再次选择**下一步**。

1. 指定所需的日志记录选项，然后选择**下一步**。有关日志记录的信息，请参阅[为 MSK Connect 进行日志记录](msk-connect-logging.md)。

1. 在**查看并创建**页面上，查看您的连接器配置，然后选择**创建连接器**。

要使用 MSK Connect API 创建连接器，请参阅[CreateConnector](https://docs.aws.amazon.com/MSKC/latest/mskc/API_CreateConnector.html)。

可使用 `UpdateConnector` API 修改连接器配置。有关更多信息，请参阅 [更新连接器](mkc-update-connector.md)。

# 更新连接器
<a name="mkc-update-connector"></a>

此过程介绍了如何使用 AWS 管理控制台更新现有 MSK Connect 连接器的配置。

**使用更新连接器配置 AWS 管理控制台**

1. 在 [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/) 打开 Amazon MSK 控制台。

1. 在左侧窗格的 **MSK Connect** 下，选择**连接器**。

1. 选择现有的连接器。

1. 选择**编辑连接器配置**。

1. 更新连接器配置。您无法`connector.class`使用进行覆盖 UpdateConnector。以下是 Confluent Amazon S3 Sink Connector 的配置示例。

   ```
   connector.class=io.confluent.connect.s3.S3SinkConnector
   tasks.max=2
   topics=my-example-topic
   s3.region=us-east-1
   s3.bucket.name=amzn-s3-demo-bucket
   flush.size=1
   storage.class=io.confluent.connect.s3.storage.S3Storage
   format.class=io.confluent.connect.s3.format.json.JsonFormat
   partitioner.class=io.confluent.connect.storage.partitioner.DefaultPartitioner
   key.converter=org.apache.kafka.connect.storage.StringConverter
   value.converter=org.apache.kafka.connect.storage.StringConverter
   schema.compatibility=NONE
   ```

1. 选择**提交**。

1. 然后，可以在连接器的**操作**选项卡中监视操作的当前状态。

要使用 MSK Connect API 更新连接器的配置，请参阅[UpdateConnector](https://docs.aws.amazon.com/MSKC/latest/mskc/API_UpdateConnector.html)。

# 通过连接器连接
<a name="msk-connect-from-connectors"></a>

以下最佳实践可以提高您与 Amazon MSK Connect 的连接性能。

## 请勿与 Amazon VPC IPs 对等互连或 Transit Gateway 重叠
<a name="CIDR-ip-ranges"></a>

如果您使用的是带有 Amazon MSK Connect 的 Amazon VPC 对等连接或 Transit Gateway，请不要将连接器配置为访问 CIDR 范围内的对等 VPC 资源 IPs ：
+ “10.99.0.0/16”
+ “192.168.0.0/16”
+ “172.21.0.0/16”