本文通过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,如需转载请自行联系原作者

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

  1. LVS(DR)+keepalived实现高可用负载均衡

    一.lvs+keepalived 1.lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将 ...

  2. 【7W字长文】使用LVS+Keepalived实现Nginx高可用,一文搞懂Nginx

    往期文章一览 分布式会话与单点登录SSO系统CAS,包含完整示例代码实现 [15W字长文]主从复制高可用Redis集群,完整包含Redis所有知识点 使用LVS+Keepalived实现Nginx高可 ...

  3. 算法高级(15)-LVS的负载均衡策略及LVS+KeepAlived+Nginx实现高可用方案

    前面讲的nginx负载均衡,是属于网络七层负载,今天讲另外一种负载均衡技术LVS,它是基于网络四层进行负载,性能很好,通常在大型项目中,我们会同时使用四层和七层负载. 一.LVS简介 LVS是Linu ...

  4. heartbeat+drbd+mysql:实现最廉价的高可用组合

    1.什么是DRBD DRBD(Distributed Replicated Block Device),DRBD 号称是 "网络 RAID",开源软件,由 LINBIT 公司开发. ...

  5. 基于heartbeat v1配置mysql和httpd的高可用双主模型

    一.配置高可用集群的前提:(以两节点的heartbeat为例) ⑴时间必须保持同步 ⑵节点之间必须用名称互相通信 建议使用/etc/hosts,而不要用DNS 集群中使用的主机名为`uname -n` ...

  6. mysql lvs 读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

    mysql主从复制与lvs+keepalived实现负载高可用 目录 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方案 ...

  7. 部署keepalive+lvs多master节点高可用

    最低配置2核 2G 192.168.1.11 master1 192.168.1.12 master2 192.168.1.13 master3 192.168.1.20 node1 一.初始化实验环 ...

  8. 使用LVS和Keepalived搭建高可用负载均衡服务器集群

    目录 1.什么是LVS和Keepalived 2.负载均衡服务器集群示例环境搭建及安装配置 2.1.环境网络拓扑结构 2.2.安装ipvsadm软件 2.3.安装keepalived 2.4.配置网络 ...

  9. lvs负载均衡+keepalive高可用

    一.实验环境: 母盘为redhat7.6的操作系统,快照出四台虚拟机 给真机和虚拟机都加上地址解析,如上图所示 通过真机的httpd服务给虚拟机搭建7.6的网络软件仓库 关闭防火墙,selinux状态 ...

  10. 利用LVS+Keepalived 实现高性能高可用负载均衡服务器

    作者:NetSeek [url]http://www.linuxtone.org[/url](IT运维专家网|集群架构|性能调优) 欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 ...

最新文章

  1. 数据库 大数据访问及分区分块优化方案
  2. Python-HTML CSS题目
  3. override java field_JavaPoet 看这一篇就够了
  4. Codeforces Round #753 (Div. 3) A-E
  5. 剑指Offer05. 替换空格
  6. C++中建立对象间消息连接的系统方法
  7. Linux编程训练网站,OK6410汇编程序练习
  8. Activity常用设置
  9. void和void指针解析
  10. 数据包络分析(DEA)
  11. ruby与ruby on rails环境部署
  12. 关于印发促进智慧城市健康发展的指导意见的通知
  13. 软考中级哪个科目比较容易考?
  14. CC00417.CloudKubernetes——|KuberNetesNetworkPolicy.V09|——|NetworkPolicy.v09|隔离中间件服务.v05|
  15. WEBRTC RFC5766-TURN协议
  16. RT-Thread 入门学习笔记 - 熟悉$Sub$$main与$Super$$main
  17. 【Centos 7】---vim环境配色(colorscheme)配置
  18. Unity 接讯飞离线语音识别
  19. 2019年10月8日股市走势预测——06
  20. 大商创如何重置或修改商家店铺登录密码?

热门文章

  1. [BZOJ2048] [2009国家集训队] 书堆
  2. java selenium (十一) 操作弹出对话框
  3. Ionic在Android上部署app步骤
  4. 继承(1)----《.NET 2.0面向对象编程揭秘 》学习
  5. 【Axure RP8.1】一款专业的快速原型设计工具
  6. FragmentTabHost+FrameLayout实现底部菜单栏
  7. SQL Identity自增列清零方法
  8. C#委托四(匿名方法)
  9. An internal error occurred during: Launching ****
  10. 2011 5月13日