负载均衡器是互联网应用最重要的组件之一。其主要作用是将大量业务请求合理地分摊到多个操作单元上执行,用于解决软件架构中的高并发和高可用的问题。Oracle公有云OCI(Oracle Cloud Infrastructure)也提供了云原生的负载均衡服务,提供从一个入口点到多个服务器的自动化流量分配。
对于一个多层次的应用架构体系,通常会设计使用多层负载均衡。依据负载均衡在整个技术架构中所处位置的不同,负载均衡服务分为两种类型:
公共负载均衡服务——面向公网,通常位于技术架构的顶层,要接受来自Internet的流量。公共负载均衡器具有一个浮动公共IP地址,作为传入流量的入口点。为便于记忆,通常会将此公用IP地址与一个DNS名称相关联,用户只需使用DNS名称即可访问应用了。
私有负载均衡负载——通常位于技术架构的中间层,要接受来自上层应用组件的流量。出于安全的考虑,私有负载均衡服务与Internet是隔离的,只有其所在的VCN中的服务器可以访问。私有负载均衡器具有一个浮动私有IP地址,作为传入通信量的入口点。

图1:面向公网和内部私有两种类型的OCI负载均衡服务
后端服务器集合
每个负载均衡服务都配置有 “后端集”(Backend Set),用于将传入流量路由到位于后端的服务器。后端集是一个逻辑实体,它包括:
后端服务器的列表——连接在负载均衡器上的服务器列表,提供该服务器的IP地址和访问端口,以及权重。
负载平衡策略——包括Round Robin, Least Connections, IP Hash等多种策略。策略的选择和使用的业务要求与通讯协议有关。例如,如果通讯协议是TCP,则不适合使用Least Connections负载均衡算法;如果客户端使用了代理,则不适合使用IP Hash算法。
健康检查策略——负载均衡服务可以连续地监测后端服务器的健康状况。如果后端服务器未通过运行状况检查,则负载均衡服务会暂时停止使用该服务器。如果该服务器随后通过了运行状况检查,则负载均衡服务将其恢复到可用列表中。健康检查的方式与通信协议相关:
对于TCP协议的运行状况检查,负载均衡服务尝试与后端服务器建立TCP连接,并根据连接状态验证响应;
而对于HTTP协议的运行状况检查,则是将请求发送到位于特定URI的后端服务器,并基于返回的状态代码或实体数据(Body)验证响应。
SSL处理——为了安全,应用系统通常会要求客户端使用加密通信协议SSL访问应用。要在负载均衡服务中使用SSL,首先必须向系统中添加一个或多个证书包。证书包包括公共证书、相应的私钥和任何关联的CA证书。负载均衡服务可以配置使用三种类型的SSL处理模式:
前端SSL:在负载均衡服务上终止SSL。负载均衡服务接受来自客户端的加密通信。但是在负载均衡服务和后端服务器之间没有通信加密。
后端SSL:在负载均衡服务和后端服务器之间实现ssl。负载均衡服务不接受来自客户端服务器的加密通信。只有负载均衡服务和后端服务器之间的通信被加密。
端到端SSL:负载均衡服务可以接受来自客户端的ssl加密通信,并加密到后端服务器的通信。
会话持久性配置——是一种将来自某个客户端的所有请求定向到唯一一个后端服务器的方法。许多应用都会要求负载均衡器具备会话保持能力。换句话说,哪个后端服务器处理了某个客户端端第一个业务请求,则该客户端随后所有的请求都必须由它处理。会话持久性支持两种配置:
应用级Cookie粘滞——当后端服务器发送包含“set cookie”属性的响应报文头时,负载均衡服务将激活应用级Cookie会话持久性。
负载均衡器Cookie粘滞——由负载均衡服务将Cookie插入到HTTP响应报文中。
负载均衡服务的端口侦听
每个负载均衡服务需配置有至少一个或多个侦听器(Listener),每个侦听器必须被关联到一个后端集。
侦听器是一个逻辑实体,用于监听负载均衡服务上的入站请求。针对不同的TCP、HTTP和HTTPS通信协议,必须为每个通信类型配置至少一个侦听器。如果使用SSL加密协议,需要为每个侦听器关联配置一个SSL证书包。SSL侦听器端口通常是443和8443。
侦听器上还可以关联针对入站请求的路由策略以及报文处理规则集。
制定负载均衡器的路由策略
负载均衡服务的路由策略决定了如何将入站HTTP/s请求路由到哪一个后端集。可定义的路由策略包括:
指定虚拟主机名——如果负载均衡器后端连接多个应用,架构设计者可以不必为每一个应用都定义一个独立的负载均衡器,而是可以为每个应用定义一个后端集及其关联的侦听器,并且为每个侦听器指定一个虚拟主机名。同时,在DNS中设置这些虚拟主机名都指向相同的负载均衡器浮动IP地址。这样,客户端访问不同的虚拟主机名,负载均衡器就会将请求路由到不同的应用系统。未指定虚拟主机名的侦听器称为某端口的默认侦听器,只具有低优先级。
指定路径路由规则——如果应用系统拥有多个访问端点或内容类型,由URI路径加以区分,例如,/admin/,/dat/,/video/ 等等,则可以使用“路径路由规则”将入站请求路由到指定后端集。“路径路由规则”是一个字符串,负载均衡器尝试将入站URI匹配这个字符串以决定路由到哪里。
混合方式——将虚拟主机名和路径路由规则结合使用,可以定义更加灵活的路由策略。
负载均衡器的规则集(Rule Set)
负载均衡器还可以对流过的HTTP报文执行一定的操作。执行的操作被预先定义在一个规则集中。规则集被附加在负载均衡服务的一个或多个侦听器上。当请求报文到达负载均衡器时,负载均衡器将按照规则集中的规则对报文加以处理。有三种规则:
访问控制规则——按照请求的来源IP(CIDR)限制对后端集的访问。如果客户端的IP不在范围之内,则请求将被负载均衡服务拒绝。
访问方法规则HTTP ——按照HTTP 方法限制对后端集的访问。如果客户端使用的HTTP方法不被允许,则请求将被负载均衡服务拒绝,并返回“405-方法不被允许”的错误报文
请求及响应报文头规则——负载均衡器按照规则增加/修改/删除HTTP请求及响应报文头。例如,在响应报文中添加“strict-transport-security”头,以确保对网站的访问仅限于HTTPS。
为实现负载均衡器的高可用性,OCI为每个负载均衡服务自动配置主负载均衡服务和备用负载均衡服务,并且会为它们分配一个浮动IP地址。当主负载均衡服务发生故障时,浮动IP地址将自动切换到备用负载均衡服务。
公共负载均衡服务需要在VCN中配置一个区域公共子网(Regional Subnet),或者2个AD级公共子网。公共负载均衡服务被分配一个浮动的公共IP地址。
私有负载均衡服务只需要在VCN中配置一个子网,被分配一个浮动的私有IP地址。

图2:在OCI区域子网中,负载均衡服务天然具备高可用性
OCI提供开箱即用的关于负载均衡服务的度量指标。例如“激活连接数”,“接收/发送的字节数”,“HttpResponses502数量”等
利用这些指标,用户可以监控到负载均衡服务网络连接的数量和类型,以及负载均衡服务处理的数据量,分析服务器返回的HTTP响应数据。用户也可以使用度量数据来诊断负载均衡服务和客户端问题。
OCI提供了原生的负载均衡服务,将HTTP/s或TCP流量分流到后端的OCI计算实例上。出于安全的考虑,负载均衡服务可以分为公共的和私有的两种类型。负载均衡服务包含后端集合以及侦听器,同时可以在其上定义路由规则集合与报文处理规则集合。负载均衡服务是OCI的受管服务,提供高可用性以及监控指标,用户只需要配置即可使用。

作者简介
郭钧,甲骨文云计算首席咨询顾问,专注于甲骨文云计算相关产品和解决方案。具有超过15年的咨询服务经验。熟悉电信、金融、交通、制造等行业。您可以通过jun.guo@oracle.com与他联系。
扫描二维码或点击阅读原文
快速预约精选云解决方案演示






