LVS:Linux Virtual Server
一个由章文嵩博士发起的自由软件项目,它的官方站点是。
现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
LVS是LB集群的一种软件实现方案,类似的有haproxy,nginx,ats(apache traffice server),perbal等。
硬件实现方法:F5公司的BIG-IP(中高端60W+一台),Citrix的Netscaler,A10公司的A10等。
LVS的组成:ipvs/ipvsadm
ipvs:工作于内核空间netfilter中的INPUT链上的程序,可根据用户定义的集群实现请求转发
ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的real server
ipvsadm命令的用法:由于此命令的选项很多,可归纳为两类,
①管理集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] /* -A:添加 -E:修改 -t:TCP -u:UDP -f:firewall mark service-address: -t,tcp,vip:port -u,udp,vip:port -f,fwm,mark -s scheduler:调度方法,默认是wlc */ ipvsadm -D -t|u|f service-address // -D:删除
②管理集群上的RS:
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] /* -a:增加 -e:修改 -r server-address:RS的地址,rip[:port] -g:gateway,dr(默认) -i:ipip,tun -m:masquerade,nat */
③查看
ipvsadm -L|l [options] /* -n,--numeric:数字格式显示IP和PORT --exact:精确值 -c,--connection:显示IPVS连接 --stats:统计数据 --rate:速率 */
④保存和重载
//保存: ipvsadm -S > /PATH/TO/SOME_RULE_FILE ipvsadm-save > /PATH/TO/SOME_RULE_FILE //重载: ipvsadm -R < /PATH/TO/SOME_RULE_FILE ipvsadm-restore < /PATH/TO/SOME_RULE_FILE
⑤清空
//清空规则 ipvsadm -C //清空计数器 ipvsadm -Z [-t|u|f service-address]
LVS-NAT模型实现
Director:双网卡
外网地址:192.168.1.102(VIP)
内网地址:172.18.100.6(DIP)
RS1:装载httpd做测试
内网地址:172.18.100.11
RS2:装载httpd做测试
内网地址:172.18.100.12
部署:
(1)关闭防火墙,Selinux;RS1,RS2安装httpd,并写好测试页面,开启服务,确保服务可用。
(2)Director关闭防火墙,Selinux;清空iptables规则,开启内核ipv4_forward功能
echo 1 >> /proc/sys/net/ipv4/ip_forward
(3)安装ipvsadm命令行工具
yum -y install ipvsadm
(4)设定集群规则
ipvsadm -A -t 192.168.1.102:80 -s rr ipvsadm -a -t 192.168.1.102:80 -r 172.18.100.11 -m -w 1 ipvsadm -a -t 192.168.1.102:80 -r 172.18.100.12 -m -w 1
(5)查看指定的规则
ipvsadm -Ln
(6)启动另外一个主机开始测试,效果如下:
总结:
LVS-NAT设计要点:
(1)VIP和RIP必须在同一IP网络,RIP的网关要指向DIP
(2)支持端口映射
LVS-NAT的缺点:
在LVS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器(Director),当真实服务器(RealServer)的数目在10台和20台之间时,负载调度器(Director)将成为整个集群系统的新瓶颈。
LVS-DR模型实现
Director:
eno16777736:192.168.1.102(DIP)设置DIP目的:如果是用了keepalived等工具做HA或者Load Balance,则在健康检查时需要用到DIP。
eno16777736:0:192.168.1.100(VIP)
RS1:192.168.1.103
RS2:192.168.1.104
部署:
(1)关闭防火墙,Selinux;RS1,RS2安装httpd,并写好测试页面,开启服务,确保服务可用。
(2)Director上设置VIP: