首先什么是lvs这里就不介绍了, baidu一下你就知道; 为什么需要集群, 为什么需要负载均衡这里也不啰嗦了, baidu一下你就知道; 与其他方案的区别, 优异也不介绍了, baidu一下你就知道. lvs的几个重要角色是: 1> 主控服务器master 2> 主控备用服务器backup 3> 虚拟服务器virtual server 4> 实际服务器real server 每个角色对应一个ip, realserver则对应多个, 如果你简单的了解过lvs, 就应该知道lvs的3中调度方式和10种调度算法, 这里将使用效率比较高的dr(直接路由)方式, 算法用比较合理的wrr(加权轮询)算法, 其它的模式和算法可执行尝试. 好了下面就直接开始吧, 当然了在这之前你还需要配置好realserver, 保持80通畅. ip约定: LVS-Master 192.168.1.101 LVS-BACKUP 192.168.1.102 LVS-VIP 192.168.1.8 Realserver 192.168.1.107 Realserver 192.168.1.108 然后开始安装LVS和Keepalvied软件包 cd /opt/soft wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz 在安装前还需要执行以下命令: uname -r #2.6.18-238.19.1.el5 ln -s /usr/src/kernels/2.6.18-238.19.1.el5-i686/ /usr/src/linux 如果/usr/src/kernels/为空, 请执行yum -y install kernel-devel 不是太旧的内核已经包涵了lvs的模块的, 使用以下命令检查: lsmod |grep ip_vs 如果检查结果为空, 请自行执行yum install ipvsadm安装, 或者使用源码安装: tar zxvf ipvsadm-1.24.tar.gz cd ipvsadm-1.24 make && make install cd .. 安装keepalived: tar zxvf keepalived-1.1.15.tar.gz cd keepalived-1.1.15 ./configure make && make install 创建(复制)配置/可执行文件(这样启动就不用带太多路径参数) cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/sbin/keepalived /usr/sbin/ 在realserver创建realserver.sh脚本, 脚本的作用是绑定vip并忽略arp请求(win下后面另外说) vi /etc/init.d/lvsrs #内容如下 #!/bin/bash #description : Start Real Server VIP=192.168.1.8 ./etc/rc.d/init.d/functions case "$1" in start) echo " Start LVS of Real Server" /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up 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 echo "close LVS Directorserver" 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 编辑keepalived配置文件: vi /etc/keepalived/keepalived.conf #内容如下 ! Configuration File for keepalived global_defs { notification_email { [email protected] #接收邮件的email地址 } notification_email_from [email protected] #邮件来自.. smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER ##指定Keepalived的角色, backup里修改为BACKUP interface eth0 virtual_router_id 51 priority 100 #定义优先级, backup里修改为小于100的数字, 如99 advert_int 1 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔, 单位是秒. authentication { auth_type PASS #设置验证类型, 主要有PASS和AH两种. auth_pass 1111 #设置验证密码, MASTER与BACKUP必须使用相同的密码才能正常通信. } virtual_ipaddress { 192.168.1.8 #虚拟ip, 如果有多个, 每个一行 } } virtual_server 192.168.1.8 80 { delay_loop 5 #设置realserver健康检查时间, 单位是秒. lb_algo wrr #设置负载调度算法, 这里设置为wrr, 即加权轮询算法. lb_kind DR #设置LVS实现负载均衡的机制 nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP real_server 192.168.1.107 80 { weight 5 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.1.108 80 { weight 5 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } master和backup分别执行: service keepalived start chkconfig keepalived on realserver全部执行: service lvsrs start #记得写入rc.local, 因为这个不支持chkconfig 这个时候可以在master上执行ipvsadm检测lvs是否正常: [root@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.8:http wrr persistent 50 -> 192.168.1.108:http Route 5 0 0 -> 192.168.1.107:http Route 5 0 0 [root@localhost ~]# 这个时候如果尝试停掉某一台realserver在收到宕机邮件的同时服务也不会中断(会丢失一部分用户会话状态, 这个就需要session同步了, 这里不多说), 而如果停掉master那么backup就会接替master继续服务(由配置文件里设置的同步时间决定服务中断的时间, 不过不会丢失用户会话状态). 这里随便说下win如何充当realserver, 可参考本文: http://www.cnblogs.com/daizhj/archive/2010/06/13/1693673.html 详细配置参数和高级配置其它参考文档: http://dl.windphp.com/LoadBalance/ 如有错误, 还望之处; 如转载还望注明出处.