You need to enable JavaScript to run this app.
文档中心
负载均衡

负载均衡

复制全文
下载 pdf
最佳实践
NLB为MQTT服务提供证书认证
复制全文
下载 pdf
NLB为MQTT服务提供证书认证
操作场景​
云原生消息引擎MQTT版是一款基于EMQx企业版构建的MQTT服务。可以为物联网(IoT)应用提供可靠的实时消息传输和设备连接解决方案。当云原生消息引擎MQTT版需要TLS证书认证时,若由其的后端服务器直接处理,会显著增加其负载并导致证书管理困难。而NLB可承接证书认证工作,不仅能为后端服务器降低负载,还方便统一管理证书。​
​​​
说明​
客户端访问请求的源IP地址经过NLB时,会被替换成NLB的IP地址,由于当前MQTT还未支持Proxy-Protocol协议,故暂时无法获取客户端真实的IP地址。​
准备工作​
  1. 创建私有证书。操作请参考私有CA快速入门。​
  1. 下载并安装 MQTTX,详细操作请参考 MQTTX 官方安装文档。​
操作步骤​
步骤一:配置MQTT实例​
(一)创建MQTT实例​
  1. 在顶部菜单栏,选择目标项目和地域。​
  1. 在左侧导航树,选择MQTT 实例,单击创建实例按钮。​
  1. 参考下表,配置相关参数。​
  • ​
    参数​
    说明​
    取值示例​
    基本信息​
    ​
    ​
    计费类型​
    选择实例计费的类型。​
    按量计费​
    实例名称​
    输入实例名称。​
    mqtt-01​
    地域及可用区​
    地域已选定,不可更改。根据业务详情选择可用区。​
    华南1(广州)可用区A​
    所属项目​
    选择实例所属项目。​
    default(默认项目)​
    实例配置​
    ​
    ​
    计算规格​
    根据业务场景预估最大连接数和 TPS,然后选择适合的实例规格。​
    mqtt.2k​
    网络配置​
    ​
    ​
    私有网络​
    确保MQTT实例与NLB在同一VPC。​
    vpc01​
    子网​
    选择子网。​
    subnet01​
    安全组​
    下拉选择安全组。​
    Default​
    ​
  1. 单击下一步:确认订单。​
  1. 根据控制台指引查阅并确认相关协议。​
  1. 单击提交按钮。​
  1. 单击去控制台,查看实例创建进度。​
  • 提交购买订单后,您可以返回 MQTT 实例列表页面。购买的实例显示为初始化中,初始化完成后显示为运行中。​
(二)创建用户​
  1. 单击新创建的MQTT实例名称。​
  1. 在用户管理页签,单击创建用户按钮。​
  1. 参考下表,配置相关参数。​
  • ​
    参数​
    说明​
    取值示例​
    用户名​
    输入用户名称。​
    user01​
    角色​
    为用户选择关联的角色。​
    • 管理员:拥有 Dashboard 所有功能和资源的完全管理权限。​
    • 查看者:只能以只读的方式访问 Dashboard 的数据和配置信息。​
    管理员​
    ​
    密码​
    自定义设置用户密码。​
    • 至少包含大写字母、小写字母、数字、特殊字符(!@#$%^&*()_+-=)中的 3 种。​
    • 长度为 8~32 个字符。​
    User@123​
    描述​
    输入描述。​
    NLB-MQTT​
    ​
  1. 单击确定,完成操作。​
(三)登录Dashboard​
  1. 在实例详情页签,单击 Dashboard 地址。​
  1. 输入用户名和密码,单击登录按钮。​
(四)获取MQTT监听器的IP地址​
  • 在监听器页签,即可获取MQTT实例TCP监听器的私网IP地址。本文以192.168.1.10为例。​
步骤二:配置NLB实例​
(一)创建NLB实例​
  1. 登录NLB控制台。​
  1. 在顶部导航栏,选择目标项目和地域。​
  1. 单击创建网络型负载均衡按钮。​
  1. 参考下表,配置相关参数。​
  • ​
    参数​
    说明​
    取值示例​
    基本信息​
    ​
    ​
    地域​
    选择NLB实例所属的地域。​
    华北2(北京)​
    名称​
    输入NLB实例的名称。​
    nlb-01​
    网络配置​
    ​
    ​
    IP版本​
    选择NLB实例的私网IP地址类型。​
    IPv4​
    网络类型(IPv4)​
    选择NLB实例IPv4地址的网络类型。​
    公网​
    私有网络​
    选择NLB实例所属的私有网络。您可以选择当前账号在指定地域下的所有VPC,不包括共享VPC。​
    vpc01​
    可用区及子网​
    选择NLB实例支持的可用区,并为每个可用区指定子网、IP地址及公网IP。​
    NLB默认支持可用区多活容灾,至少需选择2个可用区。如果业务可靠性要求较高,您也可以按需选择2个以上的可用区。​
    • 子网:为NLB实例提供私网部署环境,系统会自动在该子网内创建一张网卡与NLB关联。​
    • IPv4地址:选择NLB实例IPv4地址的分配方式。实例创建后,所有分配的IPv4地址均不支持修改。​
    • 自动分配IP:系统自动为NLB关联的网卡分配3个私网IPv4地址,包括 1 个VIP和 2 个LIP。​
    • 手动分配IP:请手动输入子网范围内的IPv4地址。输入的IPv4地址作为NLB关联网卡的 VIP,系统还会自动分配 2 个LIP。​
    • 公网IP:为NLB实例提供公网能力。仅当网络类型(IPv4)为公网时需要配置该参数。​
    • 新购公网IP:该公网IP随NLB实例一同创建,默认为按实际流量计费,线路类型为BGP(多线),带宽上限为200Mbps。​
    • 可用区A​
    • subnet01 | 192.168.3.0/24​
    • 自动分配IP​
    • 新购公网IP​
    • 可用区B​
    • subnet02 | 192.168.4.0/24​
    • 自动分配IP​
    • 新购公网IP​
    安全组​
    选择NLB实例关联的安全组,请至少选择一个。​
    Default​
    ​
  1. 根据控制台指引查阅并确认相关协议。​
  1. 单击立即购买按钮,完成实例创建。​
  1. 单击去控制台按钮,查看新创建的实例。​
(二)配置服务器组​
  1. 登录NLB控制台。​
  1. 在左侧导航树,选择服务器组。​
  1. 在顶部导航栏,选择目标项目和地域。​
  1. 在左侧导航栏选择服务器组。​
  1. 单击创建服务器组按钮,参考下表配置服务器组的基本信息。​
  • ​
    参数​
    说明​
    取值示例​
    名称​
    输入服务器组的名称。​
    rsp01​
    服务器组类型​
    选择服务器组的类型。本示例选择IP类型。​
    IP类型​
    IP版本​
    后端服务器私网IP地址的协议类型。​
    IPv4​
    私有网络​
    选择服务器组所属的私有网络,需要与NLB实例所属VPC保持一致。​
    vpc01​
    后端协议​
    NLB实例转发流量到后端服务器时使用的通信协议。​
    TCP​
    调度算法​
    选择转发请求至后端服务器遵循的算法。​
    加权轮询(WRR)​
    会话保持​
    是否开启会话保持。​
    • 开启后,NLB会将来自相同源IP地址的访问请求转发到同一台后端服务器进行处理。​
    • 会话保持超时时间的取值范围为 1~3600秒。​
    关闭​
    连接优雅中断​
    是否开启连接优雅中断。​
    • 开启后,当后端服务器被删除或健康检查异常时,现有连接在连接优雅中断超时时间内能够正常传输。​
    • 连接优雅中断超时时间的取值范围为 0~900秒。​
    关闭​
    客户端地址保持​
    是否开启客户端地址保持。​
    开启后,NLB实例会携带客户端源IP地址转发请求至服务器组,后端服务器无需额外设置即可获取客户端源IP。服务器组创建后,您可以在详情页查看该信息。​
    说明​
    以下场景客户端地址保持功能不可用,您可以通过Proxy-Protocol协议获取源IP:​
    • 客户端请求与服务器组的IP版本不同时,开启客户端地址保持不生效。​
    • 服务器组类型为IP类型时,不支持开启。​
    关闭​
    Proxy-Protocol协议​
    不支持开启Proxy-Protocol协议。客户端访问请求的源IP地址经过NLB时,会被替换成NLB的IP地址,由于当前MQTT还未支持Proxy-Protocol协议,故暂时无法获取客户端真实的IP地址。若开启,则会导致流量不通。​
    关闭​
    全端口转发​
    服务器组中各后端服务器的服务端口均与监听端口相同时,可以开启全端口转发。​
    开启后,该服务器组仅支持关联已开启全端口监听的监听器,且组内后端服务器无需指定端口,NLB默认按照前端请求端口(即监听端口)转发流量至后端服务器。​
    关闭​
    ​
  1. 参考下表,配置健康检查信息。​
  • ​
    参数​
    说明​
    取值示例​
    健康检查​
    选择是否打开健康检查功能的开关。打开后,NLB能判断后端服务器状态是否正常,避免将请求转发至状态异常的后端服务器,保障服务的可用性。​
    说明​
    • 关闭健康检查可能会导致请求被转发给异常的后端服务器,为了保障业务的持续可用,不建议关闭健康检查。​
    • 健康检查会占用一定的网络资源,建议您结合业务情况,通过降低健康检查频率、增大健康检查间隔等方式降低对业务的影响。​
    开启​
    健康检查协议​
    健康检查请求的协议类型。​
    • TCP:发送SYN握手报文,以此检测后端服务器端口的状态是否正常。​
    • HTTP:发送HEAD或GET请求模拟浏览访问行为,以此检测后端服务器应用是否正常。HTTP协议特有的参数如下:​
    • 健康检查方法:选择对后端服务器进行健康检查的请求方法。​
    • GET:GET请求得到的响应同时返回响应头部和响应正文信息,要求服务器支持GET方法。​
    • HEAD:HEAD请求得到的响应仅返回响应头部信息,可以降低后端开销,要求服务器支持HEAD方法。​
    • 健康检查域名:输入健康检查的请求域名,需配置为后端服务器上真实对外提供服务的地址。如不填写,则默认使用后端服务器的私网IP地址。​
    • 健康检查路径:输入健康检查的请求路径URL,需配置为后端服务器上真实对外提供服务的地址。如不填写,则默认为/。​
    • 健康状态码:配置响应码,若收到选中类型的响应码,则表明该服务器为正常可用状态。​
    说明​
    服务器组的后端协议为TCP时,健康检查不支持UDP协议。​
    TCP​
    健康检查端口​
    配置用于健康检查的端口。​
    • 使用后端服务器端口:默认使用后端服务器的端口进行健康检查,无需额外指定。​
    • 指定特定端口:全端口转发功能开启时,只能选择该选项。端口的取值范围为 1~65535。​
    使用后端服务器端口​
    响应超时​
    配置等待健康检查响应的时间。​
    • 若在响应超时时间内未收到后端服务器返回的正确信息,则表明健康检查异常。​
    • 取值范围为1~60秒。默认超时时间为3秒。​
    3秒​
    检测间隔​
    输入执行健康检查的时间间隔。​
    • 检测间隔时间必须大于等于响应超时时间。​
    • 取值范围为3~300秒。默认间隔为10秒,指每10s对后端服务器进行一次健康检查。​
    10秒​
    健康阈值​
    开启健康健康后,输入判断后端服务器正常的健康检查次数。​
    • 对同一后端服务器连续执行指定次数的健康检查,结果均为正常时,其健康检查状态由异常变为正常。​
    • 取值范围:2~10次。默认为3次。​
    3次​
    不健康阈值​
    开启健康健康后,输入判断后端服务器异常的健康检查次数。​
    • 对同一后端服务器连续执行指定次数的健康检查,结果均为异常时,其健康检查状态由正常变为异常。​
    • 取值范围:2~10次。默认为3次。​
    3次​
    ​
  1. 单击确定按钮,完成创建。​
(三)添加MQTT监听器的IP地址​
  1. 登录NLB控制台。​
  1. 在左侧导航树,选择服务器组。​
  1. 单击服务器组rsp-01的名称。​
  1. 在服务器页签,单击添加服务器按钮。​
  1. 参考下表,配置相关参数。​
  • ​
    参数​
    说明​
    取值​
    IP地址​
    输入MQTT实例网卡的IP地址。获取方式请参考前文获取MQTT监听器的IP地址。​
    192.168.1.10​
    端口​
    输入MQTT实例TCP监听器的端口1883。​
    1883​
    权重​
    输入MQTT的权重。​
    100​
    ​
  1. 单击确定按钮,完成操作。​
(四)添加监听器​
  1. 登录NLB控制台。​
  1. 在顶部导航栏,选择目标项目和地域。​
  1. 单击目标NLB实例右侧的配置监听器按钮。​
  1. 单击添加监听器按钮,参考下表,配置相关参数。​
  • ​
    参数​
    说明​
    取值示例​
    监听器名称​
    输入监听器的名称。不填则默认为协议-端口 ,如TLS-443。​
    listener01​
    监听协议​
    选择NLB实例监听器的协议类型。本操作选择TLS。了解更多​
    TLS​
    监听端口​
    输入监听的端口。 范围为1~65535。​
    443​
    超时时间​
    设置超时时间。若连接在超时时间内没有数据传输,将自动关闭。​
    TLS监听器的超时时间取值范围为10~900秒,默认为900秒。​
    900秒​
    ​
  1. 单击下一步按钮,配置SSL证书。​
  • ​
    参数​
    说明​
    取值示例​
    证书来源​
    选择证书来源。​
    • 火山引擎证书中心SSL证书。本文以SSL证书为例。​
    • 火山引擎证书中心私有证书。​
    私有CA的证书支持作为服务器证书的功能正在邀测中,如需试用,请联系客户经理。​
    火山引擎证书中心SSL证书​
    服务器证书​
    下拉选择服务器证书。您可在证书中心购买或上传服务器证书,NLB从证书中心获取该证书并使用。​
    说明​
    NLB不对服务器证书的完整性进行校验,该校验由证书中心进行。未进行完整性校验的证书可能存在安全风险,请您仔细评估后操作。 了解更多​
    certificate-xx​
    双向认证​
    ​
    选择是否开启双向认证。双向验证指除了客户端需要验证服务器的合法性外,服务器还需要验证客户端的合法性。本文选择开启。​
    开启​
    ​
    CA证书来源​
    选择CA证书的来源。​
    私有子CA​
    CA证书​
    根据CA证书来源选择CA证书。​
    xx-certificate-xx​
    TLS安全策略​
    选择策略。​
    系统默认策略​
    tls_cipher_policy_1_2_strict​
    ​
  1. 单击下一步按钮,选择TCP协议的服务器组。​
  1. 单击下一步按钮,确认配置信息。​
  1. 单击确定按钮,完成操作。​
(五)配置网络ACL和安全组​
  • NLB实例关联的安全组和网络ACL​
  • 安全组配置示例:​
  • ​
    规则方向​
    优先级​
    策略​
    协议类型​
    端口范围​
    源地址/目的地址​
    描述​
    入方向​
    1​
    允许​
    监听协议:TCP​
    监听端口:443​
    客户端地址:0.0.0.0/0​
    放通客户端发送到NLB的访问流量​
    ​
    1​
    允许​
    ICMP​
    ALL​
    100.64.0.0/10​
    放通探测NLB实例私网IPv4地址可用性的流量​
    ​
    1​
    拒绝​
    TCP​
    443​
    不允许访问NLB的IP地址​
    拒绝指定的IP地址访问NLB​
    出方向​
    100​
    允许​
    ALL​
    ALL​
    0.0.0.0/0​
    全允许的兜底策略​
    ​
  • 网络ACL配置示例(若NLB所在子网均未关联网络ACL,则不需要为其配置网络ACL,故可以忽略本示例):​
  • ​
    规则方向​
    优先级​
    策略​
    协议​
    源地址/目的地址​
    目的端口​
    描述​
    入方向​
    1​
    允许​
    监听协议:TCP​
    0.0.0.0/0​
    监听端口​
    (443)​
    放通客户端发送到NLB的访问流量​
    ​
    2​
    允许​
    监听协议和健康检查协议​
    :均为TCP​
    MQTT实例TCP监听器私网IP地址(192.168.1.10)​
    MQTT实例TCP监听器端口和健康检查端口(均为1883)​
    放通MQTT返回给NLB的健康检查响应流量、放通MQTT返回给NLB的客户端响应流量​
    ​
    3​
    允许​
    ICMP​
    100.64.0.0/10​
    ALL​
    放通系统探测NLB私网IPv4地址可用性的流量​
    出方向​
    1​
    允许​
    ALL​
    0.0.0.0/0​
    ALL​
    放通全部IPv4流量​
    ​
  • MQTT关联的安全组和网络ACL​
  • 安全组和网络ACL不对MQTT实例网卡的流量进行校验,默认放通。​
步骤三:自有域名解析至NLB域名​
火山引擎不允许用户直接使用NLB服务提供的默认域名进行公网访问。若需通过NLB实例向公网提供服务,请使用自有域名CNAME解析到NLB域名。若无自有域名,请参见域名服务。​
说明​
本文以在火山引擎 DNS 服务中配置解析记录为例,如果您使用其他平台管理业务域名,请在对应的平台中配置解析记录。​
  1. 参考添加CNAME记录将您的业务域名解析至NLB实例的域名,并验证配置是否生效。参数说明如下表所示。​
  • ​
    参数​
    描述​
    域名​
    设置为您业务域名的主机记录(域名前缀)。例如:www。​
    记录类型​
    设置为 CNAME。​
    记录值​
    设置为 NLB 实例的域名,本文中为 nlb-2fe5ahfkoi9s059gp683y****.cn-guangzhou.nlb.volces.com。​
    说明​
    上表中未介绍的参数请保持默认值。​
    ​
    ​
验证​
(一)下载证书​
  • 下载私有证书​
  1. 单击目标私有证书右侧的下载按钮,选择存在本地的目录。​
  1. 单击存储按钮,下载完成。​
  • 该私有证书为压缩包,请使用解压工具将其解压,得到certificate_chain.pem、certificate.pem、private_key.key三个文件。​
  • 下载SSL证书根证书​
  • 单击目标SSL证书右侧的下载按钮。​
  • 单击根证书下载右侧的下载按钮,选择存在本地的目录。​
  • 单击存储按钮,下载完成。​
(二)配置MQTTx​
  1. 打开MQTTx。​
  1. 单击 New Connection 按钮。​
  1. 参考下表,输入相关参数。​
  • ​​​
  • ​
    参数​
    说明​
    取值示例​
    Name​
    输入连接的名称。​
    NLB-MQTT​
    Host​
    选择mqtts,输入已经解析到NLB的业务域名。​
    mqtts://www.example.com​
    Port​
    输入NLB实例TLS监听器的监听端口。​
    443​
    Certificate​
    证书选择CA or Self signed certificates。​
    CA or Self signed certificates​
    CA File​
    选择服务器证书根证书。​
    example.com_root.crt​
    Client Certificate File​
    选择客户端证书。本文选择certificate.pem。​
    certificate.pem​
    Client key file​
    选择证书私钥。本文private_key.key。​
    private_key.key​
    ​
  1. 其余参数保持默认值,单击Connet 按钮,显示Connected,表示连接成功。​
(三)查看dashboard​
  1. 登录MQTT控制台。​
  1. 单击目标MQTT实例名称。​
  1. 在实例详情页签,单击Dashboard 地址下的网址。​
  1. 输入用户名和密码,即可查看连接详情。​
  • ​
​
​
​
​
​
最近更新时间:2026.08.06 14:30:33
这个页面对您有帮助吗?
有用
有用
无用
无用