负载均衡服务叫 Load Balancer,它工作在 ISO 七层模型的第四层,通过分析 IP 层及传输层(TCP/UDP)的流量实现基于 "IP + 端口" 的负载均衡。
功能
负载均衡负载均衡,请参考下图(此图来自互联网):
自动探测后端主机状态负载均衡器会使用预定义的规则检测后端实例的运行状况。当探测到故障时负载均衡器会停止向该实例发送新连接。 现有连接不受影响,会一直保留到应用程序终止了请求、超时或虚机关闭为止。支持 TCP 和 HTTP 协议的探测规则,而标准版还支持 HTTPS 协议的探测规则。
负载均衡器的前端 IP 地址。通过负载均衡规则将前端公共 IP 地址端绑定到后端 VM 后,Azure 会将出站连接设定为自动转换成前端的公共 IP 地址。
负载均衡和公共负载均衡
负载均衡(Internal Load Balancer)和公共负载均衡(Public Load Balancer)的区别(此图来自互联网):
负载均衡的前端 IP 是公网 IP,是面向 Internet 的;而内部负载均衡的前端 IP 则是面向私有网络的私有 IP,并不直接与公网交互。
添加 Load Balancer 类型的资源,设置基本信息,比如下图所示:
属性了。比较常用的配置有前端 IP、后端池、运行状况探测、负载均衡规则和入站 NAT 规则:
负载均衡后端资源的接口,相关的基本配置在我们创建 Load Balancer 已经随之完成了(就是面向公网的一个 IPv4 地址):
添加到 Load Balancer 的后端池中。
支持在同一个可用性集中的虚机,所以我们要创建一个可用性集,并把所有的虚机加入到这个可用性集中(只有在创建虚机时才能加入可用性集):
也不需要公用 IP 和网络安全组(因为虚机在私有的子网中)
添加后端池
添加完成后可以看到后端池中的虚机及其状态:
负载均衡规则
负载均衡规则定义了 Load Balancer 以何种方式把用户的请求分配给后端池中的虚机:
属性","无" 表示请求可以由后端的任何一台虚机处理。除了 "无" 你还可以选择 "客户端 IP" 和 "客户端 IP 和协议"。"客户端 IP" 表示只要是来自同一个客户端 IP 地址的连续请求都由后端的同一台虚机处理;而 "客户端 IP 和协议" 则表示来自同一客户端 IP 和端口号的组合连续请求将由后端的同一台虚机处理。
登录后端虚机 nicklbvm1 了。通过类似的配置,我们可以通过 20022 端口连接到后端主机 nicklbvm2:
用户的请求了。
快速的搭建起负载均衡的基础架构。对于一些简单的应用这样的配置基本也就够用了,但是针对一些特殊的用例,比如支持 IPv6 和 HTTPS 等情况,还需要有更多针对性的配置。在后续的文章中,笔者将介绍如何创建支持 IPv6 的 Load Balancer,以及如何扩展 Load Balancer 后端的虚机池。