我有两个在不同区域(西部和东部)上运行的Google云实例。每个实例都有自己的数据库。我正在使用Google Load balancer
基于客户端的IP address
路由流量(这是Google负载平衡器在网络负载平衡内部进行的操作)。
例如,鲍勃(Bob)正在向东部地区发出请求,GLB
会将请求仅路由到东部地区节点。同样,戴夫(Dave)向西部地区发出请求,GLB
会将请求路由到西部地区节点。
场景:
1. Bob刚注册,并将新条目添加到East
区域数据库中。
2. Bob尝试获取他的个人资料,但是请求以某种方式到达了West
(Bob现在正在使用VPN)区域,并且没有可用信息。
是否可以自定义GLB
?如果是,那么我可以通过在负载均衡器上应用一致性哈希(使用userId作为哈希函数)来解决此问题,这将确保来自Bob
的请求将始终转到East
区域。
答案 0 :(得分:1)
您可以使用HTTP负载平衡器选项:会话亲和力和客户端IP亲和力。
任何方法都存在细微问题,请仔细阅读文档。对于NAT之后的客户(机场,酒店,星巴克等)来说,最大的问题是。对于NAT后面的所有客户端,它们的公共IP地址是相同的,因此,所有流量都将流到同一后端,以实现基于客户端IP的相似性。我建议使用Cookie。
会话关联性使用客户端IP或生成的Cookie来做出流量决策。这样可以将流量路由到相同的后端。
客户端IP相似性基于客户端IP地址的哈希将来自相同客户端IP地址的请求定向到相同的后端实例。