热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IPVS-DR+HA+ldirectord高可用负载均衡集群

实验平台:virtualbox4.12操作系统:RHEL5.4实验拓扑:650)this.altsrchttp:www.i

实验平台:virtualbox 4.12

操作系统:RHEL5.4

实验拓扑:

两台Directory都有两块网卡,都设置为静态地址,其中eth0用于网络间通信,eth1用于两台Directory监测彼此心跳信息,所以使用独立的网络进行连接,在实际应用中可以使用串行线进行连接,这里由于使用虚拟机就采用intnet的内部网予以实现。    本实验用到的软件包有:    
  
  1. heartbeat-2.1.4-9.el5.i386.rpm  
  2. heartbeat-devel-2.1.4-9.el5.i386.rpm  
  3. heartbeat-gui-2.1.4-9.el5.i386.rpm  
  4. heartbeat-ldirectord-2.1.4-9.el5.i386.rpm  
  5. heartbeat-pils-2.1.4-10.el5.i386.rpm  
  6. heartbeat-stonith-2.1.4-10.el5.i386.rpm  
  7. libnet-1.1.4-3.el5.i386.rpm  
  8. perl-MailTools-1.77-1.el5.noarch.rpm  
    一.首先安装软件包    [root@DIR ~]# yum localinstall *.rpm --nogpgcheck -y    按照拓扑图设置两台主机的IP地址和主机名    分别修改两主机/etc/hosts文件,添加下面的内容       192.168.56.10   node1.a.org node1       192.168.56.30   node2.a.org node2     为两主机设置免密码ssh连接    首先在node1上:          
  
  1. [root@DIR ~]# ssh-keygen -t rsa  
  2. [root@DIR ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2  
    再在node2上:           
  
  1. [root@DIR2 ~]# ssh-keygen -t rsa  
  2. [root@DIR2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1  
    这样就可以免输密码自由连接了。    可以将node1上的软件包直接拷贝至node2上进行安装:    [root@node1 ~]# scp *.rpm node2:/root/        然后同样的安装步骤:    [root@DIR2 ~]# yum localinstall -y *.rpm –nogpgcheck    准备工作基本结束,下面开始进行配置二.配置Heartbeat    1.将heartbeat的配置文件拷贝到/etc/ha.d目录下    
  
  1. [root@node1 ~]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys} /etc/ha.d/  
  2. [root@node1 ~]#cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/  
    2.首先编辑ha.cf    [root@node1 ha.d]# cd /etc/ha.d/    [root@node1 ha.d]# vim ha.cf    修改下面几项:       
  
  1. logfile /var/log/ha-log     //打开日志  
  2. bcast eth1               //监测心跳的网卡  
  3. node   node1.a.org  
  4. node   node2.a.org       //定义集群节点  
  5. respawn hacluster /usr/local/lib64/heartbeat/ipfail  
  6. apiauth ipfail gid=haclient uid=hacluster        //定义随heartbeat一起启动的进程 
 3.然后编辑authkeys
    [root@node1 ha.d]# vim authkeys
    修改文件最后几行为
           auth 2               //这里是用来指定认证方式的
           2 sha1 e781edf0090887bee14405fd48768ac6(随机数)
    随机数可以用下面的命令生成
    [root@node1 ~]# dd if=/dev//urandom bs=512 count=1 | md5sum 
   
修改该文件的权限为400或600    [root@node1 ha.d]# chmod 400 authkeys    4.接下来编辑haresources    [root@node1 ha.d]# vim haresources    在其中写入:    node1.a.org 192.168.56.20/24/eth0/192.168.56.255 ipvs ldirectord    这条语句分别用来定义主节点,VIP,指定网卡,广播地址和随之启动的服务    最后来配置ldirectord.cf    
  
  1. [root@node1 ~]# vim /etc/ha.d/ldirectord.cf  
  2.     quiescent=yes 
  3.     checktimeout=3                         //检测存活的时间  
  4.     checkinterval=1                        //查询间隔  
  5.     autoreload=yes                         //自动重读配置文件  
  6.     logfile="/var/log/ldirectord.log"      //日志目录  
  7.     logfile="local0"              
  8.     virtual=192.168.56.20:80    //虚拟主机地址  
  9.         real=192.168.56.11:80 gate       //Realserver地址  
  10.         real=192.168.56.12:80 gate  
  11.         fallback=127.0.0.1:80 gate       //Realserver全部宕机时指向的地址  
  12.         service=http                   //服务  
  13.         request="test/index.html"       //测试存活与否所用的页面  
  14.         receive="ok"                    //检测关键字  
  15.         scheduler=wlc               //调度算法  
  16.         protocol=tcp 
  17.         checktype=negotiate          //检测类型  
  18.         checkport=80 
    5.拷贝配置文件至node2    由于两台主机的配置文件必须相同,这里直接将node1上编辑好的配置文件拷贝至node2    [root@node1 ha.d]# scp ha.cf haresources authkeys ldirectord.cf node2:/etc/ha.d/     首先来配置两台Directory和两台Realserver,分别安装httpd服务,并添加测试页    
  
  1. [root@R1 ~]#yum install httpd -y  
  2. [root@R1 ~]#echo '<h1>Realserver1h1> <body bgcolor=redbody>> /var/www/html/index.html  
  3. [root@R1 ~]# echo 'ok' > /var/www/html/test.html  
  4. [root@R2 ~]#yum install httpd -y  
  5. [root@R2 ~]#echo '<h1>Realserver2h1> <body bgcolor=redbody>> /var/www/html/index.html  
  6. [root@R2 ~]# echo 'ok' > /var/www/html/test.html  
  7. [root@node1 ~]# yum install httpd -y  
  8. [root@node1 ~]# echo '<h1>web service is under maintenance,please weat...h1>  <body bgcolor='red'> body>> /var/www/html/index.html  
  9. [root@node2 ~]# yum install httpd -y  
  10. [root@node2 ~]# echo '<h1>web service is under maintenance,please weat...h1> <body bgcolor='green'> body>> /var/www/html/index.htm  
    下面是在两台HA上进行的配置:    在两台Directory上分别安装ipvsadm    
  
  1. [root@node1 ~]# yum install ipvsadm -y  
  2. [root@node2 ~]# yum install ipvsadm -y  
     由于使用两台Directory搭建lvs,关于lvs的Directory的设置就必须依赖于脚本来实现了。先来编辑Directory脚本,该脚本用于在资源流向自己时自动设置自己为lvs的Directory,并在资源不属于自己时取消关于lvs的各项设置   
  
  1.  [root@node1 ~]#vim /etc/init.d/ipvs.sh 
  2.     #!/bin/bash  
  3.     . /etc/rc.d/init.d/functions  
  4.     VIP=192.168.56.20  
  5.     RIP1=192.168.56.11  
  6.     RIP2=192.168.56.12  
  7.     PORT=80 
  8. case "$1" in  
  9. start)             
  10.  /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up  
  11.  /sbin/route add -host $VIP dev eth0:1  
  12.  echo 1 > /proc/sys/net/ipv4/ip_forward      //开启本机路由转发功能  
  13. # 清除已有的iptables配置  
  14.  /sbin/iptables -F  
  15.  /sbin/iptables -Z  
  16. # 清除已有的ipvsadm 规则  
  17.  /sbin/ipvsadm -C  
  18.    
  19. # 添加VIP  
  20.  /sbin/ipvsadm -A -t $VIP:80 -s wlc  
  21. # 在Directory下添加Realserver  
  22.  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 1  
  23.  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 2  
  24.  /bin/touch /var/lock/subsys/ipvsadm &> /dev/null  
  25. ;;   
  26. stop)  
  27.  echo 0 > /proc/sys/net/ipv4/ip_forward  
  28.    
  29.  /sbin/ipvsadm -C  
  30.  /sbin/ifconfig eth0:1 down  
  31.  /sbin/route del $VIP  
  32.  /bin/rm -f /var/lock/subsys/ipvsadm  
  33.  echo "ipvs is stopped..."  
  34. ;;  
  35. status)  
  36.    
  37.  if [ ! -e /var/lock/subsys/ipvsadm ]; then  
  38.     echo "ipvsadm is stopped ..."  
  39.  else  
  40.     echo "ipvs is running ..."  
  41.     ipvsadm -L -n  
  42.    
  43.  fi  
  44. ;;  
  45. *)  
  46.  echo "Usage: $0 {start|stop|status}"  
  47. ;;  
  48. esac  
  49.    
  50. [root@node1 ~]#chmod a+x /etc/init.d/ipvs.sh  
将配置好的脚本拷贝至node2上[root@node1 ~]# scp /etc/init.d/ipvs node2:/etc/init.d/这里需要对haresources文件进行一下修改,将刚才的脚本设置为随服务启动配置realservers的脚本(运行此脚本能够实现快速配置realservers)
  
  1. #vim /etc/init.d/realserver.sh  
  2. #!/bin/bash  
  3. # Script to start LVS DR real server.  
  4. # description: LVS DR real server  
  5. . /etc/rc.d/init.d/functions  
  6. VIP=192.168.56.20  
  7. host=`/bin/hostname`  
  8. case "$1" in  
  9. start)  
  10.        # Start LVS-DR real server on this machine.  
  11.  /sbin/ifconfig lo down  
  12.  /sbin/ifconfig lo up  
  13.        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  14.         echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  15.         echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  16.         echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  17.         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
  18.         /sbin/route add -host $VIP dev lo:0  
  19. ;;  
  20. stop)  
  21.        /sbin/ifconfig lo:0 down  
  22.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  23.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  24.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  25.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce  
  26. ;;  
  27. status)  
  28.         # Status of LVS-DR real server.  
  29.         islothere=`/sbin/ifconfig lo:0 | grep $VIP`  
  30.         isrothere=`netstat -rn | grep "lo:0" | grep $VIP`  
  31.         if [ ! "$islothere" -o ! "isrothere" ];then  
  32.             # Either the route or the lo:0 device  
  33.             # not found.  
  34.             echo "LVS-DR real server Stopped."  
  35.         else  
  36.             echo "LVS-DR real server Running."  
  37.         fi  
  38. ;;  
  39. *)  
  40.             # Invalid entry.  
  41.             echo "$0: Usage: $0 {start|status|stop}"  
  42.             exit 1  
  43. ;;  
  44. esac  
  45. [root@R1 ~]# chmod a+x /etc/init.d/realserver.sh   
 [root@R1 ~]# scp /etc/init.d/rs.sh 192.168.56.12:/etc/init.d/启动服务进行测试:
  
  1. [root@node1 ~]# /etc/init.d/heartbeat start  
  2. [root@node1 ~]# ssh node2 -- '/etc/init.d/heartbeat start'  
  3. [root@node1 ~]# /etc/init.d/ldirectord start  
  4. [root@node1 ~]# ssh node2 --'/etc/init.d/ldirectord start'  
  5. [root@node1 ~]# /etc/init.d/ipvs start  
  6. [root@R1 ~]# /etc/init.d/realserver.sh start  
  7. [root@R2 ~]# /etc/init.d/realserver.sh start  
查看一下LVS信息[root@node1 ~]# ipvsadm -L -n 说明服务已经正常启动,在浏览器上测试一下 这时停掉node1上的heartbeat,看服务是否正常[root@node1 ~]# service heartbeat stop刷新页面可以看到 依然可以正常访问,在node2上查看一下ipvsdam的信息[root@node2 ~]# ipvsadm -L -n  

把两台Realserver都停掉,刷新页面可以看到

 

查看一下ipvs转发信息[root@node1 ~]# ipvsadm -L -n    

停掉主节点node1,刷新页面 

[root@node2 ~]# ipvsadm -L -n至此,配置完成。

 

本文出自 “春夏秋冬又一春” 博客,请务必保留此出处http://zhangjianjian.blog.51cto.com/2944771/662981


推荐阅读
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文详细解析了神州数码DCRS5980交换机的基础配置流程和技术要点。首先,通过进入配置模式(`enable`),设置主机名(`hostname 5980`),并创建VLAN,逐步介绍了设备的初始设置步骤。此外,还涵盖了端口配置、IP地址分配及安全设置等关键环节,为用户提供了全面的配置指导。 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • LVS-DR数据包流向分析介绍
    下文给大家带来LVS-DR数据包流向分析介绍,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍, ... [详细]
  • 【Linux332】LVS的DR配置详解(ipvsadm+arptables)
    文章目录1.DR简 ... [详细]
  • Linux负载均衡LVS(IPVS)
    一、LVS简介LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,现在已经是Linux ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 直播带货系统中的推流技术详解
    本文介绍了RTMP(实时消息传输协议)及其在直播带货系统中的应用,并详细探讨了带货直播系统的连麦方案,包括服务端合流和客户端合流的优势与劣势。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 深入了解 Azure Standard Load Balancer 的核心功能与应用场景
        Azure的负载均衡器就不需要多说了,属于很基础的组件了,各个云的LB功能其实也不太一样,Azure的4层LB属于相对来说功能比较基础的,不过好处是这东西也不要钱,不过Az ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
手机用户2602915205
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有