在以往咱们建立高可用Web应用程序时,负载均衡器是必不可少的组件。咱们都使用传统内部服务器的负载均衡器,其中咱们的应用程序在N个实例上运行,负载均衡器位于这些服务器的前面,并根据某些预约义的算法和设置向后端服务器分配负载。算法
迁移到云中,咱们须要了解如何使用Azure组件实现相同的负载平衡。云应用程序中的负载平衡须要更多的考虑,即在一些服务器前面有一个简单的负载平衡器,就像咱们能够在PaaS上托管服务同样,咱们能够为不一样的租户在不一样的实例上运行服务,也可让应用程序在分布在世界各地的多个服务器上运行。后端
出于这个缘由,Azure中有多个可用于负载平衡的组件。这些组件中的每个都有不一样的目的,咱们须要为方案选择正确的组件才能实现最佳的应用程序架构。安全
Azure负载平衡解决方案服务器
Azure中主要有3个负载平衡组件。网络
l Azure负载均衡器架构
l Azure应用程序网关负载均衡
l Azure流量管理器ide
让咱们逐一了解每一个组件,并尝试了解什么时候有效地使用每一个组件。设计
Azure负载均衡器代理
Azure负载均衡器是一种比较经典的负载均衡器,由于它能够用于平衡VM的负载,就像咱们使用传统负载均衡器与咱们的内部部署服务器同样。如今,因为Azure负载均衡器是专为云应用程序而设计,所以它还可用于平衡负载与容器和PaaS应用程序以及VM。
可是这种与传统负载均衡器的类似之处在于,Azure负载均衡器的工做原理是传输层(OSI模型的第4层)。这意味着它将在同一个Azure数据中心分发网络流量,但不能使用会话和应用层提供的传统负载平衡器的特性,由于这些是OSI模型的第7层构造。
负载均衡器配置有负载平衡规则,这些规则在端口级别工做。它接受源端口和目标端口将它们映射在一块儿,这样每当它接收到对源端口的请求时,该请求就会从链接到目标端口上的负载均衡器的一组虚拟机(或VNET中的应用程序)转发到虚拟机。
Azure负载均衡器可用于两种配置模式:
l 外部 - 公共负载平衡
l 内部 - 内部负载平衡
外部 - 公共负载平衡
在此模式下,为负载均衡器分配一个公共IP地址,以确保负载均衡器能够接受来自Internet的请求。客户端应用程序和服务将从Internet调用负载均衡器,而后根据配置的规则,它将经过VM,容器或应用程序分发传入流量。
内部 - 内部负载平衡
内部负载均衡器与外部负载均衡器基本相同,但它使用专用IP地址,所以只能从与其链接的虚拟网络中的应用程序进行调用。
Azure负载均衡器帮助咱们在基础架构级别设计高可用性,可是因为有些状况须要咱们的负载平衡组件提供更高级的功能和服务,如链接关联性,安全性,SSL终止等,咱们没法使用Azure负载均衡器来实现这些高级功能咱们须要一个能够处理OSI模型的第7层结构的解决方案,即应用程序,会话等。让咱们看看咱们如何在下一节中实现这一点。
Azure应用程序网关
Azure应用程序网关是一个7层负载均衡器,所以它能够对访问应用程序的会话进行有效负载,使应用程序网关除了提供负载均衡功能外还能提供更多的功能。如粘性会话、链接亲和力等。因为与Azure负载均衡器相比,应用程序网关具备更多的功能,所以能够配置更复杂的路由和负载平衡。应用程序网关充当反向代理服务。它终止客户端链接,并将请求转发到后端端点。。
我我的认为,若是咱们在应该使用公共负载平衡器的应用程序级别上运行工做负载,那么在更多的用例中,应用程序网关的使用比使用负载平衡器更有意义。
应用程序网关能够被认为是在第7层上运行的,并提供了比负载均衡器更多的功能。应用程序网关还可用于基于URL路由流量,这对于开发多租户应用程序很是有用,其中每一个租户都有独立的VM运行实例和URL中的租户标识符。
Azure流量管理器
到目前为止,咱们已经看到了知足数据中心内负载平衡的负载平衡解决方案。负载平衡器和应用程序网关是用于在数据中心内实现高可用性的组件。可是经过云,咱们还能够以地理上分布的方式构建咱们的应用程序。那么咱们如何平衡地理位置之间的负载。
Azure流量管理器仅用于此目的。Azure流量管理器使用DNS将请求重定向到适当的地理位置端点。流量管理器不会看到客户端和服务之间传递的流量。它只是根据最合适的端点重定向请求。地理位置端点是面向互联网的可访问公共URL。
Azure流量管理器在DNS级别工做,即它使用DNS级别配置的规则在多个区域和数据中心分配负载。客户端发出DNS请求,并根据DNS的位置,Azure Traffic Manager将找到最近的区域,并经过DNS响应将其发送回客户端。