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不需要过于复杂的配置,通过ip地址访问即可,为了达到能清楚了解实验结果的目的,将我们两台RS上的网页文件修改成不一致,使我们跟好看到效果

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

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

2)DR的配置

 

  
  
  
  
  1. #yum install ipvsadm 
  2. #ifconfig eth0 172.16.99.1/16 
  3. #ifconfig eth0:0 172.16.98.1 broadcast 172.16.98.1 netmask 255.255.255.255 up 
  4. #echo 1 > /proc/sys/net/ipv4/ip_forward 
  5. 开启路由转发 
  6. #ipvsadm -A -t 172.16.98.1:80 -s rr 
  7. #ipvsadm -a -t 172.16.98.1 -r 172.16.99.2 -g 
  8. #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高可用之前的准备

 

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

3.2实现高可用

 

  
  
  
  
  1. #ipvsadm -S > /etc/sysconfig/ipvsadm 
  2. 保存我们定义的策略,ipvsadm开启需要的文件 
  3. #service ipvsadm stop 
  4. #scp /etc/rc.d/init.d/ipvsadm node2:/etc/rc.d/init.d 
  5. #scp /etc/sysconfig/ipvsadm node2:/etc/sysconfig 
  6. #ssh node2 'service ipvsadm stop' 
  7. (rpm包安装corosync+pacemaker) 
  8. #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 
  9. #cd /etc/corosync 
  10. #cp corosync.conf.example corosync.conf 
  11. #vim corosync.conf 
  12.  secauth:on    心跳信息签名,如果确定高可用的就这2台设备,最好不要开启 
  13.  #to_syslog:yes 注释掉此行,并添加以下内容支持pacemaker 
  14. service { 
  15.     ver:0 
  16.     name:pacemaker 
  17. #corosync-keygen 生成心跳信息签名文件 
  18. #mkdir /var/log/cluster 创建日志文件 
  19. #scp authkeys corosync.conf node2:/etc/corosync 
  20. 在备Director上安装corosync后,将这两个文件考本过去,节省配置时间 
  21. #service corosync start 
  22. #ssh node2 'service corosync start' 
  23. #crm 直接进入corosync的交互式界面 
  24. crm(live)# configure  
  25. crm(live)configure# primitive vip ocf:heartbeat:IPaddr params ip=172.16.98.1 
  26. crm(live)configure# primitive ipvsadm lsb:ipvsadm  
  27. 定义两个资源 
  28. crm(live)configure# colocation vip_with_ipvsadm inf: ipvsdm vip 
  29. crm(live)configure# order ipvsadm_after_vip inf: vip ipvsadm  
  30. 定义资源的排列约束和次序约束 
  31. crm(live)configure# property no-quorum-policy=ignore 
  32. 没有仲裁设备,所以设置忽略计票记过 
  33. crm(live)configure# property stonith-enabled=false 
  34. 因为没有stonith设备,会一直报错,取消掉并不影响实验 
  35. crm(live)configure# verify 验证配置 
  36. crm(live)configure# commit 
  37. 提交配置到并同步到各个节点的CIB 
  38. crm(live)configure# exit 
  39. #crm_mon  
  40. 配置完成,查看高可用工作信息,显示工作的节点和资源,以及资源工作的位置 
  41. #crm node standby  
  42. 将此节点设置为备用,再次使用上个命令查看下结果的不同 
  43. #crm node online 上线 
  44. #ssh node2 'crm node standby' 
  45. 将节点2设置为备用 

 3.3扩展

通过监控RS状态来实时更改ipvsadm转发配置,避免RS出现异常Director依然转发,这里要用到的两个RPM包。

ldirectord-1.0.1-1.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

1)ldirectord的安装

  
  
  
  
  1. #yum -y --nogpgcheck install perl-MailTools-1.77-1.el5.noarch.rpm  
  2.  
  3. ldirectord-1.0.1-1.el5.i386.rpm  
  4. # cp /usr/share/doc/ldirectord-1.0.1/ldirectord.cf /etc/ha.d/ld.cf  
  5. 配置文件的名字可以自定义  
  6. #vim /etc/ha.d/ld.cf  
  7. virtual=172.16.98.1:80                     指定集群VIP  
  8.         real=172.16.99.2:80 gate           添加的RS1  
  9.         real=172.16.9.3:80 gate            添加的RS2  
  10.         #fallback=127.0.0.1:80 gate        当访问的RS不存在,请求发到哪里
  11.         service=http                        
  12.         scheduler=rr  
  13.         #persistent=600  
  14.         #netmask=255.255.255.255  
  15.         protocol=tcp  
  16.         checktype=negotiate  
  17.         checkport=80  
  18.         request="test.html"  ldirectord用来检查RS状态的网页文件,在网站根目录下创建  
  19.         receive="ok"         从网页文件中得到‘ok’字符,表示RS在线  
  20.     #   virtualhost=www.x.y.z             没有定义就注释掉,没有影响  
  21. #scp /etc/ha.d/ld.cf node2:/etc/ha.d/ldirectord.cf 
  22. 安装好node2的软件,从node1上复制配置文件即可,节省时间 

2)RS上web 页面的创建

#echo 'ok' > /var/www/html/text.html

3)DC上资源的配置

ldirectord的配置

  
  
  
  
  1. crm(live)configure#primitive ld lsb:ldirectord  
  2. crm(live)configure#delete vip_with_ipvsadm  
  3. crm(live)configure#colocation vip_ld_ipvsadm inf: vip_ld_ipvsadm  
  4. crm(live)configure#verify  
  5. crm(live)configure#commit  

 

如果我们自定义了ldirectord配置文件的名字,改/etc/rc.d/init.d/ldirectord中配置文件路径,或者将ldirectord定义为ocf资源的类型

  
  
  
  
  1. [root@node1 ~]# crm  
  2. crm(live)# ra  
  3. crm(live)ra# meta ocf:heartbeat:ldirectord  
  4. 对资源的配置有详细的说明  
  5. crm(live)configure# primitive ld ocf:heartbeat:ldirectord params configfile=/path/ ldirectord=/path/ 
  6. 指定ldirectord的配置文件路径,和命令路径 

 

 

 

 

 

 

 

你可能感兴趣的:(高可用,corosync)