ipvsadm -A -t 172.16.249.138:80 -s rr #添加一个集群 VIP:Port=172.16.249.138:80 调度方式选择rr 轮询,这样便于观察访问
ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.8 -m #为集群添加RS1
ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.9 -m #为集群添加RS2
[root@www ~]# cat /proc/sys/net/ipv4/ip_forward #查看转发功能是否开启,开启为1,关闭是0
0
[root@www ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
ipvsadm的简单用法:
添加一个集群服务: ipvsadm -A|E -t|u|f service-address [-s scheduler]
service-address:
-t|u: VIP:Port
向一个已经存在集群服务添加一个RS: ipvsadm -a|e -t|u|f service-address -r server-address [options]
-r RS-ADDR
-w weight
--gatewaying -g gatewaying (direct routing) (default)
--ipip -i ipip encapsulation (tunneling)
--masquerading -m masquerading (NAT)
查看已经定义的集群服务及RS: ipvsadm -L -n
清空所有的集群服务: ipvsadm -C
删除集群服务: ipvsadm -D -t|u|f service-address
从集群服务中删除RS: ipvsadm -d -t|u|f service-address -r server-address
保存集群服务定义:
ipvsadm -S > /path/to/some_rule_file
ipvsadm-save > /path/to/some_rule_file
让规则文件中的规则生效:
ipvsadm -R < /path/from/some_rule_file
ipvsadm-restore < /path/from/some_rule_file
在物理主机上访问172.16.249.138.
当访问到的数据时是,下个访问数据将会是 ,也可以刷新一个访问会不停变换显示结果,明显,每一次的访问到的服务器端都是不同。当两个服务器数据一样是。这就实现了负载均衡
但是如果同意用户访问同一数据,还不停的做轮询这样不但消耗资源而且缓存机制的作用被大大减小了。那么如何实现让同一用户访问同一数据去往同一服务器呢?实现此方法就要用到Session的持久机制。
Session持久机制:
1、session绑定:始终将来自同一个源IP的请求定向至同一个RS;没有容错能力;有损均衡效果;
2、session复制:在RS之间同步session,每个RS拥有集群中的所有的session;对规模集群不适用;
3、session服务器:利用单独部署的服务器来统一管理集群中的session;
调度算法中的sh算法就可以实现Session绑定。
[root@www ~] # ipvsadm -E -t 172.16.249.138:80 -s sh #修改集群调度算法为sh
在物理主机上访问172.16.249.138.第一次访问到的是什么结果,那么往后一段时间内访问到的数据结果就是相同的。
后边的实现都将172.16.249.138改为192.168.1.128. ipvsadm的集群定义也一样。