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

[经验分享] LVS+heartbeat 高可用LINUX服务器

[复制链接]

尚未签到

发表于 2019-1-5 08:44:05 | 显示全部楼层 |阅读模式


LVS+heartbeat 高可用LINUX服务器

ha服务器设置:

主机名      lvs.abc.com

Ip地址      eth0:192.168.50.9

            eth1:192.168.60.9

ha服务器设置:

主机名      lvs1.abc.com

IP地址      eth0:192.168.50.8

            Eth1:192.168.60.8



Realserver1 设置

主机名      web1.abc.com

IP地址      eth0:192.168.50.5

            Eth1:192.168.60.5



Realserver2 设置

主机名      web2.abc.com

IP地址      eth0:192.168.50.6

            Eth1:192.168.60.6



实验拓扑图:






Heartbeat 安装依赖和支持软件:




  • yum –y install libnet*
  • yum –y install heartbeat*
  • yum -y install heartbeat
  • yum –y install ipvsadm*



配置haeartbeat:

复制配置文件




  • cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
  • cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
  • cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
  • cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/



修改配置文件/etc/ha.d/ha.cf




  • vim /etc/ha.d/ha.cf




  • logfile /var/log/ha-log
  • debugfile /var/log/ha-debug
  • logfacility     local0
  • keepalive 2    #主从切换的保持时间
  • deadtime 30   #宣布对方死亡时间
  • warntime 10   #警告时间
  • udpport 694   #主从之间的通信端口
  • ucast eth0 192.168.50.8  #采用单播方式探测心跳,bcast是广播方式;后面的地址是对端地址
  • auto_failback on   #自动恢复,就是说如果主从故障中恢复会抢回主的位置
  • node    lvs.abc.com   #主节点主机名 hostname后的名称
  • node    lvs1.abc.com  #从节点主机名 hostname后的名称
  • ping 192.168.50.8 (最好是网关地址)
  • ping_group group1 192.168.50.8 192.168.50.9
  • ping_group group1 192.168.60.8 192.168.60.9
  • respawn hacluster /usr/lib/heartbeat/ipfail
  • #如果是64位系统,则目录应该为/usr/lib64/heartbeat/ipfail
  • apiauth ipfail gid=haclient uid=hacluster  #用户已经自动建立

修改authkeys 验证文件




  • vim /etc/ha.d/authkeys




  • auth 2           #去掉下面哪行的注释 就填上哪行的行号,此文件主从必须一样。
  • #1 crc           #crc算法是求和
  • 2 sha1 HI!        #sha1是hash加密 HI!是被加密的值
  • #3 md5 Hello!    # md5 加密 hello 加密值

  设置验证权限authkeys 的权限(注意:此文件主从必须都是600的权限)




  • chmod 600 /etc/ha.d/authkeys


  修改ldirectord.cf资源管理文件




  • vim /etc/ha.d/ldirectord.cf




  • checktimeout=3     #隔3秒没有收到realserver的返回页面,ha认定宕机 服务将不使用
  • #该realserver提供服务.
  • checkinterval=1     #间隔1秒访问一次real根目录的test.html文件
  • #fallback=127.0.0.1:80  # 此处针对全局 下面的fallback 是针对局部的。
  • autoreload=yes        #当realserver 恢复正常后自动加入队列提供服务
  • logfile="/var/log/ldirectord.log"  #log日志的路径
  • logfile="local0"              
  • emailalert=XXXXX@fantong.com   #接收告警邮件的邮箱
  • emailalertfreq=3600      
  • emailalertstatus=all
  • quiescent=no
  • # Sample for an http virtual service
  • virtual=192.168.50.80:80       #virtual IP 对外IP
  •      real=192.168.50.5:80 gate Weight 8     #真实服务器必须空4格,Weight 是权重。
  •      real=192.168.50.6:80 gate Weight 10    #权重高对应的承载能力就高
  •      #real=192.168.6.6:80 gate
  •   
  • fallback=127.0.0.1:80 gate        #real机器全部宕机由谁来承担。
  • service=http                  
  • scheduler=wrr                    #轮询加权
  • protocol=tcp                     #tcp协议 也支持UDP协议
  • checktype=negotiate    #很多种选择默认是negotiate通过页面来检测rs
  • checkport=80                   #检测的端口
  • request="test.html"         #验证文件必须位于rs机器的网页根目录
  • receive="Test Page"              #验证文件的内容必须相同
  • #virtualhost=www.x.y.z





修改/etc/ha.d/haresources文件




  • vim /etc/ha.d/haresources






  • lvs.abc.com 192.168.50.80 lvs ldirectord
  • #主ha的主机名 + virtual ip(对外提供的IP)+ 需要启动的服务(lvs是下面脚本的名称)



写资源脚本lvs 文件(注意需要根据自身情况修改网卡名)




  • vim /etc/init.d/lvs






  • #!/bin/bash
  • # description: start LVS of DirectorServer
  • #Written by :NetSeekhttp://www.linuxtone.org GW=192.168.1.254
  •   
  • # website director vip.
  • GW=192.168.50.80      #网关地址千万不要填错了,否则你的辅助(浮动)ip是无法访问的。
  • WEB_VIP=192.168.50.80  #virtual ip 对外的唯一IP
  • WEB_RIP1=192.168.50.5
  • WEB_RIP2=192.168.50.6
  • #WEB_RIP3=1.1.1.18
  • #WEB_RIP3=1.1.1.19
  • . /etc/rc.d/init.d/functions
  • logger $0 called with $1
  • case "$1" in
  • start)
  • # Clear all iptables rules.
  • /sbin/iptables -F
  • #这个地方要注意一下,如果公司最外端有防火墙,就可以清空iptables内容(都做允许,或#者停止),把改行注释掉;如果没有就需要有防火墙了,自己写策略或者写脚本。
  • # Reset iptables counters.
  • /sbin/iptables -Z
  • #同上
  • # Clear all ipvsadm rules/services.
  • /sbin/ipvsadm -C
  • #set lvsvip for dr
  • /sbin/ipvsadm --set 30 5 60
  • /sbin/ifconfig eth0:0 $WEB_VIP broadcast $WEB_VIP netmask 255.255.255.255 up
  •   
  • /sbin/route add -host $WEB_VIP dev eth0:0
  • /sbin/ipvsadm -A -t $WEB_VIP:80 -s wrr -p 3
  • /sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP1:80 -g -w 1
  •   
  • /sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP2:80 -g -w 2
  •   
  • #/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP3:80 -g -w 1
  •   
  • #/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP4:80 -g -w 1
  •   
  • touch /var/lock/subsys/ipvsadm>/dev/null 2>&1
  •   
  • # set Arp
  • /sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW >/dev/null 2>&1
  •   
  • ;;
  • stop)
  • /sbin/ipvsadm -C
  • /sbin/ipvsadm -Z
  • ifconfig eth0:0 down
  • route del $WEB_VIP >/dev/null 2>&1
  •   
  • rm -rf /var/lock/subsys/ipvsadm>/dev/null 2>&1
  •   
  • /sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW
  • echo "ipvsadmstoped"
  • ;;
  • status)
  • if [ ! -e /var/lock/subsys/ipvsadm ];then
  • echo "ipvsadm is stoped"
  • exit 1
  • else
  • ipvsadm -ln
  • echo "..........ipvsadm is OK."
  • fi
  • ;;
  • *)
  • echo "Usage: $0 {start|stop|status}"
  •   
  • exit 1
  • esac
  • exit 0



以上文件写好之后,做如下操作





  • chmod 755 /etc/init.d/lvs  
  • ln –s /etc/init.d/lvs /etc/ha.d/resource.d/lvs

#ldirectord 启动的时候会从/etc/init.d  和 /etc/ha.d/resource.d 下搜索资源( 这里说的资源#就是指脚本)




设置heartbeat ipvsadm 的开机自启动




  • Chkconfig heartbeat on
  • Chkconfig ipvsadm on



ha服务器设置:





同样安装所有的依赖和支持软件,操作和主-ha一样的

其他配置文件相同通过scp 从主ha上拷贝修改即可。




  • scp root@192.168.50.9:/etc/ha.d/* /etc/ha.d/

复制资源脚本




  • scp root@192.168.50.9:/etc/init.d/lvs /etc/init.d/lvs



复制完成后修改ha.cf,其他文件保持一致不必修改(注意看看authkeys的权限)

ucast 192.168.50.9  #单播方式探测心跳,跟的是对端地址 主ha的IP地址

ping 192.168.50.9



资源脚本的链接




  • chmod 755 /etc/init.d/lvs
  • ln –s /etc/init.d/lvs /etc/ha.d/resource.d/lvs







realserver 真实服务器的配置

创建脚本(用来屏蔽arp,否则会和其他机器产生冲突):




  • vim /usr/local/real.sh






  • #/bin/sh
  • VIP=192.168.50.80                        #virtual ip的地址                     
  • source /etc/rc.d/init.d/functions
  • case "$1" in
  • start)
  • echo "start LVS of RealServer"
  • /sbin/ifconfig lo:0 ${VIP} broadcast ${VIP} netmask 255.255.255.255 up
  •   
  • echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  •   
  • echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  •   
  • echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  • echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  •   
  • ;;
  • stop)
  • /sbin/ifconfig lo:0 down
  • echo "Close LVS of RealServer"
  • echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  •   
  • echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  •   
  • echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  • echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  •   
  • ;;
  • *)
  • echo "wrong,please use start|stop"
  •   
  • exit 1
  • esac



保存脚本 退出


修改权限:




  • Chmod 755 /usr/local/real.sh

加入启动:




  • Vim /etc/rc.local
  • /usr/local/real.sh start

保存后退出





创建index.html    test.html2个文件




  • Vim /var/www/html/index.html


  • test 192.168.50.5

另外的realserver机器写test 192.168.50.6 方便测试


vim /var/www/html/test.html     

#这个文件和/etc/ha.d/ldirectord.cf下的receive="Test Page"选项内容保持一致.


否则该机器将无法正常提供服务



主从服务器和真实服务器配置完成.



测试部分

启动主ha服务器

Service heartbeat start


tail –F /var/log/ha-log


tail –F /var/log/message


Heartbeat 正常启动



我们看看网卡是不是正常获取到了virtual ip




看到了吧eth0:0 已经获得了192.168.50.80 的虚拟IP地址了



下面我们看看ipvsadm 的状况:


正常的找到了realserver 机器。



从机器也同样启动 heartbeat



Tail –F /var/log/ha-log


正常启动

Ipvsadm   和  ifconfig



由于是从机器必须探测到主机器故障后才能启动LVS 和资源等。



访问http://192.168.50.80



就可以看到  test 192.168.50.5    按ctrl+F5 就能看到test 192.168.50.6 之间切换。



按F5 刷新 之后看主ha的ipvsadm –L –n –stats










运维网声明 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-659500-1-1.html 上篇帖子: Heartbeat+LVS实现负载均衡 下篇帖子: heartbeat+heartbeat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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