网络 – GCP中的会话持久性HTTP/S负载均衡器未按预期工作

我已经使用其他负载平衡器多年,所以我希望GCP负载平衡器在使用会话持久性设置时以与其他负载平衡器相同的方式工作.

遗憾的是,为GCP LB中的后端启用会话持久性似乎并未将某个客户端的所有请求发送到单个后端服务器(既不使用Cookie也不使用IP会话持久性选项)

这是一个已知的错误/行为或我可以自己解决的事情吗?

我做了这个快速测试:

>我创建了一个新的HTTP LB并为其分配了一个新的外部IP.
>我已经将后端服务指向具有2个实例的实例组.
>当我的后端服务器运行apache和mod_php时,我创建了一个简单的PHP脚本(称为get_up.php)来显示服务器的IP地址(参见下面的代码)
>最后,我在一个循环中运行了一个快速的curl脚本,指向$LBIP / get_ip.php以查看发生了什么.

如果我这样做,让我们说,在Rackspace中,我总是获得与结果相同的IP,但在GCP中我看到我可以随机访问我的两个后端服务器中的任何一个.

这是我的PHP测试脚本:

<?php
$realIP = file_get_contents("http://ipecho.net/plain");
echo "My Ip is " . $realIP;
echo "\n";
?>

这是我的测试运行:

➜  ~ while true; do curl -b cookie.txt -c cookie.txt $IP/get_ip.php; sleep 1 ; done
My Ip is 35.193.16.20
My Ip is 35.193.16.20
My Ip is 35.193.16.20
My Ip is 35.193.16.20
My Ip is 104.197.18.77
My Ip is 104.197.18.77
My Ip is 104.197.18.77
My Ip is 35.193.16.20
My Ip is 104.197.18.77
My Ip is 35.193.16.20
My Ip is 35.193.16.20
My Ip is 104.197.138.72

>编辑 – 基于BillThor评论发送cookie的Curl命令.结果相同.

>编辑 – 解决方案详情.

会话持久性在与单区域实例组一起使用时效果很好.我不得不牺牲多区域实例组的使用,直到这个问题得到解决.

最佳答案
如果您使用cookie进行持久性,则需要提供一个用于卷曲的cookie罐.否则,每个请求看起来都来自新用户.尝试以下命令:

while true; do -b cookie.txt -c cookie.txt curl $IP/get_ip.php; sleep 1 ; done

转载注明原文:网络 – GCP中的会话持久性HTTP/S负载均衡器未按预期工作 - 代码日志