我想配置Google Can Load balancer ,以便:
-
对端口443的所有边缘请求在负载均衡器处终止SSL并路由到托管实例组中的端口8080
-
对端口80的所有边缘请求路由到托管实例组中的端口8081,然后该托管实例组将向强制SSL的HTTPS服务发送307响应 .
我有:
Global forwading rules
-
全局转发规则STATIC_IP:80 - > httpsreditect-target-proxy
-
全局转发规则STATIC_IP:443 - > webapp-target-proxy
Target proxies
-
httpsreditect-target-proxy - > httpredirect_urlmap
-
webapp-target-proxy - > webapp_urlmap
URL Maps
-
httpredirect_urlmap - > redirect_backend(实例池中的8081)
-
webapp_urlmap - > webapp_backend(实例池中为8080)
这不起作用 .
使用此设置,如果我将redirect_backend端口设置为8081,则webapp_backend端口也会更改为8081.同样,如果我将webapp_backend端口设置为8080,则redirect_backend端口设置为8080 .
Is it possible to route traffic based on port to different backends? 选项是他们在GUI中,没有验证错误,感觉应该是可能的但是当设置后端端口时,所有后端都被设置为同一个端口?
我知道将HAProxy放在节点上是一种解决方案并反向代理那里的微服务,但我宁愿让Google Cloud Application Loadbalancer终止SSL作为使用f1-micro实例 .
1 回答
这样做的关键是https://cloud.google.com/compute/docs/load-balancing/http/backend-service#restrictions_and_guidance上的一个容易错过的片段 .
初始设置非常简单,因此下面是参考 .
基于我的配置中的示例:
托管实例组
在端口80上运行的主要webapp
在端口8081上运行的HTTP重定向服务
防火墙
确保您拥有防火墙规则,允许Google通过 Health 检查访问您的服务:
Health 检查
确保为两个服务检查正确的内部端口设置了 Health 检查 .
配置命名端口
如果您的实例组在要在公共负载均衡器下公开的不同端口上运行多个微服务,则看起来是关键 .
将
INSTANCE_GROUP_NAME
,REGION
和named-ports
替换为您的服务的正确值 .创建负载均衡器后端
确保
--port-name
与上一步中的正确命名端口匹配 .为两个服务创建URL映射
确保
--default-service
使用上一步中配置的值 .创建目标代理
我们为webapp创建一个https目标代理,以在负载均衡器处终止SSL .
重定向服务:
全球转发规则
最后一步是创建全局转发规则
我遇到的问题
确保正确配置防火墙以允许设置运行状况检查和运行状况检查 .
如果获得intermitent
502
错误,请检查 Cloud 控制台中的loadbalencers报告 Health 实例其他说明
Because two url maps are needed you are charged for two load balancers looking at my billing info . 端口80和端口443都使用自己的负载均衡器
没有't look like it'可以使用网络负载均衡器来终止SSL和服务HTTP,这可以在
AWS
上完成