Chinaunix首页 | 论坛 | 博客
  • 博客访问: 175247
  • 博文数量: 40
  • 博客积分: 2697
  • 博客等级: 少校
  • 技术积分: 750
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-27 16:55
文章分类

全部博文(40)

文章存档

2012年(1)

2011年(13)

2010年(26)

lvs

分类: LINUX

2010-12-08 23:24:27

  lvs+keepalived+apache/ngix。花了几天的时间在研究它,这个经典的web应用架构,现在非常的流行,干系统的应该没有不知道吧。只要在网上一搜索,会有大量的文单介绍它,
  今天做了一个简单的web集群应用架构,用了两台负载均衡器,一个vip,两台web服务器,没有用到后端的共享存储,总得来说,基本上还是完成了应用,但其中还是出现了一些问题,还是有些地方不能理解,看来还需要明天努力,
 
  前几天和公司cto交流了下,发现自己有很多不足之处,在系统管理的学习中,只注重实践,而不注重理论的学习。很多应用只是从表面上按步就搬的完成,一旦服务出现了问题,将不知从何处下手,所以在以后的学习中,理论一定要学习扎实,正所谓理论作用于实践。我相信大多数初入linux的朋友也是和我一样,都想的是先学习配置,再搞其他的。这也可能是一种学习方法的问题吧!
  先说说这两天对lvs的理解吧,lvs主要应用在服务器集群领域,防止单点故障,保证服务的可靠性,可用性,和可扩展性。lvs是在国内首先兴起的开源软件项目之一,由章文嵩教授于1998年完成lvs的编写。
  lvs全称叫做linux virtual server,那linux虚拟服务器。lvs不能单地完成任务服务器集群功能,需要和其他的集群软件一起才能发挥其功能。现在网络比较流行的是lvs+keepalived。我这两天看的也是这个。因为据说keepalived配置相对于集群软件要简单的多。所以对于一个集群新手,我们还一起先学习学习lvs+keepalived吧,等以后对集群的认识加深再逐步学习其他的。
  lvs实现的主要功能是转发客户端发送过来的请求,keepalived主要完成的任务是,故障隔离,所谓的故障隔离就是,当有应用服务器出现故障,不能提供服务时,keepalived用它的checkers功能检测到这个情况,就把它从服务器池里面屏蔽出来,当服务器回到正常的状态时,又重新把它加入服务器池行列,继续提供服务。keepalived还有一个重要的功能是失败切换。这个功能应该是有二个以上的负载均衡器时才有效。负载均衡器之间有一条心跳检测线,定时地检测对方情况。我们现在假设有两个均衡器,一主一从。到主均衡器down掉之后,从就马上接任主的功能,完成转发任务,在这里面从均衡器,我个人感觉就像一个替补队员一样。当球场上主力队员受伤不能继续时,它就冲当上去,接爱任务。当主力队员伤好之后,重新上场,替补又得下来。当然我只是打个比方,主从之间没有优劣之分。这个就是大致的lvs+keepalived的工作原理。我想大多数的集群系统应该也是这样的,尽管现在还没有接触到其他的集群系统,等以后探索吧。
  现在说说lvs+keepalived的安装配置吧,他们的安装配置总的来说比较简单,需要下载ipvsadm和keeplived,在真实服务器上的配置非常简单,我们只需要写下脚本,就可以完成和lvs的连接。(这个脚本我现在反正还没有完成明白是什么意思,以后慢慢研究。)脚本内容作用:在本地环回接口上绑定vip的地址,还有什么的arp功能,我真的不是很明白,先配着吧。在负载器上主要修改的配置文件夹是keepalived.conf这个文件,里面主要分为几个配置部分。一个是全局配置。二个是vrrp.三个是virtual ip。四个是real server。(vrrp的主要作用是用于负载器间的心跳检测。具体看下田逸的那篇lvs+keepalived高可靠服务器集群文档吧。),主负载器和从负载器配置其实是差不多,只需要更改个别地方。这基本上就完成了简单的lvs集群配置了。
   这些基本上就是这两天看了之后认识到的东西,下一步还要看的是ipvsadm的作用和,负载均衡的8种算法,和其他三种模式的作用、以及复杂环境下的集群系统部署。由于上面的内容,只是我几天简单的看了lvs所得,肯定有很多错误的地方,还请大家多多体谅,待以后对lvs有更深的认识,和实践后,我还会回来更改这篇文章的!
 
以下是整个实验步骤:
 
配置Linux—LVS (DR)
  
第一部分: DR模式配置
OS:   Redhat5.4内核:2.6.18-164.el5
Director:    192.168.1.75
VIP:         192.168.1.180
Realserver1: 192.168.1.16
Realserver2: 192.168.1.177
实验目的:
在负载服务器上,配置LVS(DR模式),做web服务器的集群。实现最终用户访问虚拟IP,负载服务器,将请求分发到集群下的服务器,由集群服务器轮流提供web服务。
   Redhat 5.4的内核版本已经集成了ipvsadm功能模块,所以不需要安装,直接使用即可。
  如果要用高版本的ipvsadm, 到 注意对应自己的内核版本ipvsadm-1.24.tar.gz
安装linux内核,否则会出现错误
rpm -ivh kernel-devel
ln -s /usr/src/kernels/2.6.18-164.el5/ /usr/src/linux
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install
一、负载服务器
编辑一个shell文件,执行后,即启用LVS功能。
vi  /tmp/lvs.sh
#!/bin/bash
case "$1" in
start)
    # 为Director增加VIP
    ifconfig eth0:1 192.168.1.180 netmask 255.255.255.0 up
    # Clear all ipvsadm rules/services.
    ipvsadm -C
   
    # 将虚拟ip地址添加到ipvsadm中,rr表示规则为轮转
    ipvsadm -A -t 192.168.1.180:80 -s rr
   
    # 将真实服务ip地址添加到ipvsadm中,-m表示LVS-NAT模式
    # to the real server IP (RIP) inside the cluster
    ipvsadm -a -t 192.168.1.180:80 -r 192.168.1.16 -g
    ipvsadm -a -t 192.168.1.180:80 -r 192.168.1.177 -g
    ;;
stop)
    # Reset ipvsadm
    ipvsadm -C
    # Bring down the VIP interface
    ifconfig eth0:1 down
    ;;
*)
    echo "Usage: $0 {start|stop}"
    ;;
esac
二、集群服务器
所有集群服务器忽略ARP回应,在每台群服务器上都要进行如下设置
vi /tmp/lvs.sh
#!/bin/bash
VIP=192.168.1.180
case "$1" in
start)
echo "start lvs RealServer"
/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
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
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
echo "close LVS RealServer"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
三、测试
在客户端反复访问:http:.//192.168.1.16 如果能轮流显示出 192.168.1.16 和192.168.1.177的http测试文件,即LVS(DR模式)配置
阅读(1966) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~