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

[经验分享] heartbeat+lvs实现高可用负载均衡

[复制链接]

尚未签到

发表于 2019-1-6 12:27:00 | 显示全部楼层 |阅读模式
  
  目前应用的较多的负载均衡器硬件主要有F5 BIG-IP(CDN机房常见的负载均衡器),Citrix NetScaler,软件有LVS、Nginx及HA-Proxy,高可用软件有Heartbeat、Keepalived,成熟的Linux集群架构有LVS+Keepalived、Nginx+Keepalived及DRBD+Heartbeat。
  
  heartbeat+lvs实现高可用负载均衡原理:
  两台heartbeat(ldirectord)主机构成高可用集群,同时监管着lvs(负载均衡集群)整体构成了heartbeat+lvs的高可用负 载均衡集群.在使用heartbeat的时候加载了watchdog模块,用来检测heartbeat服务,当heartbeat服务出现故障,会进行重 启主机。
  注意:但是,当内核崩溃了,watchdog也无能了(modprobe softdog),因为watchdog是基于内核级别的软件服务(相当于软fence一种硬件保护机制)
  实验环境:CentOS 6.4  
  系统架构主要由四台主机组成,两台heartbeat主机作为lvs和heartbeat,两台Real Server主机作为真实服务器。
  实验准备:
  1.在本地/etc/hosts文件中定义各个节点的解析。
  2.关闭selinux和iptables
  3.软件下载:heartbeat-3.0.4-1.el6.x86_64.rpm        heartbeat-devel-3.0.4-1.el6.x86_64.rpm  
  ldirectord-3.9.2-1.2.x86_64.rpm                heartbeat-libs-3.0.4-1.el6.x86_64.rpm
  实验步骤:
  一、heartbeat安装及配置。
  # yum localinstall *.rpm                  使用yum方式安装,能够解决本地rpm包所需要依赖(前提得需要yum源)
  #less /etc/ha.d/README.config
  ha.cf           Main configuration file                 heartbeat高可用主配置文件
  haresources     Resource configuration file      资源文件
  authkeys        Authentication information        认证文件
  # cd /usr/share/doc/heartbeat-3.0.4/
  # cp authkeys haresources ha.cf /etc/ha.d/
  # vim ha.cf
  debugfile /var/log/ha-debug
  logfile /var/log/ha-log
  keepalive 2                指定心跳间隔为2s
  deadtime 30                备用节点在30s后自动接管资源
  warntime 10                心跳延迟10s,10s内备用机不接受主节点心跳                    就会发出警告
  initdead 60                重启后恢复网络的时间(至少deadtime的2倍)
  udpport 666                 广播通信使用的端口
  bcast   eth0                 使用广播()
  auto_failback on               故障转换
  watchdog /dev/watchdog             这个得加载一个模块
  node    server66.example.com        主节点和辅助节点
  node    server68.example.com
  ping 192.168.0.253                      测试连通性,最好是网关
  respawn选项是可选的,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重启。默认使用ipfail
  respawn hacluster /usr/lib64/heartbeat/ipfail    检测和处理网络故障
  #apiauth client-name gid=gidlist uid=uidlist
  apiauth ipfail gid=haclient uid=hacluster         ipfail的运行用户和组
  加载watchdog,软fence监控heartbeat并且重启
  # modprobe softdog
  # vi /etc/rc.local                                    设置开机自动加载
  modprobe softdog
  # vim authkeys        认证文件权限必须600
  auth 3
  #1 crc
  #2 sha1 HI!
  3 md5 Hello!
  # chmod 600 authkeys
  # vim haresources
  server68.example.com IPaddr::192.168.0.234/24/eth0 httpd             定义主节点,虚拟ip和监控的服务
  要确定主节点的httpd服务启动了
  heartbeat默认可用监控一下目录的服务:
  /etc/init.d/   ;/etc/ha.d/resource.d/   ;/det/ha.d/rc.d/
  heartbeat安装配置完成,此时可以在另外一台主机上安装heartbeat,并且进行相应的配置。(注意,在配置集群的时候,尽量选择相同配置的主机,这样便于以后管理和排错)
  测试heartbeat:
  #/etc/init.d/heartbeat start            分别在两台heartbeat主机上启动服务
  #tail -f /var/log/message             查看日志发现server68主机接管VIP资源,此时可以ping同VIP
  同时heartbeat服务监控本地httpd服务,发现httpd也会开启
  二、构建lvs负载均衡集群
  在之前两台heartbeat主机上进行相同的安装配置操作(部分参数得指定)
  使用lvs负载均衡会使用到三种工作方式(NAT/DR/TNU)和八种调度算法,这里就做说明。
  lvs的配置一般有三种方式:通过ipvsadm命令配置
  通过ldirectord(heartbeat插件)来配置
  通过红帽可视化piranha软件进行配置
  通过ipvsadm命令配置lvs:
  # ipvsadm -A -t 192.168.0.224:80 -s rr              定义一个VIP,使用轮询
  # ipvsadm -a -t 192.168.0.224:80 -r 192.168.0.103:80 -g        定义rs使用DR模式
  # ipvsadm -a -t 192.168.0.224:80 -r 192.168.0.191:80 -g
  本章将使用ldirectord配置lvs:
  ldirectord工作原理:
  ldirectord 需要你在真实服务器内启用apache服务器,并在每台真实服务器web服务器的根目录下建立你在配置文件所指定的文件与内容,然后ldirectord 通过循环检查此文件来确定真实服务器是否存活,如果不存活,则自动将其权重设为0,以确保后面客户的连接不会再导向失效的真实服务器,如果真实服务修复上 线后,则其又将它的权重设为以使它能够继续为客端连接提供服务。
  ldirectord主要是通过调用ipvsadm来创建ipvs虚拟服务器表。
  #yum install ipvs -y
  #yum localinstall ldirectord****.rpm
  perl-IO-Socket-INET6 ldirectord启动时需要的包
  #/etc/init.d/ldirectord start
  使用ldirectord来配置lvs,并将ldirectord交给heartbeat控管:
  将lvs交给ldirectord来监控:
  注意:heartbeat上安装ldirectord
  heartbeat上安装lvs
  主备配置文件一致
  #cp -r /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
  #vim /etc/ha.d/ldirectord.cf
  virtual=192.168.0.224:80                    定义虚拟资源VIP
  real=192.168.0.103:80 gate        指定后端真实服务器,采用DR调度模式
  real=192.168.0.191:80 gate
  fallback=127.0.0.1:80 gate          当真实服务器宕机,本机自动接管
  service=http
  scheduler=rr                              使用轮询调度算法
  #persistent=600
  #netmask=255.255.255.255
  protocol=tcp
  checktype=negotiate
  checkport=80
  #vim /etc/init.d/ldirectord
  #. /etc/ha.d/shellfuncs      注释掉
  #/etc/init.d/ldirectord start
  Real Server需要进行一下配置:
  注意:在配置lvs负载均衡时,后端真实服务器需要制定VIP和禁止arp(使用arptables软件)
  #yum install arptables_jf -y
  #ifconfig lo:0 192.168.0.224 netmask 255.255.255.255
  #arptables -A IN -d 192.168.0.224 -j DROP        VIP设置
  #arptables -A OUT -s 192.168.0.224 -j mangle --mangle-ip-s 192.168.0.103 增加RS
  #/etc/init.d/arptables_jf save
  #chkconfig arptables_jf on
  lvs负载均衡集群配置成功
  测试:在浏览器中访问http://192.168.0.224 会自动加载103和191的web发布页面,刷新会自动跳转则配置成功。
  三、整合heartbeat+lvs实现高可用负载均衡
  首先在另外一台heartbeat主机上安装并且配置LVS,并且启动相应的服务。
  修改heartbeat资源配置文件:
  # vim haresources
  server68.example.com IPaddr::192.168.0.224/24/eth0 httpd ldirectord
  注意:主备心跳节点必须同步哦
  这样,就可以使用heartbeat来监控和控制lvs了(其实是heartbeat能够监控三个目录里的脚本文件,就直接监控了ldirectord,而ldirectord又用来配置和监控LVS)
  测试:现在直接关闭ldirectord
  开启heartbeat,会发现ldirectord开启了,同时访问流量器能够访问RS的内容
  其实是lvs负载均衡过来的哦
  测试高可用性和负载均衡性吧!
  1.当关闭任何一个heartbeat主机,另外一个heartbeat主机会进行检测和接管服务(VIP和ldirectord,ldirectord其实监控的lvs),因此不会影响客户对后端真实服务的访问。
  2.负载均衡测试:在不断的刷新过程中,会刷新出不同Real Server主机发布的页面。


运维网声明 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-659952-1-1.html 上篇帖子: LVS+Heartbeat+ldirectord构建高可用负载均衡群集(DR模式) 下篇帖子: heartbeat+ldirectory实现LVS-DR负载均衡器的高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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