WEB Lvs Director DR实现高可用(corosync)

直接开始,整体规划如下:

WEB Lvs Director DR实现高可用(corosync)

实验通过虚拟机实现,基于Red Hat 5.8来完成

1.资源分析

在做实验之前,首先要知道高可用用于分配的资源有哪些,由于我们做的是Lvs DR模型Director的高可用,用到得资源有两个:

1)VIP:用户用来访问

2)ipvsadm

清楚了需要分配的资源,做起来就明朗多了,在实现高可用之前,我们要首先保证我们的Lvs是可以正常工作的。

2.验证资源的可用性

2.1验证实现Lvs

1)RS的配置

关于RS上web的配置可以参考我关于lnmp的博客,为了达到能清楚了解实验结果的目的,将我们两台RS上的网页文件修改成不一致,使我们跟好看到效果

#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
设定本地IP地址发出arp回应的限制级别,arp回应中的ip地址为设备上的ip地址,非发送地址,即vip
#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
定义对目标地址为本地IP的arp询问,本地的不用应答模式,只对arp查询的目标地址为来访接口的地址予以回应
#ifconfig eth0 172.16.99.2/16
#ifconfig lo:0 172.16.98.1 broadcast 172.16.98.1 netmask 255.255.255.255 up
#route add -host 172.16.98.1 dev lo:0
设置路由,凡是对172.16.98.1的IP请求,都通过lo:0设备来响应

RS2的配置过程同上,其中RIP为172.16.99.2

2)DR的配置

#yum install ipvsadm
#ifconfig eth0 172.16.99.1/16
#ifconfig eth0:0 172.16.98.1 broadcast 172.16.98.1 netmask 255.255.255.255 up
#echo 1 > /proc/sys/net/ipv4/ip_forward
开启路由转发
#ipvsadm -A -t 172.16.98.1:80 -s rr
#ipvsadm -a -t 172.16.98.1 -r 172.16.99.2 -g
#ipvsadm -a -t 172.16.98.1 -r 172.16.99.3 -g


打开网页通过vip172.16.98.1访问以下,验证Lvs

#ipvsadm -L

通过命令参看我们Director是否进行转发,通向将另一台备用的Director也进行如上的验证操作

3.高可用的配置

3.1高可用之前的准备

(DC上的配置)
#hostname node1.ying.com
#vim /etc/hosts
172.16.99.2 node1.ying.com node1
172.16.99.3 node2.ying.com node2
节点之间是通过主机名来进行解析
#ssh-keygen -t rsa
#ssh-copy-id -i .ssh/id_rsa.pub root@node2
建立双机互信,方便操作,资源的开启关闭,不能直接通过在本机上设置,要通过DC来实现,当然必须你的备用Director已经改为node2了
还有一点要注意的是,高可用主备之间,根据心跳信息的到达时间来判断DC的健康状态,所以主备之间的机器时间一定要保持一致。

3.2实现高可用

#ipvsadm -S > /etc/sysconfig/ipvsadm
保存我们定义的策略,ipvsadm开启需要的文件
#service ipvsadm stop
#scp /etc/rc.d/init.d/ipvsadm node2:/etc/rc.d/init.d
#scp /etc/sysconfig/ipvsadm node2:/etc/sysconfig
#ssh node2 'service ipvsadm stop'
(rpm包安装corosync+pacemaker)
#yum -y --nogpgcheck install cluster-glue-1.0.6-1.6.el5.i386.rpm cluster-glue-libs-1.0.6-1.6.el5.i386.rpm corosync-1.2.7-1.1.el5.i386.rpm corosynclib-1.2.7-1.1.el5.i386.rpm heartbeat-3.0.3-2.3.el5.i386.rpm heartbeat-libs-3.0.3-2.3.el5.i386.rpm libesmtp-1.0.4-5.el5.i386.rpm pacemaker-1.1.5-1.1.el5.i386.rpm pacemaker-cts-1.1.5-1.1.el5.i386.rpm pacemaker-libs-1.1.5-1.1.el5.i386.rpm perl-TimeDate-1.16-5.el5.noarch.rpm resource-agents-1.0.4-1.1.el5.i386.rp
#cd /etc/corosync
#cp corosync.conf.example corosync.conf
#vim corosync.conf
 secauth:on    心跳信息签名,如果确定高可用的就这2台设备,最好不要开启
 #to_syslog:yes 注释掉此行,并添加以下内容支持pacemaker
service {
    ver:0
    name:pacemaker
}
#corosync-keygen 生成心跳信息签名文件
 
#scp authkeys corosync.conf node2:/etc/corosync
在备Director上安装corosync后,将这两个文件考本过去,节省配置时间
#service corosync start
#ssh node2 'service corosync start'
#crm 直接进入corosync的交互式界面
crm(live)# configure 
crm(live)configure# primitive vip ocf:heartbeat:IPaddr params ip=172.16.98.1
crm(live)configure# primitive ipvsadm lsb:ipvsadm 
定义两个资源
crm(live)configure# colocation vip_with_ipvsadm inf: ipvsdm vip
crm(live)configure# order ipvsadm_after_vip inf: vip ipvsadm 
定义资源的排列约束和次序约束
crm(live)configure# property no-quorum-policy=ignore
没有仲裁设备,所以设置忽略计票记过
crm(live)configure# property stonith-enabled=false
因为没有stonith设备,会一直报错,取消掉并不影响实验
crm(live)configure# verify 验证配置
crm(live)configure# commit
提交配置到并同步到各个节点的CIB
crm(live)configure# exit
#crm_mon 
配置完成,查看高可用工作信息,显示工作的节点和资源,以及资源工作的位置
#crm node standby 
将此节点设置为备用,再次使用上个命令查看下结果的不同
#crm node online 上线
#ssh node2 'crm node standby'
将节点2设置为备用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/67fc056206fe3114d6e928a2f4f30d6c.html