标签:
LVS:DR配置
作者:Danbo 地址:http://www.cnblogs.com/danbo/p/4609202.html
1)、需要三台VM虚拟机数据库及memcache等负载均衡环境,并且三台主机都采用NAT模式。
特别提示:上面的环境为内部环境的负载均衡模式,即LVS服务是对内部业务的,如数据库及memcache等的负载均衡。
2)、web或web cache等负载均衡环境
特别提示:这个表格一般是提供web或web cache负载均衡的情况,此种情况特点为双网卡环境。这里把10.0.0.0/24假设为内网卡,192.168.128.0/24假设为外网卡。
这里我们为什么选192.168.128.0/24作为外网卡呢?这是为了方便大家环境搭配实验。
3)、实验拓扑图如下所示:
分别在两台RealServer安装apache服务,命令:yum -y install httpd
然后修改apache默认主页,方便后面我们做负载均衡时验证效果:
echo "Server1" >/var/www/html/index.html
echo "Server2" >/var/www.html/index.html
在RS1与RS2上使用命令:service httpd start启动apache服务器,然后用在netstat -lnt | grep 80查看apache是否成功启启动。
1)、下载相关软件包
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
2)、安装lvs命令
lsmod | grep ip_vs
uname -r
ln -s /usr/src/kernels/2.6.18-406.el5-x86_64/ /usr/src/linux
如果没有源文件的话,说明缺少kernel-devel-2.6.18-398.e15,通过命令yum -y install kernel-devel
安装完毕后必须保证连接的版本与uname -r输出的版本一致。
tar -zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make //必须安装gcc编译器:yum -y install gcc
make install
lsmod | grep ip_vs
此时发下并没有发现这个模组,需要执行/sbin/ipvsadm命令即在ip_vs到内核。
此时我们再lsmod | grep ip_vs
[root@Director ~]# lsmod | grep ip_vs
ip_vs 122241 0
出现以上内容表示LVS已经安装完成,并加载到内核
1)、用户访问192.168.128.181这个步骤是在DNS配置
2)、在Director上配置LVS虚拟IP(VIP)
ifconfig eth0:0 192.168.128.181 netmask 255.255.255.0 up //注意我们启用别名的方式为:eth0:0-255都可以
3)、检查IP配置:
[root@Director ~]# ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:1B:C7:C9
inet addr:192.168.128.181 Bcast:192.168.128.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
4)、手工执行配置添加LVS服务器并增加两台Real Server
ipvsadm -C //clear the whole table
ipvsadm --set 30 6 60
ipvsadm -A -t 192.168.128.181:80 -s wrr -p 20
ipvsadm -a -t 192.168.128.181:80 -r 192.168.128.131:80 -g -w 1
ipvsadm -a -t 192.168.128.181:80 -r 192.168.128.132:80 -g -w 1
删除方法:
ipvsadm -D -t 192.168.128.181:80 -s wrr
ipvsadm -d -t 192.168.128.181:80 -r 192.168.128.131:80
ipvsadm常用相关参数:
--clear -C clear the whole table
--add-service -A add virtual service with options
--tcp-service -t service-address service-address is host[:port]
--scheduler -s scheduler one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
--real-server -r server-address server-address is host (and port)
--masquerading -m masquerading (NAT)
--gatewaying -g gatewaying (direct routing) (default)
--delete-server -d delete real server
--persistent -p [timeout] persistent service
--set tcp tcpfin udp set connection timeout values
--weight -w weight capacity of real server
更多详细参数参考:ipvsadm --help
在每台real server端执行:
ifconfig lo:0 192.168.128.181 netmask 255.255.255.255 up
route add -host 192.168.128.181 dev lo
每个集群节点上的lo设备上被绑定VIP地址(其广播地址是其本身,子网掩码是255.255.255.255,采取的VLSM方式把网段划分成只含有一个主机地址的目的是避免ip地址冲突)允许LVS-DR集群中的集群节点接受向该VIP地址的数据包,这会有一个非常严重的问题发生,集群内部的真是服务器将尝试回复来自正正在请求VIP客户端的ARP广播,这样所有的真是服务器都将声称自己拥有该VIP地址,这时客户端将直接发送请求数据包到真实服务器上,从而破坏了DR集群的方法,因此,必须要抑制真实服务器的ARP广播。
在Real Server使用如下命令:
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
arp抑制技术参数说明:
arp_ignore
0 -(默认值):回应任何网络接口上对任何本地IP地址的arp查询请求。
1 - 只回答目标IP地址是来访问网络接口本地地址的ARP查询请求。
2 - 只回答目标IP地址是来访问网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内。
3 - 部回应该网路界面的arp请求,而只最设置的唯一和连接地址作出回应。
4-7 - 保留未使用。
8 - 不回应所有(本地地址)的arp查询
arp_announce - INTEGER
对网络接口上,本地IP地址的发出的ARP回应,作出相应基本的限制:
确定不同程度的限制,宣布对来自本地源IP地址发出的ARP请求的接口
0 - (默认值):在任意网络接口上任何本地地址
1 - 尽量避免不在该网络接口子网段的本地地址做出arp回应,当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用。此时会检查来访IP是否为所有接口上的子网段内IP之一。如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理。
2 - 对查询目标使用最适当的本地地址。在此模式将忽略这个IP数据包源地址并尝试选择与能与改地址通信的本地地址。首要是选择所有的网络接口的子网中包含该目标IP地址的本地地址。如果没有合适的地址被发发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送,限制了使用本地的VIP地址作为优先的网络接口。
未完。。待续
标签:
原文地址:http://www.cnblogs.com/danbo/p/4609202.html