
# 配置外网客户端访问Kafka Broker
#### 操作场景
外网环境Kafka客户端访问部署在内网的Kafka Broker，需参考该章节操作开启Kafka内外网分流访问。
#### 约束与限制
本章节适用于MRS 3.2.0及之后版本。
#### 前提条件
- Broker所在节点同时具有内网IP和外网IP，Broker绑定在内网IP上，外网无法访问。或者Broker所在节点只具有内网IP，外部服务通过网闸机映射访问内网。
- ZooKeeper服务运行正常。
- Kafka实例状态和磁盘状态均正常。
 
#### 操作步骤
1. 登录FusionInsight Manager界面。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Kafka \> 实例 \> Broker \> 实例配置 \> 全部配置"。在搜索框输入"broker.id"，查看并记录当前Broker实例的Broker ID。
   
   broker.id：表示服务器上Broker的ID值，每个Broker具有唯一的ID值。不支持配置，由系统自动生成。
   
   
3. 重复[2]，查看并记录每一个Broker实例的Broker ID。
4. 选择"集群 \> 服务 \> Kafka \> 配置 \> 全部配置"。参考[表1]搜索并根据实际需要配置具体参数。
   
    表1参数配置说明 
   | 配置项                           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 取值要求                                                                                                                                                                                                                                           |
   |:---|:---|:---|
   | enable.advertised.listener    | 是否开启"advertised.listeners"配置。默认值为"false"。 - true：开启，指定客户端连接时使用的地址和端口。 集群已启用Kerberos认证（安全模式）时，开启该参数配置后，客户端只支持使用Kerberos认证，不支持使用Plain认证。   - false：关闭，不使用客户端连接时使用的地址和端口。                                                                                                                               | 配置"enable.advertised.listener"参数值为"true"。 说明： 安装Kafka服务时，此参数初始化配置不能设置为"true"，设置为"true"的前提条件是Broker实例和ZooKeeper必须处于正常运行状态。                                                          |
   | advertised.broker.id.ip.map   | Kafka对外发布的IP地址。默认值为空。 - 配置格式为：*Broker ID:IP*。  - 多个Broker可为同一IP地址。配置多个映射时，使用英文半角逗号分隔。                                                                                                                                                                                                                                                       | 将[2]中记录的每个Broker实例的Broker ID与此Broker将要绑定的IP做映射。 例如有三个Broker实例和一个IP地址，Broker ID分别为1、2、3，IP地址为10.*xxx.xxx.xxx* ，则配置格式为1:10.*xxx.xxx.xxx* ,2:10.*xxx.xxx.xxx* ,3:10.*xxx.xxx.xxx*。 |
   | advertised.broker.id.port.map | Kafka对外发布的端口。默认值为空。 - 配置格式为：*Broker ID:Port*。  - "Port"为将要绑定的端口，此端口为自定义端口，配置的端口必须为可用的端口。  - 配置多个映射时，使用英文半角逗号分隔。  - 参数"advertised.broker.id.port.map"与参数"actual.broker.id.port.map"中的"Port"可以配置为相同端口。   | 将[2]中记录的每个Broker实例的Broker ID与此Broker将要绑定的端口做映射。 例如有三个Broker实例和三个Port，Broker ID分别为1、2、3，Port分别为3307、3308、3309，则配置格式为1:3307,2:3308,3:3309。                                           |
   | actual.broker.id.ip.map       | Kafka实际额外绑定的IP地址，默认值为空。 - 配置格式为：*Broker ID:IP*。  - 配置多个映射时，使用英文半角逗号分隔。                                                                                                                                                                                                                                                                  | 将[2]中记录的每个Broker实例的Broker ID与此Broker将要绑定的IP做映射。 例如有三个Broker实例和一个IP地址，Broker ID分别为1、2、3，IP地址为10.*xxx.xxx.xxx* ，则配置格式为1:10.*xxx.xxx.xxx* ,2:10.*xxx.xxx.xxx* ,3:10.*xxx.xxx.xxx*。  |
   | actual.broker.id.port.map     | Kafka实际额外绑定的端口，默认值为空。 - 配置格式为：*Broker ID:Port*。  - "Port"为将要绑定的端口，此端口为自定义端口，配置的端口必须为可用的端口。  - 配置多个映射时，使用英文半角逗号分隔。  - 参数"advertised.broker.id.port.map"与参数"actual.broker.id.port.map"中的"Port"可以配置为相同端口。    | 将[2]中记录的每个Broker实例的Broker ID与此Broker将要绑定的端口做映射。 例如有三个Broker实例和三个Port，Broker ID分别为1、2、3，Port分别为3307、3308、3309，则配置格式为1:3307,2:3308,3:3309。                                          |
      
   
   
5. 配置完成后，左上角单击"保存"，在Kafka"实例"界面，勾选Broker实例，选择"更多 \> 滚动重启实例"，等待滚动重启完成生效。
6. （可选）如果需要关闭此配置，将"enable.advertised.listener"设置为"false"，单击"保存"。在Kafka"实例"界面，勾选Broker实例，选择"更多 \> 滚动重启实例"，等待滚动重启完成生效。
 
