实验环境:四台虚拟机,两台为LVS,两台为web服务器。系统为redhat 5.8。使用图形窗口来配置。

此次实现只对lvs做高可用,且lvs工作在DR模型中。DR模型怎么配置此次实现不在详细说明,请参照http://bingodeng.blog.51cto.com/1038075/948738

一,先对we1,web2安装好httpd软件,并且能够正常访问。还需要修改内核参数,对web1,web2,测试好后,请务必停止httpd服务。

二,分别对lvs两台服务器测试,并用vip能正常访问到。

三,上面两步做完之后,对lvs的yum源配置好,并对lvs做双机互信。双机互信参考此文http://bingodeng.blog.51cto.com/1038075/954107

四,在两台lvs下载下列rpm包,并用yum -y --nogpgcheck localinstall *.rpm安装。

 
  
  1. heartbeat-2.1.4-9.el5.i386.rpm             
  2. heartbeat-pils-2.1.4-10.el5.i386.rpm 
  3. heartbeat-devel-2.1.4-9.el5.i386.rpm       
  4. heartbeat-stonith-2.1.4-10.el5.i386.rpm 
  5. heartbeat-gui-2.1.4-9.el5.i386.rpm         
  6. libnet-1.1.4-3.el5.i386.rpm 
  7. heartbeat-ldirectord-2.1.4-9.el5.i386.rpm  
  8. perl-MailTools-1.77-1.el5.noarch.rpm 

五,安装成功后需要给heartbeat,heartbeat-ldirector提供配置文件

 
  
  1. [root@director1 ~]# cd /etc/ha.d/ 
  2. [root@director1 ~]# cp /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/ 
  3. [root@director1 ~]# cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/ 
  4. [root@director1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ 

六,注意我的两台lvs的主机名分别为director1,director2。对上面的三个配置文件做以下修改:
(1)vim /etc/ha.d/ha.cf

 
  
  1. keepalive 2表示每隔多长时间向对方传递一个心跳消息,启用 
  2. deadtime  30 备用节点在多长时间内收不到对方的心跳信息,则认为对方有故障,启用 
  3. warntime 10 多长时间发出警告,启用 
  4. initdead 120s 默认是120表示第一次等待多长时间等待别的节点加入。如果超过这个时间还没加入,
  5. 则就只认为只有自己一个节点 
  6. udpport 694 心跳信息传递的端口,专门留给heartbeat传递心跳信息 
  7. bcast eth0,启用广播方式。也可以使用单播。通过eth0来广播 
  8. node director1 
  9. node director2定义节点的名称 
  10. auto_faliback 0n 表示当这个节点又重新工作时,把资源抢回来了。启用 
  11. ping 172.16.0.1 这个IP是网关,能ping通,表示网络正常。如果接收不对方的心跳则认为对方有故障,启用 
  12. debug 1如果启用可以记录更详细的信息,当出现故障可以启用。 
  13. compression bz2 启用压缩,采用bz2 
  14. compression_threshold 2只有大于2k才压缩,启用 
  15. crm yes(respawn) 添加这一行,表示启用crm功能,可以使用crm命令,并启用图形终端,这行必须添加 

(2)vim /etc/ha.d/authkeys添加下面两行,并此修改权限chmod 600 /etc/ha.d/authkeys,如果不修改无法启动heartbeat服务。

 
  
  1. auth 1 
  2. 1  md5  294f6577d231a3bedaf26540a4faa660 通过下面命令生成
  3. [root@node1 ha.d]# dd if=/dev/urandom count=1 bs=512 |md5sum

(3)vim /etc/ha.d/ldirectord.cf

 
  
  1. # Global Directives (表示全局配置属性)
  2. checktimeout=3 检查realserver超时时间,如果3秒内没有响应,则认为rs服务器出现故障 
  3. checkinterval=1 每隔一秒钟检查一次 
  4. #fallback=127.0.0.1:80 
  5. autoreload=yes  当前配置文件发生改变会自动加载 
  6. logfile="/var/log/ldirectord.log" 启用日志 
  7. #logfile="local0" 
  8. #emailalert="admin@x.y.z" 
  9. #emailalertfreq=3600 
  10. #emailalertstatus=all 
  11. quiescent=yes  工作在安静模式 
  12. virtual=172.16.150.1:80
  13. real=172.16.150.30:80 gate
  14. real=172.16.150.31:80 gate
  15. #fallback=127.0.0.1:80 gate real都不在线时,将服务转到本机
  16. service=http 有监测后台rs的状态,基于http协议来检测
  17. request=".test.html" 最好不要使用主页,使用一个隐藏的页面
  18. receive="ok" 从检测页中获取的信息,如果能获取到则rs正常,否则就挂机了
  19. #virtualhost=some.domain.com.au 虚拟主机名
  20. scheduler=rr 使用哪种算法
  21. #persistent=600是否启用持久性
  22. #netmask=255.255.255.255 虚拟ip的掩码
  23. protocol=tcp
  24. checktype=negotiate 检测方式,协商的方式
  25. checkport=80
  26. #request="index.html"
  27. #receive="Test Page"
  28. #virtualhost=www.x.y.z

在web1,web2,分别建立

[root@web1 ~]# vim /var/www/html/.test.html 建立测试页面,里面的内容必须包含ok。

[root@web2 ~]# vim /var/www/html/.test.html

(4)将三个文件复制director2上

 
  
  1. [root@director1 ha.d]# scp authkeys ldirectord.cf ha.cf director2:/etc/ha.d/ 

(5)启动heartbeat服务,在同一台主机启动与停止heartbeat服务

 
  
  1. [root@director1 ~]# /etc/init.d/heartbeat start 
  2. Starting High-Availability services:  
  3.                                                            [  OK  ] 
  4. [root@director1 ~]# ssh director2  /etc/init.d/heartbeat start 

七,下面开始使用图形界面配置:

(1)给hacluster用户设定密码,登录图形的时候需要用这个用户登录,且需要密码

[root@director1 ~]# passwd  hacluster
[root@director1 ~]# ha_gui & 启用图形终端,后台运行这个进程。我使用的远程连接软件Xmanager Enterprise 4,如果你使用的软件不支持启动图形界面,需要到虚拟机里面执行此命令,当执行完后,会弹出一个登录窗口。

 

登录之后,可以看到当前两个集群节点的状态

(2)定义资源vip与ldirectord两个资源,点Resources。

 选择native类型,Resouce ID,自己定义

 定义资源ldirector

 此时完成两个资源的定义。让两个资源生效,如下图点,右击,点start。两个资源不会同时运行在同一个节点上,那么此时需要对两个节点定义约束关系。

对资源定义约束关系:分别定义顺序约束,与排列约束。顺序约束表示,两个资源哪个资源先启动。而排列约束定义两个资源要不要同时运行在一个节点,还是不能运行在同一个节点上。

(1)先定义顺序约束:order。ldirectord比vip先动。ldirectord控制的是ipvsadm的规则。

(2)定义排列约束:ldirectord与vip必须要在一起,才有意义。

到此结束,查看vip,不能用ifconfig查看,需要用ip addr show来查看。查看ipvsadm -Ln,有没有生效。