重新配置一遍:【我们通过这个启动过程,可以编写一个启动脚本,因为这些配置都是临时生效的,需要写个脚本去让他永久生效】
[root@yinzhengjie ~]# ipvsadm -C
[root@yinzhengjie ~]# ipvsadm --set 30 5 60
[root@yinzhengjie ~]# ipvsadm -A -t 200.200.200.100:80 -s rr -p 20
[root@yinzhengjie ~]# ipvsadm -a -t 200.200.200.100:80 -r 200.200.200.103 -g -w 1
[root@yinzhengjie ~]# ipvsadm -a -t 200.200.200.100:80 -r 200.200.200.104 -g -w 1
[root@yinzhengjie ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 200.200.200.100:80 rr persistent 20
-> 200.200.200.103:80 Route 1 0 0
-> 200.200.200.104:80 Route 1 0 0
[root@yinzhengjie ~]#
参数说明:
[root@yinzhengjie ~]# ipvsadm --help
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
Usage:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
ipvsadm --stop-daemon state
ipvsadm -h
Commands:
Either long or short options are allowed.
--add-service -A add virtual service with options
--edit-service -E edit virtual service with options
--delete-service -D delete virtual service
--clear -C clear the whole table
--restore -R restore rules from stdin
--save -S save rules to stdout
--add-server -a add real server with options
--edit-server -e edit real server with options
--delete-server -d delete real server
--list -L|-l list the table
--zero -Z zero counters in a service or all services
--set tcp tcpfin udp set connection timeout values
--start-daemon start connection sync daemon
--stop-daemon stop connection sync daemon
--help -h display this help message
Options:
--tcp-service -t service-address service-address is host[:port]
--udp-service -u service-address service-address is host[:port]
--fwmark-service -f fwmark fwmark is an integer greater than zero
--ipv6 -6 fwmark entry uses IPv6
--scheduler -s scheduler one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
the default scheduler is wlc.
--pe engine alternate persistence engine may be sip,
not set by default.
--persistent -p [timeout] persistent service
--netmask -M netmask persistent granularity mask
--real-server -r server-address server-address is host (and port)
--gatewaying -g gatewaying (direct routing) (default)
--ipip -i ipip encapsulation (tunneling)
--masquerading -m masquerading (NAT)
--weight -w weight capacity of real server
--u-threshold -x uthreshold upper threshold of connections
--l-threshold -y lthreshold lower threshold of connections
--mcast-interface interface multicast interface for connection sync
--syncid sid syncid for connection sync (default=255)
--connection -c output of current IPVS connections
--timeout output of timeout (tcp tcpfin udp)
--daemon output of daemon information
--stats output of statistics information
--rate output of rate information
--exact expand numbers (display exact values)
--thresholds output of thresholds information
--persistent-conn output of persistent connection info
--nosort disable sorting output of service/server entries
--sort does nothing, for backwards compatibility
--ops -o one-packet scheduling
--numeric -n numeric output of addresses and ports
[root@yinzhengjie ~]#
你认为是否现在就可以访问了吗?
答案是否定的!~根据DR模式的原理,你需要在客户端的lo接口上配置相应的VIP的哟,并且抑制ARP
如果想验证的可以用专门的Linux抓包工具(tcpdump)分别在RIP抓包,这里我就不演示了
4.配置RIP
200.200.200.103上的配置:
绑定虚拟IP地址:
[root@web001 yinnzhengjie]# ifconfig lo:0 200.200.200.100/32 up
[root@web001 yinnzhengjie]# ifconfig lo:0
lo:0 Link encap:Local Loopback
inet addr:200.200.200.100 Mask:0.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
[root@web001 yinnzhengjie]# route add -host 200.200.200.100 dev lo //添加虚拟网卡路由
[root@web001 yinnzhengjie]#
抑制ARP
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
200.200.200.104上的配置:
绑定虚拟IP地址:
抑制ARP相应:
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
好了。让我们来做测试吧:
动态查询连接数请求:
[root@yinzhengjie ~]# watch -n 1 ipvsadm -L -n
在网页上输入200.200.200.100得到的结果应该是RIP的服务:
到此,LVS的配置过程就完事了,你成功了没啊~
好了,以上是关于如何手动配置LVS的整个过程,下面对抑制ARP参数上做一些说明:
有关arp_ignore的相关介绍:
arp_ignore:定义对目标地址为本地IP的ARP询问不同的应答模式0
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
4-7 - 保留未使用
8 -不回应所有(本地地址)的arp查询
有关arp_announce的相关介绍:
arp_announce:对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址
1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
看看,就配置这么一个LVS负载均衡的DR模式是不是很简单呢?就是几条命令的事情,但是比较繁琐,在生产环境中,光负载均衡是不够的,比如DIR挂掉了,出现了单点故障,后面RIP的服务即使是好使的,也无济于事啊,所以又得引入一个名称高可用,我们可以在负载均衡的机器上安装高可用的软件