2.5. Keepalived 的持久性和防火墙标记
在某些情况下,客户端可能需要重复地重新连接同一实际服务器,而不是让负载平衡算法将该请求发送到最佳可用服务器。此类情况的示例包括多屏幕 Web 表单、cookies、SSL 和 FTP 连接。在这些情况下,除非事务由同一服务器处理来保留上下文,否则客户端可能无法正常工作。keepalived 提供了两种不同的功能来解决这个问题:持久性和 防火墙标记。
2.5.1. 持久性
启用后,持久性类似于计时器。当客户端连接到服务时,Load Balancer 会记住指定时间段内的最后连接。如果同一客户端 IP 地址在该期间内再次连接,它将发送到它之前连接到的同一服务器,绕过负载平衡机制。当连接在时间窗之外时,它会根据调度规则进行处理。
借助持久性,管理员可以指定子网掩码以应用到客户端 IP 地址测试,作为控制哪些地址具有更高持久性的工具,从而对该子网的连接进行分组。
对于使用多个端口进行通信的协议(如 FTP)而言,为不同端口对连接进行分组可能很重要。但是,持久性不是解决针对不同端口将连接分组的问题的最有效方式。对于这些情况,最好使用防火墙标记。
2.5.2. firewall Marks
防火墙标记是一种对用于协议或相关协议的端口进行分组的简单而高效的方式。例如,如果部署了 Load Balancer 运行电子商务站点,可使用防火墙标记在端口 80 上以及端口 443 上安全的 HTTPS 连接捆绑 HTTP 连接。通过为每个协议分配相同的防火墙标记,可以保留事务的状态信息,因为 LVS 路由器将在连接打开后将所有请求转发到同一实际服务器。
由于其效率和易用性,负载平衡器的管理员应尽可能使用防火墙标记而不是持久性来分组连接。但是,管理员仍应结合防火墙标记为虚拟服务器添加持久性,以确保客户端在适当的时间段内与同一服务器重新连接。