ubuntu server 10.4下LVS-DR实验

来源:互联网 发布:专业金相分析软件 编辑:程序博客网 时间:2024/06/06 07:22

转自:http://xuchengji.blog.51cto.com/160472/326059

目标:负载均衡器LVS(ip为:192.168.3.10,虚拟IP为:192.168.3.100),实机两台分别为rs2(ip为:192.168.3.20),rs3(ip为192.168.3.30),这三台机器都安装一块网块,实机上安装apache。在一客户端cs(ip为:192.168.3.1)上访问http://192.168.3.100,会轮流访问两台实机,则实验成功。
1,配置LVS机器:
在ubuntu server 10.4 默认安装是没有安装ipvsadm软件包的,在网上看了很多教程,都要编辑内核,但现在2.6.32内核已经不需要再编辑了。
#sudo apt-get install ipvsadm
会提示 please run dpkg –reconfigure ipvsadm
#sudo dpkg–reconfigure ipvsadm (dpkg与-reconfigure是连到一起中间没空格)
ipvs
ipvs2
ipvs3
#sudo ifconfig eth0:0 192.168.3.100 netmask 255.255.255.255 broadcast 192.168.3.100
#sudo route add –host 192.168.3.100 dev eth0:0
#sudo ipvsadm –A –t 192.168.3.100:80 –s rr
#sudo ipvsadm –a –t 192.168.3.100:80 –r 192.168.3.20 –g
#sudo ipvsadm –a –t 192.168.3.100:80  -r 192.168.3.30 –g
#sudo ipvsadm –save
*:这里rr表示ipvsadm的8种算法中的轮询,做实验选这个算法,效果比较明显。-g,就是lvs的三种模式中的LVS-DR模式。-i 就是遂道LVS-TUN.为什么eth0:0的broadcast就是它的IP,因为他的netmask为/32.(the VIP is a /32 addr, so the brd addr is the VIP, not x.x.x.255.)
修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth0.send_redirects=1
#sudo sysctl -p
2,配置实机rs2,rs3为如下
#sudo ifconfig lo:0 192.168.3.100 netmask 255.255.255.255 broadcast 192.168.3.100
#sudo route add –host 192.168.3.100 dev lo:0
修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#sudo sysctl –p
把rs2,rs3的/var/www下的index.html的内容修改为“this is rs2”,”this is rs3”,当访问时区别访问的是那台机器,查看实验是否成功。
在实验过程中:刚开始没有修改实机rs2,rs3下的/etc/sysctl.conf,在访问http://192.168.3.100时,有时能轮流的访问rs2,rs3,有时不能,修改后,发现效果很好,达到实验目标。为什么要修改可以参考以下http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html的内容,专门讲解了关于LVS的 ARP ,也有专门讲解了在LVS-DR模式中ARP问题及如何去解决ARP问题,也有arp_ingnore,arp_announce具体的意思。要想深入学习LVS,必须要看这个LVS-HOWTO
以下这个博客也很好的讲解了LVS,可以参考。
http://hi.baidu.com/fengyezhidu/blog/item/08338050e94a345a1138c278.html
*:
用firefox浏览器,在地址栏中输入:about:config,找到network.http.keep-alive 把值修改为false,利于查看实验结果。
===================================================================================================================
转自:http://xuchengji.blog.51cto.com/160472/330343
1,实验环境:
(1),主负载均衡服务器ubserver1:     ip:192.168.3.10    虚拟IP:192.168.3.100
(2),从负载均衡服务器ubserver5:   ip:192.168.3.50
(3),www服务器ubserver2: ip: 192.168.3.20
(4),www服务器ubserver3: ip: 192.168.3.30
2,目标:当主负载均衡服务器ubserver1故障时,从负载均衡服务器ubserver5能接管其调度任务;当主负载均衡服务器ubserver1故障修复后,从负载均衡服务器ubserver5任务退出。
3,配置主负载均衡服务器ubserver1:
安装heartbeat,因前面已经安装过ipvsadm所在,这里不在安装
#sudo apt-get install heartbeat
安装完成后,会提示在/usr/share/doc/heartbeat 下有所需要的三个文件authkeys,ha.cf.gz,haresources.gz
    #sudo dpkg –l heartbeat
#sudo dpkg –l ipvsadm
查看这两个文件包是否已安装
#sudo cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/
#sudo cp /usr/share/doc/heartbeat/ha.cf.gz /etc/ha.d/
#sudo cp /usr/share/doc/heartbeat/haresource.gz /etc/ha.d/
#cd /etc/ha.d
#sudo gzip –d ha.cf.gz
#sudo gzip –d haresources.gz
#sudo vim authkeys
把以下内容
#auth 1
#1 crc
修改为
auth 1
1 crc
#sudo chmod 600 authkeys
#sudo vim haresources
增加以下内容即可:
ubserver1 192.168.3.100 lvs.sh
*:ubserver1 为主机名(必须与`uname –n `查看的名字相同),192.168.3.100为虚拟的IP,lvs.sh为配置LVS-DR时用到的脚本。
#sudo vim ha.cf
修改内容为以下:
bcast eth0
ucast eth0 192.168.3.50
*:192.168.3.50为从负载均衡服务器ubserver5的IP
auto_failback on
#auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。 
node ubserver1
node ubserver5
*:ubserver1是主,所在在前;ubserver5在后,顺序是重要。
#sudo vim /etc/init.d/lvs.sh
#!/bin/bash 
vip=192.168.3.100:80 
vip1=192.168.3.100 
rip1=192.168.3.20 
rip2=192.168.3.30 
sudo ifconfig  eth0:0 $vip1  netmask 255.255.255.255 broadcast $vip1 up 
sudo route add -host $vip1 dev eth0:0 
sudo ipvsadm -A -t $vip -s rr 
sudo ipvsadm -a -t $vip -r $rip1 -g 
sudo ipvsadm -a -t $vip -r $rip2 -g 
sudo ipvsadm –S
*:要在/etc/init.d目录下建立lvs.sh
#sudo chmod 755 /etc/init.d/lvs.sh
#sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#sudo sysctl –p
#sudo vim /etc/hosts
ubserver2   192.168.3.20
ubserver3   192.168.3.30
ubserver5   192.168.3.50
*:在实验的其它机器做相似的修改
4,配置从负载均衡服务器ubserver5:
#sudo vim ha.cf
修改/etc/ha.d/ha.cf
bcast eth0
ucast eth0 192.168.3.10
*:192.168.3.10为主负载均衡服务器ubserver1的IP
haresources,authkeys,lvs.sh配置与负载均衡服务器ubserver1的都相同。
5,配置www服务器ubserver2,ubserver3两台机器配置相同
#sudo ifconfig lo:0 192.168.3.100 netmask 255.255.255.255 broadcast 192.168.3.100
#sudo route add –host 192.168.3.100 dev lo:0
修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#sudo sysctl –p
把ubserver2,ubserver3的/var/www下的index.html的内容修改为“this is ubserver2”,”this is ubserver3”,当访问时区别访问的是那台机器,查看实验是否成功
6,开启heartbeat
在负载均衡服务器ubserver1,ubserver5上执行
#sudo /etc/init.d/heartbeat start
出现以下内容:
lvs-heartbeat1
没搞明白!但能工作。
7,故障模拟
在一台机器访问http://192.168.3.100,看有没有达到轮询访问两台www服务器,然后关闭主负载均衡服务器ubserver1,看能不能正常访问,这时到从负载均衡服务器ubserver5上,执行#sudo ipvsadm,看有没有接管调度;正常开启主负载均衡服务器ubserver1,这时访问http://192.168.3.100,并查看其有没有开始把任务从ubserver5上接管回来。在模拟的过程中查看两台机器的 /var/log/syslog内容,看是否工作正常.
实验结果:
(1)负载均衡能实现,达到轮询两台www服务器
(2)当关闭主负载均衡服务器ubserver1时,从负载均衡服务器ubserver5能接管其任务;但当主负载均衡服务器ubserver1修复后,不能接回其调度任务。还须修改。今天重新实验发现,在开机后heartbeat服务会自动启动,可以接回调度任务。以前总以为是要手动启动heartbeat服务的,原来是开机后自动启动的。
总结:
现在网上实例的很多,但是ubuntu下的很少,在redhat下的很多,不过,道理是相通的,稍加修改就可以了,要明白其工作的原理,就比较容易排除故障,多看官方的手册。这次只是基本功能实现了,很多细节没配置。实验完了,再补上。