基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

时间:2021-02-21 03:06:40

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)
实验拓扑图如下:

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用


 

目录:
一、配置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. 1、修改主机名  
  2. #vim /etc/sysconfig/network  
  3. HOSTNAME=node1 
  4.  
  5. #hostname node1  
  6. 注意:确保与uname -n结果一样  
  7.  
  8. 2、修改/etc/hosts文件,使node1和node2能解析成不同IP  
  9. #vim /etc/hosts  
  10. 172.16.0.22     node1  
  11. 172.16.0.23     node2   
  12.  
  13. 3、配置双方的ssh信任  
  14. #ssh-keygen -t rsa    
  15. #ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.0.23      #把公钥复制到远程主机上去  
  16.  
  17. 提示:node2操作也是一样,最后配置完成进行测试一下:  
  18. 在node1上测试:  
  19. #ssh node1 'ifconfig' #命令可以执行并返回结果,表示配置成功    
  20.  
  21. 4、调整双方主机的时间  
  22. #date 0807132912  
  23. #hwclock -w 

二、安装RS1(httpd)和RS2(httpd)软件,并配置成LVS(DR)模型并测试

  
 
 
  1. 1、配置RS1  
  2. 修改RS1的内核参数  
  3. #echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  4. #echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  5. #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  6. #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  7.  
  8. 配置RS1的VIP地址并添加路由  
  9. #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up  
  10. #route add -host 172.16.0.100 dev lo:0  
  11.  
  12. 使用elinks测试RS1的配置的VIP是否生效  
  13. [root@RS1 html]# elinks -dump http://172.16.0.24/index.html  
  14.                                       RS1  
  15. [root@RS1 html]# elinks -dump http://172.16.0.100/index.html  
  16.                                       RS1  
  17. 测试成功  
  18.                                         
  19.  
  20. 2、配置RS2  
  21. 修改RS2的内核参数  
  22. #echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  23. #echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  24. #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  25. #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  26.  
  27. 配置RS2的VIP地址并添加路由  
  28. #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up  
  29. #route add -host 172.16.0.100 dev lo:0  
  30.  
  31. 使用elinks测试RS2的配置的VIP是否生效  
  32. [root@RS2 html]#  elinks -dump http://172.16.0.25/index.html  
  33.                                       RS2  
  34. [root@RS2 html]#  elinks -dump http://172.16.0.100/index.html  
  35.                                       RS2  
  36. 测试成功 

三、安装与配置Heartbeat和Ldirectord软件

  
 
 
  1. 列出需要安装的软件包:  
  2. Heartbeat软件包介绍:  
  3. 最好使用rpm安装Heartbeat,方便升级  
  4. heartbeat-2.1.4-9.el5.i386.rpm               #Heartbeat核心包  
  5. heartbeat-devel-2.1.4-9.el5.i386.rpm         #Heartbeat的开发包,提供一些头文件和一些开发库等  
  6. heartbeat-gui-2.1.4-9.el5.i386.rpm           #提供图形界面配置crm图形接口  
  7. heartbeat-ldirectord-2.1.4-9.el5.i386.rpm    #主要作用:将LVS的Director配置成高可用服务还能检测后端RealServer的健康状态,专门提供的软件  
  8. heartbeat-pils-2.1.4-10.el5.i386.rpm         #这是Heartbeat的一个插件,可动态装载的模块,能够将很多的服务配置成高可用服务,提供一些专用的接口  
  9. heartbeat-stonith-2.1.4-10.el5.i386.rpm      下面三个软件包是有依赖关系都需要装上  
  10. libnet-1.1.4-3.el5.i386.rpm  
  11. perl-MailTools-1.77-1.el5.noarch.rpm  
  12. 软件包更详细的介绍使用:rpm -qpi 软件包名  
  13.  
  14. 1、安装ipvsadm  
  15. #yum -y install ipvsadm  
  16.  
  17. 注意:开机不要自动启动,把ipvsadm服务停止  
  18. # /etc/init.d/ipvsadm stop  
  19. #chkconfig ipvsadm off  
  20.  
  21. 2、安装Heartbeat和Ldirectord  
  22. #yum -y --nogpgcheck localinstall *rpm   
  23.  
  24. 3、配置Heartbeat  
  25. #Heatbeat的配置文件:  
  26. #主配置文件路径/etc/ha.d/*  
  27. #进入/etc/ha.d目录下,可以查看less README.config有详细介绍  
  28. #ha.cf          #Heartbeat的主配置文件  
  29. #haresources    #Heartbeat的资源配置文件,用于指定双机系统的主节点,集群IP,子网掩码,广播地址以及启动的服务等集群资源  
  30. #authkeys       #设定Heartbeat的认证方式,文件权限设置成600  
  31.  
  32. #cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/  
  33. #cp /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/  
  34. #cp /usr/share/doc/heartbeat-2.1.4/authkeys  /etc/ha.d/  
  35. #chmod 600 authkeys  
  36.  
  37. /etc/ha.cf/ha.cf  
  38. #vim /etc/ha.d/ha.cf  
  39. 修改并添加以下内容  
  40. logfile    /var/log/ha-log  #开启日志功能  
  41. bcast   eth0        #利用广播方式来传递心跳信息  
  42. node    node1       #定义主机节点就是Heartbeat节点  
  43. node    node2  
  44. ping 172.16.0.1     #使用ping来判断node节点是否存活  
  45. crm on              #启用crm功能  
  46.  
  47. /etc/ha.cf/ha.cf  
  48. #vim /etc/ha.d/authkeys  
  49. 修改并添加以下内容  
  50. auth  1                             #定义加密机制  
  51. 1    sha d47cc0984dad648bc470b945121233d1  #定义密码串,下面用dd命令生成  
  52.  
  53. #使用dd if=/dev/urandom count=1 bs=512 |md5sum这命令生成密码串  
  54.  
  55. /etc/ha.cf/ha.cf  
  56. #vim /etc/ha.d/haresources  
  57. 修改并添加以下内容  
  58. #node1   172.16.0.100/16/eth0/172.16.255.255 httpd #定义主节点vip,并定义lsb脚本httpd   
  59.  
  60. 4、配置Ldirecotrd  
  61. #cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/  
  62. vim /etc/ha.d/ldirectord.cf  
  63. checktimeout=3      #超时时间为3秒   
  64. checkinterval=1     #每1秒钟检查一下RS  
  65. autoreload=yes      #自动加载ldirectord配置文件  
  66. quiescent=yes       #静态模式  
  67. virtual=172.16.0.100:80     #VIP地址  
  68.         real=172.16.0.24:80 gate    #定义RS,后面的gate表示DR模型  
  69.         real=172.16.0.25:80 gate    #定义RS,后面的gate表示DR模型  
  70.         service=http                #定义的httpd服务  
  71.         request=".test.html"        #Ldirectord做健康状态检查依靠的页面,注意:.test.html文件需要在RS下面需要建立  
  72.         receive="ok"                #.test.html文件的内容为OK  
  73.         scheduler=rr                #LVS的算法是rr  
  74.         protocol=tcp                #协议是tcp  
  75.         checktype=negotiate         #定义协商方式  
  76.         checkport=80                #定义80端口   
  77.           
  78. 5、启动Heartbeat服务并设置hacluster密码  
  79. #service heartbeat start  
  80. #passwd hacluster 

四、利用hb_gui图形化进行配置

  
 
 
  1. #hb_gui & 输入命令进行图形化界面配置 

定义一个资源,建立组(group)

 

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

选择group,点击ok,进入主界面进行配置vip(172.16.0.100)

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

点击OK,并添加Add,再定义Ldirectord

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

这需要在group添加,类型选择native,点击OK,进入主界面进行配置Ldirectord

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

点击OK,并添加Add,并启动组,下面定义排列约束,让它们永远在一起

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

定义Orders

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

 

点击Ok,现在已经全部定义好了,可以测试把node1点变成standby,node2变成Active,看看能不能相互切换

五、测试

1、使用ip addr 命令查看一下vip是否存在

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

测试成功

2、使用VIP访问一下web服务器是否正常,并测试是否提供ipvs功能

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

刷新一下

基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用

 测试成功

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正常,然后开启服务,再进行测试,查看网页状态是否正常。

 

 

本文出自 “linuxsed” 博客,请务必保留此出处http://51network.blog.51cto.com/864602/957023