lvs-dr实验搭建 2012-04-19
18:00:59
分类: LINUX
环境:
lvs director: 10.57.220.198:80 Ubuntu 10.04 LTS vmware 虚拟机
real server1 10.57.220.195:80 Ubuntu 11.10 nginx服务器
real server2 10.57.220.20:80 Ubuntu 11.10 nginx服务器
虚拟ip(vip):10.57.220.144
1、下载 ipvsadm
分别在3台机器上下载
apt-get install ipvsadm
2、ipvsadm设置
dpkg-reconfigure ipvsadm
第一个选no (automatically load ipvs rules on boot?)
第二个选none
3、配置脚本
1)director脚本
lvs-dr.sh
点击(此处)折叠或打开
- #!/bin/bash
- echo "1" > /proc/sys/net/ipv4/ip_forward
- IPVSADM='/sbin/ipvsadm'
- VIP=10.57.220.144
- RS1=10.57.220.20
- RS2=10.57.220.195
- ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255
up
- route add -host $VIP dev eth0:1
- $IPVSADM -C /*清除虚拟服务器信息*/
- $IPVSADM -A -t $VIP:81 -s rr
/*创建一条虚拟服务器记录,调度算法为rr 参见http://www.it165.net/admin/html/201401/2248.html */
- $IPVSADM -a -t $VIP:81 -r
$RS1:81 -g -w
1 /*给虚拟服务器添加一台物理机*/
- $IPVSADM -a -t $VIP:81 -r
$RS2:81 -g -w
1 /*给虚拟服务器添加一台物理机*/
chmod 777 lvs-dr.sh
2)realserver脚本
所有realserver相同
lvs-rs.sh
点击(此处)折叠或打开
- #!/bin/bash
- #Description : RealServer
- #Write by:hugwww
- #Last Modefiy:2009.1.24
- VIP=10.57.220.144
-
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255
up
-
/sbin/route add -host $VIP dev lo:0
- echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
/*只回答目标IP地址是来访网络接口本地地址的ARP查询请求*/
- echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
/*对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送*/
- echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
- sysctl -p
- #end
chmod 777 lvs-rs.sh
4、执行、测试
分别在三个机器上执行相应脚本
注意事先启动。nginx 服务器
firfox访问 10.57.220.144:81
可用ipvsadm -ln查看状态
5、注意问题
防火墙要关闭,linux下是iptables
各服务器 端口一致,否则不通。比如都是80端口,不能有的是80,有的是81。
本案例中vip和真实ip都是在同一网段,vip可以和real ip不同网段,可参考章博士的回答 http://zh.linuxvirtualserver.org/node/155。负载调度器只要有一个网口和真实服务器是通过不分段的网络连接起来就可以。真实服务器可以通过自己的路由器将响应报文发送给客户。
关于调度算法参见:http://zh.linuxvirtualserver.org/node/2903
构架参考 http://zh.linuxvirtualserver.org/node/28
以上就介绍了 lvs-dr实验搭建,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn