最近折腾的LVS的问题,做个记录!正常是三台以上服务器可以,一台做负载,另外两台做真是服务器,但我手上的环境实际上只有两台,那就意味着其中一台纪要做负载又要做真实服务器。
首先要检查Linux内核是否支持LVS:
modprobe -l | grep ipvs
如果输出如下内容,那么就是OK的:
接下来安装ipvsadm管理工具:
sudo apt-get install ipvsadm
安装成功后执行 ipvsadm 命令,如果看到以下字样就说明安装成功:
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn
接下来也别一步一不做了,直接copy我这现成的脚本,改里面的IP,直接用就OK了,简单粗暴!
在LVS服务器上创建一个新的脚本文件 lv-dr.sh
,把下面的内容扔进去:
#!/bin/bash ###################### # data 20150727 # # website Gongzi.org # ###################### vip=10.46.239.56 rs1=10.46.239.50 rs2=10.46.239.51 #set vip address and add route /sbin/ifconfig bond0:0 $vip broadcast $vip netmask 255.255.255.255 up /sbin/route add -host $vip dev bond0:0 route -n # update /etc/sysctl.conf echo "1" >/proc/sys/net/ipv4/ip_forward echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects echo "1" >/proc/sys/net/ipv4/conf/bond0/send_redirects sysctl -p #clear ipvs tables ipvsadm -C #set ipvs ipvsadm -A -t $vip:8080 -s rr ipvsadm -a -t $vip:8080 -r $rs1:8080 -g -w 1 ipvsadm -a -t $vip:8080 -r $rs2:8080 -g -w 1 #run lvs /sbin/ipvsadm
然后修改里面的信息:
然后到真是服务器中创建一个lvs-rs.sh
的脚本,扔进去以下内容:
#!/bin/bash ###################### # data 20150727 # # website Gongzi.org # ###################### vip=10.46.239.56 ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip up route add -host $vip dev lo:0 #echo "0" >/proc/sys/net/ipv4/ip_forward #这一步是关闭真实服务器的转发功能 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p
注意:此脚本中的网关要和虚ip一样,掩码不能同于主网卡的(即eth0或1的)
接下来就可以测试了。
以下是ipvs的一些常用命令及参数说明,网上找的,我摘录了几条常用的,供参考:
还有其他几种模式,NAT之类的,这里直说DR的,也是性能最好的一种。