欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

CLB 如何均衡客户端流量--长连接篇

最编程 2024-03-08 17:28:13
...

1. 背景概述

上一篇文章(CLB是怎么均衡client流量的-短连接篇),测试验证了CLB与RS之间是短连接时,CLB是按照客户端的每个HTTP请求来均衡,无论client与CLB是长连接还是短连接。

那CLB和后端RS之间是长连接时,CLB如何均衡client流量呢?这片文章我们重点实验下这一点。

2. CLB与RS长连接实验环境

本次实验的配置环境与之前的一样,避免新看文章的读者不了解,这里再陈述一次:

一台CLB下面挂两个Nginx,CLB和Nginx间开启长连接,两台Nginx静态页,一台返回0,一台返回1,通过并发访问Nginx静态页来模拟业务场景。看看会不会有不均的情况

CLB与Nginx开启长连接见第三部分

具体配置内容比较简单,这里略掉

3. 启用CLB与RS间长连接

3.1 启用

1、打开CLB界面,点击新建监听器

2、在打开页面,将 启用长连接 开关打开

3、在CLB安全组界面,启用默认放通

3.2 验证

从CLB官网文档了解到:CLB与后端服务之间使用长连接,CLB不再透传源IP,请从XFF中获取源IP。可以基于此规则,来判断长连接是否已开启

Nginx access.log配置文件如下:

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access.log内容如下:

从日志可以看出,remote_addr是100.127.X.X,对应CLB网段;http_x_forwarded_for是180.153.X.X,对应我本机IP,符合官网说明。证明长连接已开启。

文档地址:负载均衡 七层个性化配置-操作指南-文档中心-腾讯云

4. 均衡验证

5.1 小规模验证

在浏览器,直接访问CLB的IP地址,看看返回情况。如果每次刷新,返回值都对应不同的nginx,证明是按请求轮询的。

5.1.1 浏览器和CLB是长连接

5.1.2 浏览器返回0

5.1.3 浏览器返回1

浏览器与CLB是长连接,每刷新一次,浏览器的结果都在0和1间轮番出现;说明尽管CLB和RS间启用了长连接,CLB还是按HTTP请求进行负载均衡。

5.2 大规模验证

通过腾讯云的PTS压测工具,模拟客户的真实流量,通过nginx-export观测nginx连接数

5.2.1 PTS压测结果

平均响应时间从短连接的9.57ms降到8.24s了 ,说明启用长连接对降低链路消耗,有一定优势。

5.2.2 Nginx exporter监控

处理连接数和总请求数两个指标,两台机器结果一致,说明在CLB和RS是长连接情况下,负载也是均衡的。

5. 测试结果

从上面测试可以得出结论,在CLB与RS间是长连接时,CLB也不会考虑client与CLB是长连接还是短连接,直接按照总的HTTP请求的数量,并根据配置的负载均衡算法处理。本文用的负载均衡算法时RR,所以看到两台设备的请求几乎一样。

另外,启用了长连接后,由于CLB不用每次HTTP请求都会和RS建连,理论上链路消耗时间会缩短。从pts的压测结果也能看到这一点。

在实际场景下,客户端相当分散,在按HTTP请求均衡下,可以预期Nginx的负载是均衡的。

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表