七层负载均衡器通过解析http/https协议内容,将流量分发到后端不同的服务器或应用实例。配置时需在负载均衡器上定义监听器(listener)以处理入站连接,创建健康检查机制确保后端服务可用,并设置转发规则(rule)根据url路径、域名或请求头将请求路由至具体的目标组(target group)。这种架构允许基于内容的智能路由,实现动静分离和微服务架构的接入。

如何配置基于域名的虚拟主机路由
配置基于域名的路由需要在负载均衡器上启用SNI(Server Name Indication)支持,并为每个域名创建独立的监听器和转发规则。当客户端发起HTTPS请求时,负载均衡器会提取Host头部或SNI字段,匹配预设的规则,然后将请求转发到对应的后端服务器集群。这种方法使得单个负载均衡器IP地址可以托管多个网站或服务,无需为每个域名分配独立IP。

listener = {
port: 443,
protocol: 'HTTPS',
ssl_policy: 'TLSv1.2',
certificates: [
{ domain: 'api.example.com', cert_id: 'cert-001' },
{ domain: 'www.example.com', cert_id: 'cert-002' }
]
}
rules = [
{
condition: { host_header: 'api.example.com' },
action: { type: 'forward', target_group: 'tg-api-v1' }
},
{
condition: { host_header: 'www.example.com' },
action: { type: 'forward', target_group: 'tg-web-static' }
}
]
上述配置展示了两个域名的路由逻辑。当请求到达端口443时,系统检查Host头部。如果Host是api.example.com,请求被转发到tg-api-v1目标组;如果是www.example.com,则转发到tg-web-static。这种配置依赖于负载均衡器正确解析HTTP头部,并确保后端服务器能接受来自负载均衡器的代理请求。
如何实现基于URL路径的内容分发
在同一个域名下,可以通过配置基于路径的路由规则来实现不同功能模块的分发。例如,将/api开头的请求转发到后端API集群,而将静态资源请求转发到CDN或静态服务器。这需要负载均衡器支持路径匹配规则,通常使用正则表达式或前缀匹配。配置时需明确优先级,因为规则是按顺序执行的,第一个匹配的规则生效。

path_rules = [
{
priority: 1,
condition: { path_pattern: '/api/v1/*' },
action: { type: 'forward', target_group: 'tg-api-backend' }
},
{
priority: 2,
condition: { path_pattern: '/static/*' },
action: { type: 'forward', target_group: 'tg-cdn-origin' }
},
{
priority: 3,
condition: { path_pattern: '/' },
action: { type: 'forward', target_group: 'tg-default-app' }
}
]
该配置定义了三个优先级的路径规则。最高优先级的/api/v1/*匹配所有以该路径开头的请求,将其转发至后端API服务。次优先级的/static/*匹配静态资源,转发至CDN源站。默认规则/捕获所有其他未匹配的请求,转发至默认应用。这种分层路由策略确保了请求能被精确引导至正确的处理单元,同时提供了默认的故障转移或兜底行为。
健康检查失败时负载均衡器如何处理流量
当后端服务器的健康检查连续失败达到阈值时,负载均衡器会将该服务器从目标组中暂时移除,停止向其发送新请求,直到健康检查恢复成功。这一机制确保了用户请求不会被发送到不可用的后端节点,从而维持服务的整体可用性。配置健康检查时需指定检查路径、间隔时间、超时时间和成功/失败阈值,这些参数直接影响故障检测和恢复的速度。










