在大多数的企业级应用中,客户端与服务器经常需要通过多次的交互才能完成一次事务处理或一笔交易。由于这些交互与用户的身份是紧密相关的,因此,与这个客户端相关的应用请求,往往需要转发至一台服务器完成,而不能被负载均衡器转发至不同的服务器上进行处理。为了实现这一机制,我们需要在负载均衡上配置会话保持(Session Persistence)机制,以确保客户端与应用系统之间的交互不会因为部署了负载均衡而发生问题。
- C:\>netstat -an
- 活动连接
- 协议 本地地址 外部地址 状态
- ...<省略部分输出内容>...
- TCP 172.31.20.53:47669 122.225.67.240:80 ESTABLISHED
- TCP 172.31.20.53:47670 122.225.67.240:80 ESTABLISHED
- TCP 172.31.20.53:47671 122.228.243.240:80 ESTABLISHED
- TCP 172.31.20.53:47672 110.75.34.138:80 TIME_WAIT
- TCP 172.31.20.53:47673 110.75.34.138:80 TIME_WAIT
- TCP 172.31.20.53:47674 110.75.34.138:80 TIME_WAIT
- TCP 172.31.20.53:47675 122.225.67.240:80 ESTABLISHED
- TCP 172.31.20.53:47676 122.225.67.240:80 ESTABLISHED
- TCP 172.31.20.53:47677 122.228.243.240:80 ESTABLISHED
- TCP 172.31.20.53:47679 110.75.24.105:80 ESTABLISHED
- TCP 172.31.20.53:47681 122.225.67.240:80 ESTABLISHED
- TCP 172.31.20.53:47682 122.225.67.240:80 ESTABLISHED
- TCP 172.31.20.53:47683 60.191.143.240:80 ESTABLISHED
- TCP 172.31.20.53:47684 60.191.143.240:80 ESTABLISHED
- TCP 192.168.1.4:18231 203.208.46.29:443 CLOSE_WAIT
- ...<省略部分输出内容>...
- AX#show session
- ...<省略部分输出内容>...
- Prot Forward Source Forward Dest Reverse Source Reverse Dest Age Hash
- -----------------------------------------------------------------------------------------------------------
- Tcp 103.104.157.122:1619 61.22.215.151:80 172.30.2.83:80 103.104.157.122:1619 60 1
- Tcp 103.104.157.122:1621 61.22.215.151:80 172.30.2.84:80 103.104.157.122:1621 120 3
- ...<省略部分输出内容>...
方法
|
优点
|
缺点
|
适用场景
|
源地址会话保持
|
适用范围广泛
无需负载均衡保持精准时钟
不需要修改客户端请求或响应
|
需要维护会话表
客户端识别仅依靠源地址信息,不够精准
|
各种B/S、C/S应用
需要会话保持时间较短的应用
需要高性能的场景
|
cookie会话保持
|
客户端识别精准
|
仅支持B/S架构应用
需要客户端支持cookie
需要负载均衡维持精准的系统时钟
|
B/S架构应用
需要会话保持时间较长的应用
|