Softlayer 的本地负载平衡 - 未分发 HTTPS 请求
Softlayer's Local Load Balancing - HTTPS requests not being distributed
我正在使用 Softlayer 的本地负载平衡:https://www.ibm.com/cloud-computing/bluemix/load-balancing
当前设置是两台服务器,HTTP 和 HTTPS 流量按 50/50 分配。该方法是循环法,没有持久性设置。
对于 HTTP 流量,请求在两个服务器之间正确交替。负载平衡器中的变化会立即得到。
问题出在 HTTPS 上:
- 对于 HTTPs 流量,只有一台服务器被命中 - 它是随机选择的
并且所有后续请求都坚持下去,永远不会去
其他服务器。
- 即使在负载平衡器中禁用了同一台服务器,请求也会继续发送。这种行为将永远持续下去。
- 如果我停止发出请求并等待大约一分钟然后继续,另一个已启用的服务器将被正确拾取。
我把测试日志放在这个问题的底部来演示这个行为。它包含服务器名称和生成的时间戳(以确保页面未被缓存)。
棘手的部分来了。在 Firefox 中,行为与描述的相同,但是当我按 CTRL+F5 时,我会转到另一台服务器。这意味着缓存了一些东西,而不是页面本身(如时间戳所示)。我没有在 header 或 cookie 中看到任何可疑的东西。另外,我不确定哪种 header 会使 LB 将流量重定向到单个服务器。
执行此测试时防火墙被禁用。跟踪请求在负载均衡器上结束(实际服务器的 IP 永远不会提供给客户端)。
负载均衡器设置
HEADERS
获取 https://test.devcorp.kangogift.com/login?ReturnUrl=%2F HTTP/1.1
主持人:test.devcorp.kangogift.com
连接:keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q= 0.8
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: cs,en;q=0.8,en-US;q=0.6
饼干:ASP.NET_SessionId=dyvydeine15qe5wj5yikhmkf; __utma=212613646.1973225437.1495466549.1495570138.1495575175.4; __utmc=212613646; __utmz=212613646.1495466549.1.1.utmcsr=(直接)|utmccn=(直接)|utmcmd=(none); .AspNet.Cookie.v1=51ToSLNxI2eb0p1v106S0-qjXIEJd7SMmZrr9KV2UPcSvGuLatyM2UBWbP3Bh42C0NDZXpw5zjnNXHvXtzY1ju2mxihZOG25oQMvmK5A6oPwZiG8sq2bKp3iYAiZ3PEEo79XrOBfoPl3G0s0RAwLWCThqv6dYw7OBEZ-cpKuxKnRnpOH1lCDrnHj73BEmMop-GVVNxkIFbVhbEw16HZWWiNQC1EHBu9bl2yOEG8EI9z-gvVRmRk1llUEi5y9muivk8lwhatSlT4t64YAsnBhvCLVYTkqfJA41G9yDIzLIh1zTIMrgEbCAGsleFaWtcD8zX0KJeM2N4-NwQ9hxRRlK16IHKcOChx5XlJmQL0yd5aDIogjjCejYCWkhs_aM-H6HrGM0CpW1erIPDi7AIwUTlkZP4ZVI0OjCnmwEJ2fqmyL1JkGGDkJHi4sFUGcxxKYvtryJSPloOvuXBhWUVQ6ew
X-CookiesOK:我明确接受所有 cookie
HTTP/1.1 200 行
Cache-Control: 私人
Content-Type: text/html;字符集=utf-8
Content-Encoding:gzip
变化:Accept-Encoding
服务器:Microsoft-IIS/10.0
X-AspNetMvc-Version:5.2
X-AspNet-Version:4.0.30319
X-Powered-By: ASP.NET
P3P: policyref="http://www.****.com/privacy",CP="CURa ADMa DEVa TAIa CONa OUR DELa BUS IND PHY ONL UNI PUR COM NAV DEM STA"
日期:2017 年 5 月 26 日星期五 19:59:29 GMT
Content-Length: 7405
测试结果:
---- HTTP测试20次----
服务器:SERVER2,时间:5/26/2017 11:30:47上午
服务器:SERVER1,时间:5/26/2017 11:30:33 AM
服务器:SERVER2,时间:5/26/2017 11:30:49 AM
服务器:SERVER1,时间:5/26/2017 11:30:34 AM
服务器:SERVER2,时间:5/26/2017 11:30:50 AM
服务器:SERVER1,时间:5/26/2017 11:30:35 AM
服务器:SERVER2,时间:5/26/2017 11:30:51 AM
服务器:SERVER1,时间:5/26/2017 11:30:37 AM
服务器:SERVER2,时间:5/26/2017 11:30:53 AM
服务器:SERVER1,时间:5/26/2017 11:30:38 AM
服务器:SERVER2,时间:5/26/2017 11:30:54 AM
服务器:SERVER1,时间:5/26/2017 11:30:39 AM
服务器:SERVER2,时间:5/26/2017 11:30:55 AM
服务器:SERVER1,时间:5/26/2017 11:30:40 AM
服务器:SERVER2,时间:5/26/2017 11:30:56 AM
服务器:SERVER1,时间:5/26/2017 11:30:42 AM
服务器:SERVER2,时间:5/26/2017 11:30:58 AM
服务器:SERVER1,时间:5/26/2017 11:30:43 AM
服务器:SERVER2,时间:5/26/2017 11:30:59 AM
服务器:SERVER1,时间:5/26/2017 11:30:44 AM
服务器:SERVER2,时间:5/26/2017 11:31:00 AM
---在 LB 上禁用服务器 SERVER1---
----HTTP测试20次----
服务器:SERVER2,时间:5/26/2017 11:43:39上午
服务器:SERVER2,时间:5/26/2017 11:43:40 AM
服务器:SERVER2,时间:5/26/2017 11:43:41 AM
服务器:SERVER2,时间:5/26/2017 11:43:41 AM
服务器:SERVER2,时间:5/26/2017 11:43:42 AM
服务器:SERVER2,时间:5/26/2017 11:43:43 AM
服务器:SERVER2,时间:5/26/2017 11:43:43 AM
服务器:SERVER2,时间:5/26/2017 11:43:44 AM
服务器:SERVER2,时间:5/26/2017 11:43:45 AM
服务器:SERVER2,时间:5/26/2017 11:43:45 AM
服务器:SERVER2,时间:5/26/2017 11:43:46 AM
服务器:SERVER2,时间:5/26/2017 11:43:46 AM
服务器:SERVER2,时间:5/26/2017 11:43:47 AM
服务器:SERVER2,时间:5/26/2017 11:43:48 AM
服务器:SERVER2,时间:5/26/2017 11:43:48 AM
服务器:SERVER2,时间:5/26/2017 11:43:49 AM
服务器:SERVER2,时间:5/26/2017 11:43:50 AM
服务器:SERVER2,时间:5/26/2017 11:43:50 AM
服务器:SERVER2,时间:5/26/2017 11:43:51 AM
服务器:SERVER2,时间:5/26/2017 11:43:52 AM
服务器:SERVER2,时间:5/26/2017 11:43:52 AM
---两台服务器都在 LB 上启用---
---- HTTPS测试20次----
服务器:SERVER1,时间:5/26/2017 11:34:22上午
服务器:SERVER1,时间:5/26/2017 11:34:23 AM
服务器:SERVER1,时间:5/26/2017 11:34:24 AM
服务器:SERVER1,时间:5/26/2017 11:34:24 AM
服务器:SERVER1,时间:5/26/2017 11:34:25 AM
服务器:SERVER1,时间:5/26/2017 11:34:25 AM
服务器:SERVER1,时间:5/26/201711:34:26上午
服务器:SERVER1,时间:5/26/2017 11:34:27 AM
服务器:SERVER1,时间:5/26/2017 11:34:27 AM
服务器:SERVER1,时间:5/26/2017 11:34:28 AM
服务器:SERVER1,时间:5/26/2017 11:34:29 AM
服务器:SERVER1,时间:5/26/2017 11:34:29 AM
服务器:SERVER1,时间:5/26/2017 11:34:30 AM
服务器:SERVER1,时间:5/26/2017 11:34:30 AM
服务器:SERVER1,时间:5/26/2017 11:34:31 AM
服务器:SERVER1,时间:5/26/2017 11:34:32 AM
服务器:SERVER1,时间:5/26/2017 11:34:32 AM
服务器:SERVER1,时间:5/26/2017 11:34:33 AM
服务器:SERVER1,时间:5/26/2017 11:34:34 AM
服务器:SERVER1,时间:5/26/2017 11:34:34 AM
服务器:SERVER1,时间:5/26/2017 11:34:35 AM
---在 LB 上禁用服务器 SERVER1---
----HTTPS测试20次----
服务器:SERVER1,时间:5/26/2017 11:35:01上午
服务器:SERVER1,时间:5/26/2017 11:35:01 AM
服务器:SERVER1,时间:5/26/2017 11:35:02 AM
服务器:SERVER1,时间:5/26/2017 11:35:03 AM
服务器:SERVER1,时间:5/26/2017 11:35:03 AM
服务器:SERVER1,时间:5/26/2017 11:35:04 AM
服务器:SERVER1,时间:5/26/2017 11:35:05 AM
服务器:SERVER1,时间:5/26/2017 11:35:05 AM
服务器:SERVER1,时间:5/26/2017 11:35:06 AM
服务器:SERVER1,时间:5/26/2017 11:35:06 AM
服务器:SERVER1,时间:5/26/2017 11:35:07 AM
服务器:SERVER1,时间:5/26/2017 11:35:08 AM
服务器:SERVER1,时间:5/26/2017 11:35:08 AM
服务器:SERVER1,时间:5/26/2017 11:35:09 AM
服务器:SERVER1,时间:5/26/2017 11:35:10 AM
服务器:SERVER1,时间:5/26/2017 11:35:10 AM
服务器:SERVER1,时间:5/26/2017 11:35:11 AM
服务器:SERVER1,时间:5/26/2017 11:35:12 AM
服务器:SERVER1,时间:5/26/2017 11:35:12 AM
服务器:SERVER1,时间:5/26/2017 11:35:13 AM
服务器:SERVER1,时间:5/26/2017 11:35:13 AM
----延迟1分钟----
----HTTPS测试20次----
服务器:SERVER2,时间:5/26/2017 11:36:32上午
服务器:SERVER2,时间:5/26/2017 11:36:33 AM
服务器:SERVER2,时间:5/26/2017 11:36:34 AM
服务器:SERVER2,时间:5/26/2017 11:36:34 AM
服务器:SERVER2,时间:5/26/2017 11:36:35 AM
服务器:SERVER2,时间:5/26/2017 11:36:36 AM
服务器:SERVER2,时间:5/26/2017 11:36:36 AM
服务器:SERVER2,时间:5/26/2017 11:36:37 AM
服务器:SERVER2,时间:5/26/2017 11:36:37 AM
服务器:SERVER2,时间:5/26/2017 11:36:38 AM
服务器:SERVER2,时间:5/26/2017 11:36:39 AM
服务器:SERVER2,时间:5/26/2017 11:36:39 AM
服务器:SERVER2,时间:5/26/2017 11:36:40 AM
服务器:SERVER2,时间:5/26/2017 11:36:41 AM
服务器:SERVER2,时间:5/26/2017 11:36:41 AM
服务器:SERVER2,时间:5/26/2017 11:36:42 AM
服务器:SERVER2,时间:5/26/2017 11:36:43 AM
服务器:SERVER2,时间:5/26/2017 11:36:43 AM
服务器:SERVER2,时间:5/26/2017 11:36:44 AM
服务器:SERVER2,时间:5/26/2017 11:36:44 AM
服务器:SERVER2,时间:5/26/2017 11:36:45 AM
预感,可能是因为 HTTPS 保持某种状态,所以出于性能原因,它可能停留在一台服务器上,或者负载平衡器不太智能,只能在端口 443 和 [=12 中看到持久的 TCP 连接=] 断开连接(直到您在浏览器上等待几分钟,连接超时)。
我正在使用 Softlayer 的本地负载平衡:https://www.ibm.com/cloud-computing/bluemix/load-balancing
当前设置是两台服务器,HTTP 和 HTTPS 流量按 50/50 分配。该方法是循环法,没有持久性设置。
对于 HTTP 流量,请求在两个服务器之间正确交替。负载平衡器中的变化会立即得到。
问题出在 HTTPS 上:
- 对于 HTTPs 流量,只有一台服务器被命中 - 它是随机选择的 并且所有后续请求都坚持下去,永远不会去 其他服务器。
- 即使在负载平衡器中禁用了同一台服务器,请求也会继续发送。这种行为将永远持续下去。
- 如果我停止发出请求并等待大约一分钟然后继续,另一个已启用的服务器将被正确拾取。
我把测试日志放在这个问题的底部来演示这个行为。它包含服务器名称和生成的时间戳(以确保页面未被缓存)。
棘手的部分来了。在 Firefox 中,行为与描述的相同,但是当我按 CTRL+F5 时,我会转到另一台服务器。这意味着缓存了一些东西,而不是页面本身(如时间戳所示)。我没有在 header 或 cookie 中看到任何可疑的东西。另外,我不确定哪种 header 会使 LB 将流量重定向到单个服务器。
执行此测试时防火墙被禁用。跟踪请求在负载均衡器上结束(实际服务器的 IP 永远不会提供给客户端)。
负载均衡器设置
HEADERS
获取 https://test.devcorp.kangogift.com/login?ReturnUrl=%2F HTTP/1.1 主持人:test.devcorp.kangogift.com 连接:keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q= 0.8 Accept-Encoding: gzip, deflate, sdch, br Accept-Language: cs,en;q=0.8,en-US;q=0.6 饼干:ASP.NET_SessionId=dyvydeine15qe5wj5yikhmkf; __utma=212613646.1973225437.1495466549.1495570138.1495575175.4; __utmc=212613646; __utmz=212613646.1495466549.1.1.utmcsr=(直接)|utmccn=(直接)|utmcmd=(none); .AspNet.Cookie.v1=51ToSLNxI2eb0p1v106S0-qjXIEJd7SMmZrr9KV2UPcSvGuLatyM2UBWbP3Bh42C0NDZXpw5zjnNXHvXtzY1ju2mxihZOG25oQMvmK5A6oPwZiG8sq2bKp3iYAiZ3PEEo79XrOBfoPl3G0s0RAwLWCThqv6dYw7OBEZ-cpKuxKnRnpOH1lCDrnHj73BEmMop-GVVNxkIFbVhbEw16HZWWiNQC1EHBu9bl2yOEG8EI9z-gvVRmRk1llUEi5y9muivk8lwhatSlT4t64YAsnBhvCLVYTkqfJA41G9yDIzLIh1zTIMrgEbCAGsleFaWtcD8zX0KJeM2N4-NwQ9hxRRlK16IHKcOChx5XlJmQL0yd5aDIogjjCejYCWkhs_aM-H6HrGM0CpW1erIPDi7AIwUTlkZP4ZVI0OjCnmwEJ2fqmyL1JkGGDkJHi4sFUGcxxKYvtryJSPloOvuXBhWUVQ6ew X-CookiesOK:我明确接受所有 cookie
HTTP/1.1 200 行 Cache-Control: 私人 Content-Type: text/html;字符集=utf-8 Content-Encoding:gzip 变化:Accept-Encoding 服务器:Microsoft-IIS/10.0 X-AspNetMvc-Version:5.2 X-AspNet-Version:4.0.30319 X-Powered-By: ASP.NET P3P: policyref="http://www.****.com/privacy",CP="CURa ADMa DEVa TAIa CONa OUR DELa BUS IND PHY ONL UNI PUR COM NAV DEM STA" 日期:2017 年 5 月 26 日星期五 19:59:29 GMT Content-Length: 7405
测试结果:
---- HTTP测试20次----
服务器:SERVER2,时间:5/26/2017 11:30:47上午 服务器:SERVER1,时间:5/26/2017 11:30:33 AM 服务器:SERVER2,时间:5/26/2017 11:30:49 AM 服务器:SERVER1,时间:5/26/2017 11:30:34 AM 服务器:SERVER2,时间:5/26/2017 11:30:50 AM 服务器:SERVER1,时间:5/26/2017 11:30:35 AM 服务器:SERVER2,时间:5/26/2017 11:30:51 AM 服务器:SERVER1,时间:5/26/2017 11:30:37 AM 服务器:SERVER2,时间:5/26/2017 11:30:53 AM 服务器:SERVER1,时间:5/26/2017 11:30:38 AM 服务器:SERVER2,时间:5/26/2017 11:30:54 AM 服务器:SERVER1,时间:5/26/2017 11:30:39 AM 服务器:SERVER2,时间:5/26/2017 11:30:55 AM 服务器:SERVER1,时间:5/26/2017 11:30:40 AM 服务器:SERVER2,时间:5/26/2017 11:30:56 AM 服务器:SERVER1,时间:5/26/2017 11:30:42 AM 服务器:SERVER2,时间:5/26/2017 11:30:58 AM 服务器:SERVER1,时间:5/26/2017 11:30:43 AM 服务器:SERVER2,时间:5/26/2017 11:30:59 AM 服务器:SERVER1,时间:5/26/2017 11:30:44 AM 服务器:SERVER2,时间:5/26/2017 11:31:00 AM
---在 LB 上禁用服务器 SERVER1---
----HTTP测试20次----
服务器:SERVER2,时间:5/26/2017 11:43:39上午 服务器:SERVER2,时间:5/26/2017 11:43:40 AM 服务器:SERVER2,时间:5/26/2017 11:43:41 AM 服务器:SERVER2,时间:5/26/2017 11:43:41 AM 服务器:SERVER2,时间:5/26/2017 11:43:42 AM 服务器:SERVER2,时间:5/26/2017 11:43:43 AM 服务器:SERVER2,时间:5/26/2017 11:43:43 AM 服务器:SERVER2,时间:5/26/2017 11:43:44 AM 服务器:SERVER2,时间:5/26/2017 11:43:45 AM 服务器:SERVER2,时间:5/26/2017 11:43:45 AM 服务器:SERVER2,时间:5/26/2017 11:43:46 AM 服务器:SERVER2,时间:5/26/2017 11:43:46 AM 服务器:SERVER2,时间:5/26/2017 11:43:47 AM 服务器:SERVER2,时间:5/26/2017 11:43:48 AM 服务器:SERVER2,时间:5/26/2017 11:43:48 AM 服务器:SERVER2,时间:5/26/2017 11:43:49 AM 服务器:SERVER2,时间:5/26/2017 11:43:50 AM 服务器:SERVER2,时间:5/26/2017 11:43:50 AM 服务器:SERVER2,时间:5/26/2017 11:43:51 AM 服务器:SERVER2,时间:5/26/2017 11:43:52 AM 服务器:SERVER2,时间:5/26/2017 11:43:52 AM
---两台服务器都在 LB 上启用---
---- HTTPS测试20次----
服务器:SERVER1,时间:5/26/2017 11:34:22上午 服务器:SERVER1,时间:5/26/2017 11:34:23 AM 服务器:SERVER1,时间:5/26/2017 11:34:24 AM 服务器:SERVER1,时间:5/26/2017 11:34:24 AM 服务器:SERVER1,时间:5/26/2017 11:34:25 AM 服务器:SERVER1,时间:5/26/2017 11:34:25 AM 服务器:SERVER1,时间:5/26/201711:34:26上午 服务器:SERVER1,时间:5/26/2017 11:34:27 AM 服务器:SERVER1,时间:5/26/2017 11:34:27 AM 服务器:SERVER1,时间:5/26/2017 11:34:28 AM 服务器:SERVER1,时间:5/26/2017 11:34:29 AM 服务器:SERVER1,时间:5/26/2017 11:34:29 AM 服务器:SERVER1,时间:5/26/2017 11:34:30 AM 服务器:SERVER1,时间:5/26/2017 11:34:30 AM 服务器:SERVER1,时间:5/26/2017 11:34:31 AM 服务器:SERVER1,时间:5/26/2017 11:34:32 AM 服务器:SERVER1,时间:5/26/2017 11:34:32 AM 服务器:SERVER1,时间:5/26/2017 11:34:33 AM 服务器:SERVER1,时间:5/26/2017 11:34:34 AM 服务器:SERVER1,时间:5/26/2017 11:34:34 AM 服务器:SERVER1,时间:5/26/2017 11:34:35 AM
---在 LB 上禁用服务器 SERVER1---
----HTTPS测试20次----
服务器:SERVER1,时间:5/26/2017 11:35:01上午 服务器:SERVER1,时间:5/26/2017 11:35:01 AM 服务器:SERVER1,时间:5/26/2017 11:35:02 AM 服务器:SERVER1,时间:5/26/2017 11:35:03 AM 服务器:SERVER1,时间:5/26/2017 11:35:03 AM 服务器:SERVER1,时间:5/26/2017 11:35:04 AM 服务器:SERVER1,时间:5/26/2017 11:35:05 AM 服务器:SERVER1,时间:5/26/2017 11:35:05 AM 服务器:SERVER1,时间:5/26/2017 11:35:06 AM 服务器:SERVER1,时间:5/26/2017 11:35:06 AM 服务器:SERVER1,时间:5/26/2017 11:35:07 AM 服务器:SERVER1,时间:5/26/2017 11:35:08 AM 服务器:SERVER1,时间:5/26/2017 11:35:08 AM 服务器:SERVER1,时间:5/26/2017 11:35:09 AM 服务器:SERVER1,时间:5/26/2017 11:35:10 AM 服务器:SERVER1,时间:5/26/2017 11:35:10 AM 服务器:SERVER1,时间:5/26/2017 11:35:11 AM 服务器:SERVER1,时间:5/26/2017 11:35:12 AM 服务器:SERVER1,时间:5/26/2017 11:35:12 AM 服务器:SERVER1,时间:5/26/2017 11:35:13 AM 服务器:SERVER1,时间:5/26/2017 11:35:13 AM
----延迟1分钟----
----HTTPS测试20次----
服务器:SERVER2,时间:5/26/2017 11:36:32上午 服务器:SERVER2,时间:5/26/2017 11:36:33 AM 服务器:SERVER2,时间:5/26/2017 11:36:34 AM 服务器:SERVER2,时间:5/26/2017 11:36:34 AM 服务器:SERVER2,时间:5/26/2017 11:36:35 AM 服务器:SERVER2,时间:5/26/2017 11:36:36 AM 服务器:SERVER2,时间:5/26/2017 11:36:36 AM 服务器:SERVER2,时间:5/26/2017 11:36:37 AM 服务器:SERVER2,时间:5/26/2017 11:36:37 AM 服务器:SERVER2,时间:5/26/2017 11:36:38 AM 服务器:SERVER2,时间:5/26/2017 11:36:39 AM 服务器:SERVER2,时间:5/26/2017 11:36:39 AM 服务器:SERVER2,时间:5/26/2017 11:36:40 AM 服务器:SERVER2,时间:5/26/2017 11:36:41 AM 服务器:SERVER2,时间:5/26/2017 11:36:41 AM 服务器:SERVER2,时间:5/26/2017 11:36:42 AM 服务器:SERVER2,时间:5/26/2017 11:36:43 AM 服务器:SERVER2,时间:5/26/2017 11:36:43 AM 服务器:SERVER2,时间:5/26/2017 11:36:44 AM 服务器:SERVER2,时间:5/26/2017 11:36:44 AM 服务器:SERVER2,时间:5/26/2017 11:36:45 AM
预感,可能是因为 HTTPS 保持某种状态,所以出于性能原因,它可能停留在一台服务器上,或者负载平衡器不太智能,只能在端口 443 和 [=12 中看到持久的 TCP 连接=] 断开连接(直到您在浏览器上等待几分钟,连接超时)。