实验环境:四台虚拟机,两台为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安装。
- heartbeat-2.1.4-9.el5.i386.rpm
- heartbeat-pils-2.1.4-10.el5.i386.rpm
- heartbeat-devel-2.1.4-9.el5.i386.rpm
- heartbeat-stonith-2.1.4-10.el5.i386.rpm
- heartbeat-gui-2.1.4-9.el5.i386.rpm
- libnet-1.1.4-3.el5.i386.rpm
- heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
- perl-MailTools-1.77-1.el5.noarch.rpm
五,安装成功后需要给heartbeat,heartbeat-ldirector提供配置文件
- [root@director1 ~]# cd /etc/ha.d/
- [root@director1 ~]# cp /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/
- [root@director1 ~]# cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/
- [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
- keepalive 2表示每隔多长时间向对方传递一个心跳消息,启用
- deadtime 30 备用节点在多长时间内收不到对方的心跳信息,则认为对方有故障,启用
- warntime 10 多长时间发出警告,启用
- initdead 120s 默认是120表示第一次等待多长时间等待别的节点加入。如果超过这个时间还没加入,
- 则就只认为只有自己一个节点
- udpport 694 心跳信息传递的端口,专门留给heartbeat传递心跳信息
- bcast eth0,启用广播方式。也可以使用单播。通过eth0来广播
- node director1
- node director2定义节点的名称
- auto_faliback 0n 表示当这个节点又重新工作时,把资源抢回来了。启用
- ping 172.16.0.1 这个IP是网关,能ping通,表示网络正常。如果接收不对方的心跳则认为对方有故障,启用
- debug 1如果启用可以记录更详细的信息,当出现故障可以启用。
- compression bz2 启用压缩,采用bz2
- compression_threshold 2只有大于2k才压缩,启用
- crm yes(respawn) 添加这一行,表示启用crm功能,可以使用crm命令,并启用图形终端,这行必须添加
(2)vim /etc/ha.d/authkeys添加下面两行,并此修改权限chmod 600 /etc/ha.d/authkeys,如果不修改无法启动heartbeat服务。
- auth 1
- 1 md5 294f6577d231a3bedaf26540a4faa660 通过下面命令生成
- [root@node1 ha.d]# dd if=/dev/urandom count=1 bs=512 |md5sum
(3)vim /etc/ha.d/ldirectord.cf
- # Global Directives (表示全局配置属性)
- checktimeout=3 检查realserver超时时间,如果3秒内没有响应,则认为rs服务器出现故障
- checkinterval=1 每隔一秒钟检查一次
- #fallback=127.0.0.1:80
- autoreload=yes 当前配置文件发生改变会自动加载
- logfile="/var/log/ldirectord.log" 启用日志
- #logfile="local0"
- #emailalert="admin@x.y.z"
- #emailalertfreq=3600
- #emailalertstatus=all
- quiescent=yes 工作在安静模式
- virtual=172.16.150.1:80
- real=172.16.150.30:80 gate
- real=172.16.150.31:80 gate
- #fallback=127.0.0.1:80 gate real都不在线时,将服务转到本机
- service=http 有监测后台rs的状态,基于http协议来检测
- request=".test.html" 最好不要使用主页,使用一个隐藏的页面
- receive="ok" 从检测页中获取的信息,如果能获取到则rs正常,否则就挂机了
- #virtualhost=some.domain.com.au 虚拟主机名
- scheduler=rr 使用哪种算法
- #persistent=600是否启用持久性
- #netmask=255.255.255.255 虚拟ip的掩码
- protocol=tcp
- checktype=negotiate 检测方式,协商的方式
- checkport=80
- #request="index.html"
- #receive="Test Page"
- #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上
- [root@director1 ha.d]# scp authkeys ldirectord.cf ha.cf director2:/etc/ha.d/
(5)启动heartbeat服务,在同一台主机启动与停止heartbeat服务
- [root@director1 ~]# /etc/init.d/heartbeat start
- Starting High-Availability services:
- [ OK ]
- [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,有没有生效。