职位:技术总监 1、精通c++(linux平台、vc++Mfc、qt)、java、php、unity3d,略懂python 2、用c++开发过嵌入式产品,用c++开发过大型银行运维产品 3、用java开发大型银行运维产品,学校教务系统 4、用php开发进销存系统(在销售中),用php开发淘宝小程序 5、用unity3d开发衣柜设计软件,在运营中
分类: LINUX
2011-10-12 07:58:43
在各种网络服务普遍应用的今天,随网络速度的提高以及用户的增加,在一些繁忙的场合,单凭一台机器已经无法就能应付所有的网络请求了。为了解决这个问题,许多用户就采 用一组cluster(集群)来代替单一的机器。cluster可以将多台计算机连接起来协同运作以对外提供各种服务,比如Apache、FTP、Mail等。
在Linux上最常见的、也可能是运用最广泛的cluster方案就是LVS(Linux Virtual
Server),很高兴LVS也是一个中国人创建和开发的开放源码项目。LVS自1998年开始,发展到现在已经是一个比较成熟的技术项目了。有许多比较著名网站和组织都在使用LVS架设的cluster,比如:、sourceforge.net、等。
在lvs基础上,出现了很多商业软件,如redhat的piranha,turbo linux的turbo cluster,都是基于lvs的核心代码。
二、Lvm安装配置过程 1、安装ipvsadmin:
从安装盘中找到ipvsadm-1.24-10.i386.rpm
rpm -ivh ipvsadm-1.24-10.i386.rpm
2、查看系统是否支持ipvs方法:
n 如果你能在目录/lib/modules/2.*.*-*/kernel/net/ipv4/ipvs中看到ip_vs_*文件,就证明你的系统已经支持ipvs.现在内核 2.6.* 的都已经默认支持了ipvs了,
n modprobe -l | grep ipvs
[root@localhost ipvs]# modprobe -l | grep ipvs
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
n lsmod |grep ip_vs
[root@localhost ipvs]# lsmod |grep ip_vs
ip_vs 78081 0
3、环境:三台电脑192.168.1.96 前端负载均衡器
192.168.1.97 真实服务器
192.168.1.97 真实服务器
使用的虚拟ip为:192.168.1.65
4、测试方法:使用服务器上的httpd测试,通过浏览器访问。
5、Dr模式配置步骤:
n 96电脑(前端负载均衡器):
l 安装ipvsadm
rpm -ivh ipvsadm-1.24-10.i386.rpm
l 配置虚拟ip:
ifconfig eth0:0 192.168.1.65 netmask 255.255.255.255 broadcast 192.168.1.65 up
route add -host 192.168.1.65 dev eth0:0
l 配置转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
l 增加虚拟服务器:
ipvsadm -A -t 192.168.1.65:80 -s wlc
l 增加真实服务器:
ipvsadm -a -t 192.168.1.65:80 -r 192.168.1.97 -g
ipvsadm -a -t 192.168.1.65:80 -r 192.168.1.98 –g
l 删除真实服务器(可选):
ipvsadm -d -t 192.168.1.65:80 -r 192.168.1.98
l 查看lvs服务器清单:
l 启动httpd
chkconfig httpd on
service httpd start
n 97/98电脑(真实服务器):
l 关闭arp:
把下面四句添加在/etc/sysctl.conf 文件 最后:
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
l 配置ip路由:
ifconfig lo:0 192.168.1.65 netmask 255.255.255.255 broadcast 192.168.1.65 up
route add -host 192.168.1.65 dev lo:0
l 启动httpd:
chkconfig httpd on
service httpd start
l 改变网页的起始页:
97上:echo ' the site is 192.168.1.97' > /var/www/html/index.html
98上:echo ' the site is 192.168.1.98' > /var/www/html/index.html
6、测试:在浏览器输入:, 然后不断刷新,会看到不同的结果。
the site is 192.168.1.97和the site is 192.168.1.98交替出现。另外在96机子上执行ipvsadm –l 最后面一列的数字会在增长,说明转发的次数在增加。
7、存在的问题:1、 上面仅仅是使用了lvs,但实际情况下,一个前端负载均衡器会形成一个单点,如果这个负载均衡器挂了,整个集群就挂了,所以还应该有个备用负载均衡器,两个负载均衡器通过heartbeat或者keepalived来管理
2、 在实验中有时会出现负载均衡不均衡的问题,比如98机子始终切换不过去,刚配置完三台电脑的时候挺好的,但到第二天在开虚拟机的时候会出现这种情况。下面增加ldirectord后,这个问题也自然而然的解决了。
3、 Lvs只能分配,但不能知道那个服务器是否挂了,这需要使用ldirectord(或keepalived)来探测服务器的可用性。
8、结论Lvs只能解决负载均衡的问题,要想解决高可用的服务器,lvs要与其他软件搭配。
有两种搭配方式:
n Lvs + heartbeat + ldirectord
n Lvs + keepalived