corosync+pacemaker+lvs-DR实现Director的高可用

 实验拓扑

 

实验环境

本实验是基于四台虚拟机实现的。地址分配拓扑图。

两台Director要同步时间,能够解析主机名称,且建立基于ssh的双机互信。

实验步骤

一、构建LVS—DR模型

构建此模型步骤详见“heartbeat v2 + lvs-DR实现Director的高可用”,在此不再赘述。

二、配置Director的高可用

安装并配置corosync

  
  
  
  
  1. 需要的rpm包 
  2. corosync-1.2.7-1.1.el5.i386.rpm  
  3. corosynclib-1.2.7-1.1.el5.i386.rpm  
  4.  
  5. cluster-glue-1.0.6-1.6.el5.i386.rpm  
  6. cluster-glue-libs-1.0.6-1.6.el5.i386.rpm   
  7.     
  8. heartbeat-libs-3.0.3-2.3.el5.i386.rpm  
  9. heartbeat-3.0.3-2.3.el5.i386.rpm 
  10.  
  11. pacemaker-libs-1.1.5-1.1.el5.i386.rpm 
  12. pacemaker-1.1.5-1.1.el5.i386.rpm   
  13. pacemaker-cts-1.1.5-1.1.el5.i386.rpm  
  14.  
  15. ldirectord-1.0.1-1.el5.i386.rpm         
  16. perl-MailTools-1.77-1.el5.noarch.rpm 
  17. perl-TimeDate-1.16-5.el5.noarch.rpm 
  18.          
  19. libesmtp-1.0.4-5.el5.i386.rpm           
  20. resource-agents-1.0.4-1.1.el5.i386.rpm 
  21.         
  22. #yum -y --nogpgcheck localinstall *.rpm 
  23. ##cd /etc/corosync   
  24. #cp corosync.conf.example corosync.conf   
  25.   
  26. 编辑corosync.conf文件   
  27.  bindnetaddr:192.168.0.0 //IP地址为网卡所在网络的网络地址   
  28.  to_syslog: no   
  29. 添加如下内容:   
  30. service {   
  31.      ver:  0   
  32.      name: pacemaker  //启用pacemaker   
  33.    }   
  34. aisexec {   
  35.     user: root   
  36.     group: root   
  37.    }       
  38. 生成节点间通信时用到的认证密钥文件并分别为两个节点创建corosync生成的日志所在的目录
  39. #corosync-keygen //此时便生成了authkey文件
  40. #scp -p corosync authkey node2:/etc/corosync
  41. #mkdir /var/log/cluster
  42.  
  43. 编辑ldirector的配置文件
  44. #cd /usr/share/doc/ldirectord-1.0.1  
  45. #cp ldirectord.cf /etc/ha.d/
  46. #vim ldirectord.cf
  47. checktimeout=3
  48. checkinterval=1
  49. autoreload=yes
  50. logfile="/var/log/ldirectord.log"
  51. quiescent=no
  52. virtual=172.16.19.1:80
  53. real=192.168.0.100:80 gate
  54. real=192.168.0.101:80 gate
  55. fallback=127.0.0.1:80 gate
  56. service=http
  57. scheduler=rr
  58. protocol=tcp
  59. checktype=negotiate
  60. checkport=80
  61. request="index.html"
  62. receive="Test Page"
  63.  
  64. #ssh ldirector node2:/etc/ha.d

配置文件准备妥当,此时要关闭ldirector开启corosync。

  
  
  
  
  1. #service ldirectord stop 
  2. #chkconfig ldirectord off
  3.  
  4. #service corosync start 
  5. #ssh node2 'service corosync stop' 

查看节点工作状态

  
  
  
  
  1. #crm status 
  2. ============ 
  3. Last updated: Mon Aug  6 20:01:43 2012 
  4. Stack: openais 
  5. Current DC: node1 - partition with quorum 
  6. Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f 
  7. 2 Nodes configured, 2 expected votes 
  8. 0 Resources configured. 
  9. ============ 
  10.  
  11. Online: [ node1 node2 ] 

节点正常运行。接着开始配置集群。

  
  
  
  
  1. 通过如下命令先禁用stonith: 
  2. # crm configure property stonith-enabled=fals 
  3. 配置策略票数不足是的策略: 
  4. # crm configure property no-quorum-policy=ignore 
  5. #crm configure show
  6. node node1
  7. node node2
  8. property $id="cib-bootstrap-options" \
  9. dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68d" \
  10. cluster-infrastructure="openais" \
  11. expected-quorum-votes="2" \
  12. stonith-enabled="false" \
  13. no-quorum-policy="ignore" \

添加集群资源

  
  
  
  
  1. #crm  //进入crm命令 
  2. #configure 
  3. #primitive ld ocf:heartbeat:ldirectord  params   
  4. configfile=/etc/ha.d/ldirectord.cf  ldirectord=/usr/sbin/ldirectord 
  5. #primitive WebIP ocf:heartbeat:IPaddr  
  6.     params ip="172.16.19.1" lvs_support="ture"  
  7. #commit  //提交     

此时资源会负载均衡到两台主机上,因此此时应该给资源定义约束。

  
  
  
  
  1. #crm  
  2. #configure 
  3. #colocation WebIP_with_ld inf:WebIP ld  
  4. #order WebIP_before_ld mandatory:WebIP ld:start 

三、测试高可用

1、若此时node1挂掉,资源会不会转移到node2上。

  
  
  
  
  1. 在node1上执行 
  2. #crm node standby 

此时会发现数据全部转移到了node2上。

2、测试ldirector是否能够检测RealServer的健康状况。

  
  
  
  
  1. 使用iptables禁用RealServer192.168.0.100节点的80端口禁用    
  2. #iptables -A INPOUT -d 192.168.0.100 -p tcp --dport 80 -j DROP 

访问网页http://172.16.19.1,查看结果。

访问正常。

在192.168.0.100上使用iptables -F清除规则重新访问站点则两主机又重新工作在了负载均衡模式下。

至此,实验完成。

你可能感兴趣的:(密钥,同步时间,corosync)