设为首页 收藏本站
查看: 925|回复: 0

[经验分享] 手动实现高可用LVS的资源转移

[复制链接]
发表于 2019-1-5 09:53:50 | 显示全部楼层 |阅读模式
  在高可用集群中在主节点当即后如果资源不能成功转移到该高可用集群的其他节点上那么这个集群的高可用性就无从谈起,所以在高可用集群中资源成功转移才是王道!   
    在《一步步教你为LVS中的Director实现高可用集群》这篇文章中给大家讲解了怎样使用Heartbeat自带的软件包实现LVS中Director的高可用性集群的资源转移,可以说Heartbeat专门为LVS中Director实现高可用集群打造的软件包,只需要修改一个配置文件,所有的资源转移问题迎刃而解,我们除了使用这个专门的软件包之外完全可以使用自己手工编写的脚本来实现,下面我们就用自己编写的脚本来实现这个话题中的资源转移。     
      

      我们本次讲解是基于DR的LVS中Director的高可用集群,所以先根据下图建立这个大的结构。
          
      route为连接外网的路由器,switch为内网中的交换机,RS1提供web服务(主要是为了进行实验结果的验证,所以我们就只用一个realserver主机RS1),直接和交换机相连,ND1、ND2为LVS中的两个Director节点,我们要对这连个Director节点实现高可用集群服务,两个Director和交换机直接相连之外,两个节点之间还需要直接连接进行心跳等基本信息的传递。  
    每个有标记的块状物为网卡,上面是编号,在连个ND节点之间有一个被称为资源一部分的VIP在哪个节点上是不固定的,外网的用户也是通过这个VIP来访问我们的web服务的。

  开始配置: 设定VIP为192.168.0.85/24
  1、对RS1的配置
  (1)对realserver配置内核参数:   
先来解释一下修改内核参数的原因,因为在DR模型中RS1、RS2在lo:0上都配置了VIP的地址,是为了在数据包响应用户的时候源地址为用户访问的VIP地址,但是在数据包进入路由器之后,在我们的内网中有多个VIP地址,路由器将不能将其转发到应该得到数据包的ND上,为了避免这种情况出现,我们就修改内核参数来让RS上的VIP网卡不对路由器的产生响应即可。      
   echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore     
   echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore     
   echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce     
   echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

  (2)为RS1配置虚拟的VIP地址(是为了实现在数据包返回用户的时候源地址为用户访问的地址)  
ifconfig lo:0 192.168.0.85 broadcast 192.168.0.85 netmask 255.255.255.255 up     
为RS1的eth0网卡添加地址     
ifconfig eth0 192.168.0.207/24

  (3)给realserver主机添加路由信息   
route add -host 192.168.0.85 dev lo:0 设定相应的数据包的源地址都为这个地址

  (4)为RS1安装web服务   
yum install php php-mbstring mysql mysql-server httpd php-mysql     
(5)为实现结果为web指定一个有其代号的网页     
echo RS1 > /var/www/html/index.html

  (6)测试httpd服务能否正常运行,测试结果如下:   
        
         

  二、对两个Director节点进行配置:
     配置两个Director节点,ND1为node1,ND2为node2   
1、给node1配置地址  
   ifconfig eth0 192.168.0.202/24  
   ifconfig eth1 1.1.1.1     
   给noid2配置地址  
   ifconfig eth0 192.168.0.204/24     
   ifconfig eth1 1.1.1.2     
2、配置本地主机名称解析

     在node1上   
   vim /etc/hosts 添加如下内容     
   192.168.0.202 node1.a.org  
   192.168.0.204 node2.a.org

  对node1、node2的主机名进行相应的修改   
在node1上     
hostname node1.a.org     
在node2上  
hostname node2.a.org

   3、只有我们要多次在连个节点间拷贝文件,为了省去繁琐的密码输入,我们在两个节点上进行如下配置
  在node1上   
ssh-keygen -t rsa     
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.204     
在node2上     
ssh-keygen -t rsa     
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.202     
从此我们在两个节点上拷贝文件就不需要输入密码了

  4、开始安装集群服务
  (1)、下载安装包  
heartbeat-2.1.4-9.el5.i386.rpm     
heartbeat-pils-2.1.4-10.el5.i386.rpm     
heartbeat-devel-2.1.4-9.el5.i386.rpm     
heartbeat-stonith-2.1.4-10.el5.i386.rpm     
heartbeat-gui-2.1.4-9.el5.i386.rpm     
libnet-1.1.4-3.el5.i386.rpm     
创建一个目录将所用的安装包都放在这个目录内     
mkdir node     
将软件包移动进目录的命令我就不再说明了

  (2)、安装 这些软件包,因为他们之间有依赖关系,所以使用yum安装
  cd node   
yum localinstall * --nogpgcheck –y

  前两步需要在两个节点上都进行同样的操作
  (3)、将Heartbeat的主要配置文件拷贝到/etc/ha.d中
  cd /usr/share/doc/heartbeat-2.1.4   
cp ha.cf authkeys haresources /etc/ha.d

  (4)、编辑配置文件/etc/ha.d/ha.cf
  vim /etc/ha.d/ha.cf 进行如下修改   
打开日志 logfile /var/log/ha-log     
打开 udpport 694 两节点用此端口发送心跳信息     
添加 bcast eth1 发送心跳信息的网卡     
添加定义节点 node node1.a.org     
node node2.a.org

  (5)、编辑配置文件/etc/ha.d/authkeys   
vim /etc/ha.d/authkeys 添加如下内容     
auth 2     
2 sha1 kfhslkdhfsk(md5加密后的字符串,想要得到这个字符串运行如下命令,在将结果粘贴即可     
dd if=/dev/urandom bs=512 count=1 | md5sum)

  将此文件的权限改为400   
chmod 400 authkeys

  (6)、编辑配置文件/etc/ha.d/haresources
  vim /etc/ha.d/haressources 添加如下内容   
node1.a.org 192.168.0.85/32/eth0/192.168.0.255  ipvs.sh     
上面的内容依次为:主节点的主机名,提供服务的IP即VIP,设定VIP的端口,广播地址,运行的脚本(这个脚本就是实现资源转移的,我们在最后来编写)

  (7)、将我们配置的这三个文件拷贝到node2上
  cd /etc/ha.d   
scp ha.cf authkeys ldirectord node2.a.org:/etc/ha.d

  (8)、编写实现资源转移的脚本ipvs.sh,内容如下:
  #!/bin/bash   
VIP=192.168.0.85     
RIP1=192.168.0.207     

case "$1" in     
start)     
   /sbin/iptables -F     
  /sbin/iptables -Z     
  /sbin/ipvsadm -C     
  /sbin/ipvsadm -A -t $VIP:80 -s wlc     
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 3     
  /bin/touch /var/lock/subsys/ipvsadm.lock     
;;

  stop)   
  /sbin/ipvsadm -C     
  /sbin/ifconfig eth0:0 down     
  /sbin/route del -host 192.168.0.85 dev eth0:0     
  rm -rf /var/lock/subsys/ipvsadm.lock     
;;

  status)   
  [ -e /var/lock/subsys/ipvsadm.lock ] && echo "ipvs is running..." || echo "ipvsadm is stopped..."     
;;     
*)     
  echo "Usage: $0 {start|stop}"     
;;     
esac

  给脚本添加执行权限
chmod +x ipvs.sh

  将脚本加入服务列表
cp ipvs.sh /etc/init.d

  (9)启动heartbeat   
在哪个节点上启动第一个该服务,以后所有的这个服务必须在这个节点上启动     
我们就在node1上启动heartbeat服务     
/etc/init.d/heartbeat start     
在node1上启动node2的heartbeat服务     

  查看我们的Director高可用集群主节点是第几个节点:   
执行命令:

  ifconfig   
图片的信息表示Director的主节点为ND1

  
  查看主节点是否有ipvs的资源信息:
       

接下来我们在浏览器中输入192.168.0.85进行测试,看能够看到网页,如果看到表示LVS的服务正常:  


  我们将主节点的服务关闭,看资源是否成功流转到ND2上   
在node1上执行 /etc/init.d/heartbeat stop

  至执行成功之后到node2上,在此查看资源状态  
ifconfig

  
  结果显示,node1已经宕机,此时node2已经称为主节点
  查看资源是否已经成功流转到node2上
  ipvsadm -L -n
  
  我们再次验证,Director高性能集群能否提供LVS功能:   
继续在浏览器中数据192.168.0.85  
     
结果显示,我们手动编辑的脚本ipvs.sh完全可以实现DR类型的LVS中Director的高可用集群





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659544-1-1.html 上篇帖子: LB负载均衡集群 下篇帖子: LVS之NAT模式的配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表