1.环境:

主节点:172.16.5.200  puppet-master.cmmobi-wh.com
备节点:172.16.5.201  puppet-slave.cmmobi-wh.com
VIP:172.16.5.222
realserver1:172.16.5.202   test.cmmobi-wh.com
realserver2:172.16.5.158   hadoopm.cmmobi-wh.com
2.lvs+heartbeat安装

1)配置hosts文件,保证主备节点一致
#vim /etc/hosts
172.16.5.200 puppet-master.cmmobi-wh.com
172.16.5.201 puppet-slave.cmmobi-wh.com
2)配置主备节点双机互信
puppet-master:
#ssh-keygen
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@puppet-slave
puppet-slave:
#ssh-keygen
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@puppet-master
3)安装lvs和heartbeat(主备节点都需要安装)
lvs:
# wget ftp://ftp.muug.mb.ca/mirror/centos/6.4/os/x86_64/Packages/ipvsadm-1.25-10.el6.x86_64.rpm
#rpm -vih ipvsadm-1.25-10.el6.x86_64.rpm
heartbeat:
创建用户:
#groupadd -r haclient
#useradd -r -g haclient -s /sbin/nologin -M hacluster
配置yum,并安装依赖包:
# rpm -vih   http://mirror.sohu.com/fedora-epel/6/x86_64/ epel-release-6-8.noarch.rpm
#yum groupinstall -y "Development Tools"
#yum install -y autoconf automake e2fsprogs-devel libuuid-devel libtool-ltdl-devel libtool libxml2 libxml2-devel bzip2-devel glib2-devel docbook* libxslt libxslt-devel
#yum install -y perl-Socket6  perl-IO-Socket-INET6 perl-TimeDate perl-Pod-Escapes perl-Pod-Simple  perl-Test-Pod perl-MailTools perl-libwww-perl      #当需要使用ldirectord时,如果不安装上述软件包,启动ldirectord会报错。如果不使用ldirectord,则可以不用安装。

下载heartbeat相关软件包并执行安装
#cd /usr/local/src
#wget http://hg.linux-ha.org/glue/archive/glue-1.0.9.tar.bz2
#wget --no-check-certificate https://github.com/ClusterLabs/resource-agents/tarball/v3.9.2
#tar xf glue-1.0.9.tar.bz2
#cd Reusable-Cluster-Components-glue--glue-1.0.9
#./autogen.sh
#./configure --prefix=/usr --sysconfdir=/etc
#make && make install

#cd ../
#tar xf v3.9.2
#cd ClusterLabs-resource-agents-b735277/
#./autogen.sh
#./configure --prefix=/usr --sysconfdir=/etc
#make && make install

#cd ../
#tar xf  7e3a82377fa8.tar.bz2
#cd Heartbeat-3-0-7e3a82377fa8/
#./bootstrap
#./ConfigureMe configure --prefix=/usr --sysconfdir=/etc
#make && make install
3.heartbeat配置(保证主备节点上所有配置文件相同)
cd /usr/share/doc/heartbeat
cp authkeys ha.cf haresources /etc/ha.d
cp /usr/local/src/ClusterLabs-resource-agents-b735277/ldirectord/ldirectord.cf /etc/ha.d
1)配置 authkeys(心跳信息的加密方式)
#vim /etc/ha.d/authkeys
auth 1
1 crc
#chmod 600 /etc/ha.d/authkeys
2)配置ha.cf(heartbeat主配置文件)
#vim /etc/ha.d/ha.cf
logfile/var/log/ha-log   #日志文件存放路径
logfacilitylocal0
keepalive 2                      #节点间传递心跳的时间间隔
deadtime 10                    #当十秒钟无心跳响应,即认为对方节点死亡
warntime 5                       #当超过5秒无心跳响应,即在日志中发出警告信息
initdead 120                     #网络或系统初始化时,超过120秒无心跳响应,即认为对方节点死亡
udpport694                      #传递心跳的端口
bcasteth0                          #以广播的方式传递心跳信息,由eth0作为传递心跳的接口
auto_failback on               #该节点故障后重新上线,则从备节点处抢夺回资源
node puppet-master.cmmobi-wh.com    
node puppet-slave.cmmobi-wh.com    #定义节点
ping 172.16.5.22                                 #选择一台比较牢靠的服务器作为ping节点,如果本服务器无法ping通该ping节点,则认为自己死亡
respawn hacluster /usr/lib64/heartbeat/ipfail  # 使得Heartbeathacluster的身份来执行该进程并监视该进程的执行情况,如果其死亡便重启之。
apiauth ipfail uid=hacluster
3)配置haresources(资源管理的配置文件)
#vim /etc/ha.d/haresources
puppet-master.cmmobi-wh.com IPaddr::172.16.5.222/24/eth0 ldirectord
双机启动heartbeat时,配置vip 192.168.79.135/24/eth0,然后启动ldirectord来设置puppet-master成lvs负载器。如果puppet-master出故障,其上的heartbeat将从右到左依次停止服务,接着puppet-slave接管所有服务
4)配置ldirectord.cf文件(用于管理lvs,并对其后端realserver作健康检查)
#vim /etc/ha.d/ldirectord.cf
checkout=10    #ldirectord等待健康检查执行完毕的等待时间,如果在设置时间内没有完成检查,ldirectord 则会从ipvs表中删除真实服务器。
checkinterval=8   #ldirectord在两个检查之间的时间间隙
autoreload=yes   #自动读取配置文件
logfile="/var/log/ldirectord.log"   #日志文件存放路径
logfile="local0"
quiescent=no       #当选择no时,如果一个节点在checktimeout设置的时间周期内没有响应,ldirectord将会从LVS的路由表中直接移除real server,此时,将中断现有的客户端连接,并使LVS丢掉所有的连接跟踪记录和持续连接模板,如果选择为yes,当某个real server失效时,ldirectord将失效节点的权值设置为0,新的连接将不能到达,但是并不从LVS路由表中清除此节点,同时,连接跟踪记录和程 序连接模板仍然保留在Director上。
virtual=172.16.5.222:8080          #VIP
real=172.16.5.158:8080 gate    #realserver ip及端口
real=172.16.5.202:8080 gate    
service=http                                   #服务类型
request="test.html"                       #健康检查时,向后端realserver请求的页面
receive="Test Page"                      #健康检查时,当向后端realserver请求的页面中包含"Test Page"关键字时,则认为后端realserver正常
scheduler=rr                                   #lvs的调度算法
persistent=30
protocol=tcp                                    #lvs的端口号                        
checktype=negotiate                     #ldirectord的健康检测类型
checkport=8080                             #监控的端口号
4.配置realserver(两台realserver上的配置相同)
#yum install -y httpd
#vim /etc/httpd/conf/httpd.conf
Listen 8080
#echo "Test Page" >> /var/www/html/test.html
#echo "heartbeat sucess" >> /var/www/html/index.html
#service httpd start
测试 :
在浏览器输入http://172.16.5.222:8080