heartbeat+ldirectory实现LVS-DR负载均衡器的高可用

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

 本文通过heartbeat+ldirectory实现LVS-DR模型中director的高可用,本文拓扑:

 

 
具体配置如下:
注意:
1,本文不再写入LVS-DR模型的搭建过程,详见我的博客《玩转LVS之NAT,DR,TUN模型》,直接配置director的高可用
2,dir1.jia.com和dir2.jia.com是两个director
 
一,准备工作:
Hearbeat通过主机名来维护节点之间的通信,故要保证两个主机的主机名能够被正常解析:
在dir1和dir2上修改hosts文件;
# vim /etc/hosts
添加如下内容:
172.16.30.2     dir1.jia.com dir1
172.16.30.3     dir2.jia.com dir2
 
配置dir1和dir2双机互信:
Dir1上操作:
# sed -i 's@\(HOSTNAME=\).*@\1 dir1.jia.com @g' /etc/sysconfig/network
# hostname dir1.jia.com
 
Dir2上操作:
# sed -i 's@\(HOSTNAME=\).*@\1 dir2.jia.com @g' /etc/sysconfig/network
# hostname dir2.jia.com
 
设定两个节点可以基于密钥进行ssh通信,这可以通过如下的命令实现:
Dir1上操作:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@dir2
 
Dir2山操作:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@dir1
 
安装的软件包:
 

 
安装:
# yum –y –-nogpgcheck localinstall *.rpm (两个节点都要安装)
 
# cd /usr/share/doc/heartbeat-2.1.4/
# cp ha.cf  haresources  authkeys  /etc/ha.d/   拷贝配置文件模版到/etc/ha.d下
# cd /etc/ha.d
# vim /etc/ha.d/ha.cf    编辑配置文件
修改如下内容
    keepalive 2    //保持时间
    deadtime 30    //死亡时间
    warntime 10    //警告时间
    initdead 120   //启动时间
    udpport 694    //使用udp的端口
    bcast eth1     //心跳接口
    logfile /var/log/ha-log  //日志文件
    auto_failback on  //失败自动退回
    node dir1.jia.com  //节点对应的主机名,这里面要写所有的
    node dir2.jia.com
 
# vim authkeys  //编辑认证文件
    auth 2
    2 sha1 jlasdlfladddd //这个后面的密码可以随意写,也可以使用自动生成随机数(#dd if=/dev/urandom bs=512 count=1 |md5sum )的方式来生成,但是节点之间是一样的。因为我们通过这个认证文件,可以防止其他的恶意集群节点加入我们的集群中,要想加入我们的集群中必须要提供相同的校验码
 
# chmod 400 authkeys  //修改权限,这个是必须的
# vim haresources
添加:
    dir1.jia.com ipvsd  //指定主节点,VIP和流动资源,这里面定义的ipvsd是一个脚本,通过这个脚本来实现资源的自动切换
 
# cd /etc/ha.d/
# scp haresources ha.cf authkeys dir2:/etc/ha.d/
 
下面是ipvsd脚本 
#vim ipvsd
#!/bin/bash
#
# LVS script for VS/DR
#
. /etc/rc.d/init.d/functions
#
VIP=172.16.30.1        //定义一个全局的变量VIP
RIP1=172.16.30.4       //定义RealSever1的ip地址
RIP2=172.16.30.5       // 定义RealSever2的ip地址
PORT=80
#
case "$1" in
start)          
  /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev eth0:1
# Since this is the Director we must be able to forward packets
  echo 1 > /proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
  /sbin/iptables -F
# Reset iptables counters.
  /sbin/iptables -Z
# Clear all ipvsadm rules/services.
  /sbin/ipvsadm -C
# Add an IP virtual service for VIP 172.16.30.1 port 80
# In this recipe, we will use the round-robin scheduling method. 
# In production, however, you should use a weighted, dynamic scheduling method. 
  /sbin/ipvsadm -A -t $VIP:80 -s wlc
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 1
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 1
  /bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
# Stop forwarding packets
  echo 0 > /proc/sys/net/ipv4/ip_forward
# Reset ipvsadm
  /sbin/ipvsadm -C
# Bring down the VIP interface
  /sbin/ifconfig eth0:1 down
  /sbin/route del $VIP
  
  /bin/rm -f /var/lock/subsys/ipvsadm
  
  echo "ipvs is stopped..."
;;
status)
  if [ ! -e /var/lock/subsys/ipvsadm ]; then
    echo "ipvsadm is stopped ..."
  else
    echo "ipvs is running ..."
    ipvsadm -L -n
  fi
;;
*)
  echo "Usage: $0 {start|stop|status}"
;;
Esac
 
这个脚本在写完之后,要赋予执行的权限,并且把他放到/etc/ha.c/resource.d/下
# chmod +x ipvsd
# cp ipvsd /etc/ha.d/resource.d/
同步到dir2上:
# scp /etc/ha.d/resource.d/ipvsd dir2:/etc/ ha.d/resource.d/
 
现在都配置好了,接下来就是启动HA的Heartbeat服务了:
# /etc/init.d/heartbeat start
# sh dir2 -- '/etc/init.d/heartbeat start'
 
测试:
过一会儿之后,在dir1上:
# ifconfig
查看eth0:1网卡是否已经自动启动
 
在dir1和dir2上分别测试,dir1有配置而dir2上没有:
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.30.1:80 wlc
  -> 172.16.30.5:80               Route   1      0          0         
  -> 172.16.30.4:80               Route   1      0          0
 
然后,我们把dir1设置为standby节点,即模拟故障:
# cd /usr/lib/heartbeat
# ./hb_standby
再次执行如下命令,dir2上就有配置了,说明资源已经自动从dir1转移到了dir2上了:
# ipvsadm –Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.30.1:80 wlc
  -> 172.16.30.5:80               Route   1      0          0         
  -> 172.16.30.4:80               Route   1      0          0  
 
然后测试网页的访问:

 









本文转自 leejia1989 51CTO博客,原文链接:http://blog.51cto.com/leejia/924156,如需转载请自行联系原作者
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
15天前
|
负载均衡 NoSQL 应用服务中间件
搭建高可用及负载均衡的Redis
【7月更文挑战第10天】
|
24天前
|
负载均衡 算法 Java
实现高可用和可扩展的负载均衡系统的Java方法
实现高可用和可扩展的负载均衡系统的Java方法
|
29天前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
2月前
|
负载均衡 网络协议
NAT模式 LVS负载均衡部署
NAT模式 LVS负载均衡部署
|
2月前
|
负载均衡 算法 网络协议
LVS、Nginx和HAProxy负载均衡器对比总结
LVS、Nginx和HAProxy负载均衡器对比总结
|
2月前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
2月前
|
负载均衡 算法 安全
一文带你了解LVS负载均衡模式与F5负载均衡
一文带你了解LVS负载均衡模式与F5负载均衡
1081 0
|
2月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
234 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
2月前
|
存储 缓存 运维
解密一致性哈希算法:实现高可用和负载均衡的秘诀
解密一致性哈希算法:实现高可用和负载均衡的秘诀
364 0