实验拓扑
实验环境
本实验是基于四台虚拟机实现的。地址分配拓扑图。
两台Director要同步时间,能够解析主机名称,且建立基于ssh的双机互信。
实验步骤
一、构建LVS—DR模型
构建此模型步骤详见“heartbeat v2 + lvs-DR实现Director的高可用”,在此不再赘述。
二、配置Director的高可用
安装并配置corosync
- 需要的rpm包
- corosync-1.2.7-1.1.el5.i386.rpm
- corosynclib-1.2.7-1.1.el5.i386.rpm
- cluster-glue-1.0.6-1.6.el5.i386.rpm
- cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
- heartbeat-libs-3.0.3-2.3.el5.i386.rpm
- heartbeat-3.0.3-2.3.el5.i386.rpm
- pacemaker-libs-1.1.5-1.1.el5.i386.rpm
- pacemaker-1.1.5-1.1.el5.i386.rpm
- pacemaker-cts-1.1.5-1.1.el5.i386.rpm
- ldirectord-1.0.1-1.el5.i386.rpm
- perl-MailTools-1.77-1.el5.noarch.rpm
- perl-TimeDate-1.16-5.el5.noarch.rpm
- libesmtp-1.0.4-5.el5.i386.rpm
- resource-agents-1.0.4-1.1.el5.i386.rpm
- #yum -y --nogpgcheck localinstall *.rpm
- ##cd /etc/corosync
- #cp corosync.conf.example corosync.conf
- 编辑corosync.conf文件
- bindnetaddr:192.168.0.0 //IP地址为网卡所在网络的网络地址
- to_syslog: no
- 添加如下内容:
- service {
- ver: 0
- name: pacemaker //启用pacemaker
- }
- aisexec {
- user: root
- group: root
- }
- 生成节点间通信时用到的认证密钥文件并分别为两个节点创建corosync生成的日志所在的目录
- #corosync-keygen //此时便生成了authkey文件
- #scp -p corosync authkey node2:/etc/corosync
- #mkdir /var/log/cluster
- 编辑ldirector的配置文件
- #cd /usr/share/doc/ldirectord-1.0.1
- #cp ldirectord.cf /etc/ha.d/
- #vim ldirectord.cf
- checktimeout=3
- checkinterval=1
- autoreload=yes
- logfile="/var/log/ldirectord.log"
- quiescent=no
- virtual=172.16.19.1:80
- real=192.168.0.100:80 gate
- real=192.168.0.101:80 gate
- fallback=127.0.0.1:80 gate
- service=http
- scheduler=rr
- protocol=tcp
- checktype=negotiate
- checkport=80
- request="index.html"
- receive="Test Page"
- #ssh ldirector node2:/etc/ha.d
配置文件准备妥当,此时要关闭ldirector开启corosync。
- #service ldirectord stop
- #chkconfig ldirectord off
- #service corosync start
- #ssh node2 'service corosync stop'
查看节点工作状态
- #crm status
- ============
- Last updated: Mon Aug 6 20:01:43 2012
- Stack: openais
- Current DC: node1 - partition with quorum
- Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
- 2 Nodes configured, 2 expected votes
- 0 Resources configured.
- ============
- Online: [ node1 node2 ]
节点正常运行。接着开始配置集群。
- 通过如下命令先禁用stonith:
- # crm configure property stonith-enabled=fals
- 配置策略票数不足是的策略:
- # crm configure property no-quorum-policy=ignore
- #crm configure show
- node node1
- node node2
- property $id="cib-bootstrap-options" \
- dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68d" \
- cluster-infrastructure="openais" \
- expected-quorum-votes="2" \
- stonith-enabled="false" \
- no-quorum-policy="ignore" \
添加集群资源
- #crm //进入crm命令
- #configure
- #primitive ld ocf:heartbeat:ldirectord params
- configfile=/etc/ha.d/ldirectord.cf ldirectord=/usr/sbin/ldirectord
- #primitive WebIP ocf:heartbeat:IPaddr
- params ip="172.16.19.1" lvs_support="ture"
- #commit //提交
此时资源会负载均衡到两台主机上,因此此时应该给资源定义约束。
- #crm
- #configure
- #colocation WebIP_with_ld inf:WebIP ld
- #order WebIP_before_ld mandatory:WebIP ld:start
三、测试高可用
1、若此时node1挂掉,资源会不会转移到node2上。
- 在node1上执行
- #crm node standby
此时会发现数据全部转移到了node2上。
2、测试ldirector是否能够检测RealServer的健康状况。
- 使用iptables禁用RealServer192.168.0.100节点的80端口禁用
- #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清除规则重新访问站点则两主机又重新工作在了负载均衡模式下。
至此,实验完成。