LVS部署手册
 
 
 
 
目 录
 
为保证服务器能够提供高可靠、高性能服务,减轻单台服务器带来的性能压力,本配置(方法)使用LVS软件建立负载均衡和失效转移功能。
 
 
1.1   HA节点IP

节点
eth0
eth1
ha-direct1
 
 
Ha-direct2
 
 

最好能将虚拟服务器和真实服务器置于于不同的网段上,即提高了性能,也加强了整个集群系统的安全性。
 
 
 
1.3   Web服务器IP
1.4    
 
环境描述:配置LVS时使用三台linux,一台做Directorserver(192.168.0.25) ,两台做realserver(192.168.0.127 192.168.0.128,在配置lvs+heartbeat时又添加了一台(192.168.0.126)做为备份主节点,虚拟VIP:192.168.0.100
 
软件包ipvsadm-1.24.tar.gz(对应当前的内核版本)
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make && make install
*在make时可能会出现很多错误的信息,按照如下操作就可以正常编译
ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux
INCLUDE默认指向/usr/src/linux,编译时会出错,因为找不到/usr/src/linux,所以通过连接,解决此问题。或者通过修改Makefile,将
修改当前目录和libipvs目录中的Makefile的:
INCLUDE                = -I/usr/src/linux/include -I.. -I.
   为:
INCLUDE         = -I/usr/src/kernels/2.6.9-22.EL-i686/include -I.. -I.
 
cd ipvsadm-1.24
make && make install
安装完成后,执行ipvsadm命令,如果有如下信息出现则说明安装成功了
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 
[root@ns ~]#more /etc/init.d/lvsDR
#!/bin/sh
#create in 20081119 by lidl
# description: start LVS   of  Directorserver
VIP=192.168.0.100
RIP1=192.168.0.127
RIP2=192.168.0.128
#RIPn=192.168.0.128~254
GW=192.168.0.1
. /etc/rc.d/init.d/functions
case "$1" in
    start)
echo " start LVS  of DirectorServer"
 # set the Virtual  IP Address
       /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
       /sbin/route add -host $VIP dev eth0:0
       #Clear IPVS table
       /sbin/ipvsadm –C
      #set LVS
      /sbin/ipvsadm -A -t $VIP:80 -s rr  (如果需要session保持添加-p 默认保持300秒)
      /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 –g
      /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 –g
      #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 –g
      #Run LVS
      /sbin/ipvsadm
      #end
        ;;
stop)
        echo "close LVS Directorserver"
    /sbin/ipvsadm –C
    ;;
*)
    echo "Usage: $0 {start|stop}"
    exit 1
esac
 
启动此脚本
 
1.3.2.      配置realserver脚本
#!/bin/bash
#description : start realserver
#create in 20081119 by lidl
VIP=192.168.0.100
/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
sysctl –p
#end
此脚本使realserver不响应arp请求,将此脚本分别在realserver上执行就可以了。
 
#./ipvsadm
 
 
libnet.tar   下载地址:
 稳定版本是:1.1.2.1
e2fsprogs    可以用rpm 安装光盘
heartbeat-2.0.2.tar.gz       下载地址:
tar -zxvf libnet.tar.gz
cd libnet
./configure
make && make install
tar zxf heartbeat-1.99.4.tar.gz
cd heartbeat-1.99.4
./ConfigureMe configure --disable-swig --disable-snmp-subagent
make && make install
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
cp ldirectord/ldirectord.cf /etc/ha.d/
groupadd -g 694 haclient
useradd -u 694 -g haclient hacluster
主配置文件(/etc/ha.d/ha.cf)
#debugfile /var/log/ha-debug
logfile /var/log/ha-log   #指名heartbeat的日志存放位置
#crm yes #支持ClusterResourceManager(集群资源管理)功能
#bcast eth1 #指明心跳方式使用以太广播方式,并且是在eth1接口上进行广播。
logfacility local0
keepalive 2#指明心跳时间为2秒(即每两秒钟在eth1上发送一次广播)。
deadtime 30#指定在30秒内没有心跳信号,则立即切换服务。
warntime 10 #指明心跳延迟的时间为十秒。当10秒钟内备份机不能联系上主机(当前活动的服务器,即无心跳信号),就会往日志中写入一个警告日志,但此时不会切换服务。
initdead 120  #With some configurations, the network takes some time to start working after a reboot. This is a separate  "deadtime" to  handle that case. It should be at least twice the normal deadtime.
udpport 694#Use port number 694 for bcast or ucast communication. This is the default, and the official IANA registered port number.
baud 19200
serial /dev/ttyS0
mcast eth0 225.0.0.1 694 1 0
# 当主节点恢复后,是否自动切回
auto_failback on
# stonith用来保证共享存储环境中的数据完整性
#stonith baytech /etc/ha.d/conf/stonith.baytech
# watchdog能让系统在出现故障1分钟后重启该机器。这个功能可以帮助服务器在确实停止心跳后能够重新恢复心跳。
# 如果使用该特性,则在内核中装入"softdog"内核模块,用来生成实际的设备文件,输入"insmod softdog"加载模块。
# 输入"grep misc /proc/devices"(应为10),输入"cat /proc/misc | grep watchdog"(应为130)。
# 生成设备文件:"mknod /dev/watchdog c 10 130" 。
#watchdog /dev/watchdog
node ns.ghb.com   #Mandatory. Hostname of machine in cluster as described by uname -n.
node nsbak.ghb.com
# 默认heartbeat并不检测除本身之外的其他任何服务,也不检测网络状况。
# 所以当网络中断时,并不会进行Load Balancer和Backup之间的切换。
# 可以通过ipfail插件,设置'ping nodes'来解决这一问题。详细说明参考hearbeat文档。
#ping 192.168.136.1 172.16.0.1
ping_group group1 192.168.0.25 192.168.0.126
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
# 其他一些插件可以在/usr/lib/heartbeat下找到
#apiauth ipfail uid=hacluster
#apiauth ccm uid=hacluster
#apiauth cms uid=hacluster
#apiauth ping gid=haclient uid=alanr,root
#apiauth default gid=haclient
资源文件(/etc/ha.d/haresources):
ns.ghb.com IPaddr::192.168.0.127/24/eth0 httpd
#设置ns.ghb.com为主节点,集群服务器的ip地址为192.168.0.100 netmask 为255.255.255.240集群的服务有httpd
认证文件(/etc/ha.d/authkeys),选取一种认证方式,这个文件的权限必须是600
auth 1
1 crc
#2 sha1 sha1_any_password
#3 md5 md5_any_password
chmod 600 /etc/ha.dauthkeys
vi /etc/hosts
添加两台机器的名字,做好名字到IP的对应
使用同样的方法配置节点2
备份节点192.168.0.126 上的heartbeat和apache的配置与节点1要完全相同,lvs配置也要相同。
1.3.    
 
启动Apache和Tomcat,用浏览器访问http://localhost/,应该可以看到正确的