任何拓扑下的 LVS 路由器在创建多端口 LVS 服务时都需要额外的配置。多端口服务可以使用防火墙标记来把不同但却相关的协议(如 HTTP 端口80和 HTTPS 端口443)捆绑在一起,或者当 LVS 被用来集群真正的多端口协议如 FTP 时被人工创建。在以上两种情况下,LVS 路由器都使用防火墙标记来识别带有相同标记却到不同端口的分组应该使用同样方法处理。还有,当和持续性综合使用时,防火墙标记会确保只要来自客户机器的连接发生在持续性参数所指定时间段内,它们会被选路发送到同一主机。关于给虚拟服务器分配持续性的详情,请参阅第 12.6.1 节。
不幸的是,用来平衡真正服务的载量的机制 — IPVS — 能够识别被分配给分组的防火墙标记,但自己却不能分配防火墙标记。分配防火墙标记的任务必须被网络分组过滤器 iptables 在 Piranha 配置工具之外执行。
要给目标为某个特定端口的分组分配防火墙标记,管理员必须使用 iptables。
本节举例说明了如何捆绑 HTTP 和 HTTPS,但是 FTP 是另一个比较常用的集群多端口协议。如果 LVS 群集被用于 FTP 服务,关于如何更好地配置群集的详情,请参阅第 11.4 节。
使用防火墙标记的基本规则是,对于 Piranha 配置工具中的每一个使用防火墙标记的协议,你一定要有一个同量的 iptables 规则来给网络分组分配标记。
创建网络分组过滤规则之前,请确定目前尚没有任何规则。要确定,在 shell 提示下登录为根用户,键入:
/sbin/service iptables status |
如果 iptables 没有在运行,该提示会立即重新出现。
如果 iptables 处于活跃状态,它会显示一组规则集合。如果集合非空,键入以下命令:
/sbin/service iptables stop |
如果已有的规则非常重要,检查一下 /etc/sysconfig/iptables 的内容,把要保留的规则复制到另一个地方再继续。
以下的规则给目标为浮动 IP 地址(n.n.n.n)的端口80和443的进入交通分配了同样的防火墙标记80。关于给公共网络接口分配 VIP 的说明,请参阅第 12.6.1 节。还请注意,在首次使用规则之前,你必须登录为根用户并载入 iptables 模块。
/sbin/modprobe ip_tables /sbin/iptables -t mangle -A PREROUTING -p tcp \ -d n.n.n.n/32 --dport 80 -j MARK --set-mark 80 /sbin/iptables -t mangle-A PREROUTING -p tcp \ -d n.n.n.n/32 --dport 443 -j MARK --set-mark 80 |
在上面的 iptables 命令中,n.n.n.n 应该用你的 HTTP 和 HTTPS 虚拟服务器的浮动 IP 地址替换。这些命令的总体效应是给所有目标为 VIP 上的恰当端口的交通分配防火墙标记80,随后,它就会被 IPVS 识别,并被恰当转发。
![]() | 警告 |
---|---|
以上的命令会立即生效,但是重新启动后就无效了。要确保网络分组过滤设置在系统重新引导后被恢复,请参阅第 11.5 节。 |