1、操作系统redhat5.8
2、实验准备四台服务器:
VIP:172.16.0.100
node1:172.16.0.22(Heartbeat+Ldirector)
node2:172.16.0.23(Heartbeat+Ldirector)
RS1:172.16.0.24(httpd)
RS2:172.16.0.25(httpd)
实验拓扑图如下:
目录:
一、配置node1和node2的关系:
1、修改双方主机名为node1和node2
2、修改/etc/hosts文件,使node1和node2能解析成不同IP
3、配置双方的ssh信任
4、调整双方主机的时间
二、安装RS1(httpd)和RS2(httpd)软件,并配置成LVS(DR)模型并测试
三、安装与配置Heartbeat和Ldirectord软件
四、hb_gui的图形界面进行配置
五、测试
一、配置node1和node2的关系
- 1、修改主机名
- #vim /etc/sysconfig/network
- HOSTNAME=node1
- #hostname node1
- 注意:确保与uname -n结果一样
- 2、修改/etc/hosts文件,使node1和node2能解析成不同IP
- #vim /etc/hosts
- 172.16.0.22 node1
- 172.16.0.23 node2
- 3、配置双方的ssh信任
- #ssh-keygen -t rsa
- #ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] #把公钥复制到远程主机上去
- 提示:node2操作也是一样,最后配置完成进行测试一下:
- 在node1上测试:
- #ssh node1 'ifconfig' #命令可以执行并返回结果,表示配置成功
- 4、调整双方主机的时间
- #date 0807132912
- #hwclock -w
二、安装RS1(httpd)和RS2(httpd)软件,并配置成LVS(DR)模型并测试
- 1、配置RS1
- 修改RS1的内核参数
- #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
- 配置RS1的VIP地址并添加路由
- #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up
- #route add -host 172.16.0.100 dev lo:0
- 使用elinks测试RS1的配置的VIP是否生效
- [root@RS1 html]# elinks -dump http://172.16.0.24/index.html
- RS1
- [root@RS1 html]# elinks -dump http://172.16.0.100/index.html
- RS1
- 测试成功
- 2、配置RS2
- 修改RS2的内核参数
- #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
- 配置RS2的VIP地址并添加路由
- #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up
- #route add -host 172.16.0.100 dev lo:0
- 使用elinks测试RS2的配置的VIP是否生效
- [root@RS2 html]# elinks -dump http://172.16.0.25/index.html
- RS2
- [root@RS2 html]# elinks -dump http://172.16.0.100/index.html
- RS2
- 测试成功
三、安装与配置Heartbeat和Ldirectord软件
- 列出需要安装的软件包:
- Heartbeat软件包介绍:
- 最好使用rpm安装Heartbeat,方便升级
- heartbeat-2.1.4-9.el5.i386.rpm #Heartbeat核心包
- heartbeat-devel-2.1.4-9.el5.i386.rpm #Heartbeat的开发包,提供一些头文件和一些开发库等
- heartbeat-gui-2.1.4-9.el5.i386.rpm #提供图形界面配置crm图形接口
- heartbeat-ldirectord-2.1.4-9.el5.i386.rpm #主要作用:将LVS的Director配置成高可用服务还能检测后端RealServer的健康状态,专门提供的软件
- heartbeat-pils-2.1.4-10.el5.i386.rpm #这是Heartbeat的一个插件,可动态装载的模块,能够将很多的服务配置成高可用服务,提供一些专用的接口
- heartbeat-stonith-2.1.4-10.el5.i386.rpm 下面三个软件包是有依赖关系都需要装上
- libnet-1.1.4-3.el5.i386.rpm
- perl-MailTools-1.77-1.el5.noarch.rpm
- 软件包更详细的介绍使用:rpm -qpi 软件包名
- 1、安装ipvsadm
- #yum -y install ipvsadm
- 注意:开机不要自动启动,把ipvsadm服务停止
- # /etc/init.d/ipvsadm stop
- #chkconfig ipvsadm off
- 2、安装Heartbeat和Ldirectord
- #yum -y --nogpgcheck localinstall *rpm
- 3、配置Heartbeat
- #Heatbeat的配置文件:
- #主配置文件路径/etc/ha.d/*
- #进入/etc/ha.d目录下,可以查看less README.config有详细介绍
- #ha.cf #Heartbeat的主配置文件
- #haresources #Heartbeat的资源配置文件,用于指定双机系统的主节点,集群IP,子网掩码,广播地址以及启动的服务等集群资源
- #authkeys #设定Heartbeat的认证方式,文件权限设置成600
- #cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/
- #cp /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/
- #cp /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/
- #chmod 600 authkeys
- /etc/ha.cf/ha.cf
- #vim /etc/ha.d/ha.cf
- 修改并添加以下内容
- logfile /var/log/ha-log #开启日志功能
- bcast eth0 #利用广播方式来传递心跳信息
- node node1 #定义主机节点就是Heartbeat节点
- node node2
- ping 172.16.0.1 #使用ping来判断node节点是否存活
- crm on #启用crm功能
- /etc/ha.cf/ha.cf
- #vim /etc/ha.d/authkeys
- 修改并添加以下内容
- auth 1 #定义加密机制
- 1 sha d47cc0984dad648bc470b945121233d1 #定义密码串,下面用dd命令生成
- #使用dd if=/dev/urandom count=1 bs=512 |md5sum这命令生成密码串
- /etc/ha.cf/ha.cf
- #vim /etc/ha.d/haresources
- 修改并添加以下内容
- #node1 172.16.0.100/16/eth0/172.16.255.255 httpd #定义主节点vip,并定义lsb脚本httpd
- 4、配置Ldirecotrd
- #cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
- vim /etc/ha.d/ldirectord.cf
- checktimeout=3 #超时时间为3秒
- checkinterval=1 #每1秒钟检查一下RS
- autoreload=yes #自动加载ldirectord配置文件
- quiescent=yes #静态模式
- virtual=172.16.0.100:80 #VIP地址
- real=172.16.0.24:80 gate #定义RS,后面的gate表示DR模型
- real=172.16.0.25:80 gate #定义RS,后面的gate表示DR模型
- service=http #定义的httpd服务
- request=".test.html" #Ldirectord做健康状态检查依靠的页面,注意:.test.html文件需要在RS下面需要建立
- receive="ok" #.test.html文件的内容为OK
- scheduler=rr #LVS的算法是rr
- protocol=tcp #协议是tcp
- checktype=negotiate #定义协商方式
- checkport=80 #定义80端口
- 5、启动Heartbeat服务并设置hacluster密码
- #service heartbeat start
- #passwd hacluster
四、利用hb_gui图形化进行配置
- #hb_gui & 输入命令进行图形化界面配置
定义一个资源,建立组(group)
选择group,点击ok,进入主界面进行配置vip(172.16.0.100)
点击OK,并添加Add,再定义Ldirectord
这需要在group添加,类型选择native,点击OK,进入主界面进行配置Ldirectord
点击OK,并添加Add,并启动组,下面定义排列约束,让它们永远在一起
定义Orders
点击Ok,现在已经全部定义好了,可以测试把node1点变成standby,node2变成Active,看看能不能相互切换
五、测试
1、使用ip addr 命令查看一下vip是否存在
测试成功
2、使用VIP访问一下web服务器是否正常,并测试是否提供ipvs功能
刷新一下
测试成功
3、使用ipvsadm查看一下连接的状态:
[root@node1 ha.d]# ipvsadm -Lcn
IPVS connection entries
pro expire state source virtual destination
TCP 01:57 FIN_WAIT 192.168.0.208:51373 172.16.0.100:80 172.16.0.25:80
TCP 01:57 FIN_WAIT 192.168.0.208:51372 172.16.0.100:80 172.16.0.24:80
TCP 01:56 FIN_WAIT 192.168.0.208:51370 172.16.0.100:80 172.16.0.24:80
TCP 01:57 FIN_WAIT 192.168.0.208:51371 172.16.0.100:80 172.16.0.25:80
测试成功
4、使RS1服务停止掉,看一下Ldirectord是否能检查出来RS的健康状态,并能自动添加上服务
#/etc/init.d/httpd stop 停止httpd服务,刷新网页查看一下,此时只有一个RS正常,然后开启服务,再进行测试,查看网页状态是否正常。