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

[经验分享] Heartbeat + LVS + ldirectord构建可伸缩网络服务

[复制链接]

尚未签到

发表于 2019-1-5 12:00:03 | 显示全部楼层 |阅读模式
Heartbeat + LVS + ldirectord构建可伸缩网络服务  网络环境:
  机器数量:2
  操作系统:Centos 5.0,Centos 5.2
  机器名:centos50,centos52
  机器IP:
  Centos 5.0: 10.2.20.15
  Centos 5.2: 10.2.20.88
  虚拟IP: 10.2.20.17
  需要的软件:
  httpd:提供web服务
  LVS:对web服务器按照一定的规则进行转发
  Heartbeat:提供ip漂移服务,在主服务器宕机后,备份服务器接管虚拟ip
  ldirectord:提供lvs控制,监控真实服务器,出现问题后,对轮循列表进行更新,去除出现问题的服务器
  机器角色:
  centos50:主负载均衡器+真实服务器
  centos52:备份负载均衡器+真实服务器
  实现功能:
  两台服务器做为负载均衡器进行主从互备,并充当真实服务器功能,对外提供服务,当真实服务器出现问题后,主负载均衡器能够检测到,并从负载均衡轮循列表清除有问题的真实服务器。
  当主负载均衡器出现问题后,备份负载均衡器能够接管负载均衡服务,使服务不受影响。
  1.最小化安装操作系统;
  2.在两台机器上配置机器名
  在/etc/hosts文件中添加主机名记录,确保两台机器能够通过主机名相互ping通
  3.安装httpd,heartbeat,ldirectord
  centos 5.2内核已经包含lvs,不用安装,只安装httpd,heartbeat,ldirectord
  yum install httpd,heartbeat,heartbeat-ldirector
  4.配置lvs,在两台机器上进行如下操作
  1).为回环接口配置虚拟ip
  cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
  修改/etc/sysconfig/network-scripts/ifcfg-lo:0文件,内容如下:
  DEVICE=lo:0
  IPADDR=10.2.20.16       #虚拟ip地址
  NETMASK=255.255.255.255
  BROADCAST=255.255.255.255
  ONBOOT=yes
  NAME=loopback
  启动lo:0接口
  ifup lo:0
  2).修改arp转发规则
  修改/etc/sysctl.conf文件,添加如下内容:
  net.ipv4.ip_forward = 1
  net.ipv4.conf.lo.arp_ignore = 1
  net.ipv4.conf.lo.arp_announce = 2
  net.ipv4.conf.all.arp_ignore = 1
  net.ipv4.conf.all.arp_announce = 2
  运行sysctl -p命令,使用配置生效
  3).编写lvs真实服务器启动脚本
  在/etc/init.d目录下新建文件realserver,内容如下:
  #!/bin/sh
  #Create on 2007-11-21
  #Description start lvs,disable arp response
  VIP=10.2.20.17    #虚拟ip
  #. /etc/rc.d/init.d/functions
  case "$1" in
  start)
  echo "lvs start"
  /sbin/ifconfig lo:0 down
  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
  ;;
  stop)
  echo "lvs stop"
  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
  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  ;;
  *)
  echo "Usage:$0 {start|stop}"
  exit
  ;;
  esac
  修改文件权限,使脚本有执行权限
  chmod +x realserver
  5.配置Heartbeat
  1).在/etc/ha.d目录新建ha.cf文件,内容如下:
  logfile    /var/log/ha-log    #heartbeat日志文件位置
  logfacility    local0    #将heartbeat日志记录到系统日志中,可选
  keepalive 2    #设定heartbeat之间的检测时间间隔为2秒
  deadtime 30    #在无响应30秒后宣布节点死亡
  warntime 10    #在日志中发出“late heartbeat“警告之前等待的时间,单位为秒
  initdead 60    #在某些配置下,重启后网络需要一些时间才能正常工作。这个单独的”deadtime”选项可以处理这种情况。它的取值至少应该为通常deadtime的两倍。
  udpport    694    #使用端口694进行bcast和ucast通信。这是默认的,并且在IANA官方注册的端口号
  auto_failback on    #auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。
  watchdog /dev/watchdog    #可以在检测到heartbeat不正常状态持续一分钟后自动重新启动系统
  node    centos50    #集群中机器的主机名,与“uname –n”的输出相同,主结点
  node    centos52    #同上,备份结点
  ping 10.2.20.254    #用来为ipfail等模块检查网络连接情况的,这里不应是集群节点
  respawn hacluster /usr/lib64/heartbeat/ipfail    #在heartbeat启动进运行的程序,ipfail插件的用途是检测网络故障,并作出合理的反应
  2).在/etc/ha.d目录新建authkeys文件,内容如下
  auth 1
  1 crc
  这个文件用来在集群机器间进行认证,如果您的Heartbeat运行于安全网络之上,可以使用crc,从资源的角度来看,这是代价最低的方法。如果网络并不安全,但您也希望降低CPU使用,则使用md5。最后,如果您想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。
  3).在/etc/ha.d目录新建haresources文件,内容如下
  centos50 realserver IPaddr::10.2.20.17 ldirectord
  centos50:集群主节点,它应该与uname -n命令输出的内容相同
  realserver,IPaddr,ldirectord:服务脚本,Heartbeat会在以下路径中寻找有相同名字的服务脚本:/etc/ha.d/resource.d ,/etc/init.d,所以我们的脚本应该在这两个目录下
  ::10.2.20.17:脚本参数,若要向教本传递参数,格式应该为: ::
  heartbeat 在启动会使用 start形式运行脚本,启动顺序是先运行realserver脚本,再运行IPaddr脚本,最后运行ldirectord脚本,停止时会使用 stop运行脚本,停止顺序是先停止ldirectord脚本,再停止IPaddr脚本,最后停止realserver脚本。
  注意:realserver 脚本的作用比较特殊,我们这里两台机器充当的角色比较多,包括主从备份结点,负载均衡器,提供服务的真实服务器。为了实现真实服务器功能,我们需要在lo 接口绑定虚拟ip,并修改内核arp转发规则,使负载均衡功能正常。所以在操作系统启动时我们配置自动启动配置了虚拟ip的lo:0接口,并修改内核 arp转发规则。
  主结点heartbeart启动时,如果不关闭lo:0接口,IPaddr脚本就会运行不正常,不能在真实网卡上绑定虚拟ip。所以在主节点启动时我们要将lo:0接口关闭,以使IPaddr脚本正常运行,将虚拟ip绑定到真实网卡;在主结点不正常时再通过 realserver脚本启动lo:0接口,实现真实服务器功能。
  备份结点heartbeat启动时,会检测主结点状态,如果主结点状态正常,它只充当真实服务器角色,不会运行haresources里面的内容,这样lo:0接口不会关闭,备份结点的真实服务器功能就可以实现;在检测到主结点出现问题后,备份结点要先把lo:0接口关闭,然后在真实网卡绑定虚拟ip,并通过ldirectord配置lvs轮循列表,充当负载均衡器。
  这段话比较啰嗦,不知道我说明白没有!
  4).在/etc/ha.d目录新建ldirectord.cf文件,内容如下
  checktimeout=3
  checkinterval=5
  fallback=127.0.0.1:80
  autoreload=yes
  logfile="/var/log/ldirectord.log"
  quiescent=yes
  virtual=10.2.20.17:80
  real=10.2.20.15:80 gate 5
  real=10.2.20.88:80 gate 5
  fallback=127.0.0.1:80 gate
  service=http
  request="test.html"
  receive="Test Page"
  scheduler=wlc
  checktype=negotiate
  文件内容的含义,在网上找找,写不下去了
  在web服务器根目录新建文件test.html,内容:Test Page
  在web服务器根目录新建文件index.html,内容:This is server1
  5).将以上文件全部复制到另一台机器
  scp ha.cf authkeys haresources ldirectord.cf root@xxx.xxx.xxx.xxx:/etc/ha.d/
  修改authkeys文件权限为600
  在web服务器根目录新建文件test.html,内容:Test Page
  在web服务器根目录新建文件index.html,内容:This is server2
  6.在两台机器上启动heartbeat
  service heartbeat start
  7.测试服务器状态
  通过ifconfig命令查看主结点是否在真实网卡上绑定了虚拟ip
  通过ipvsadm -l 命令查看主结点lvs轮循列表是否正常
  通过虚拟ip访问web服务,并刷新,看负载均衡功能是否正常
  通过拔掉主结点网线,查看备份结点是否能够接管虚拟ip


运维网声明 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-659639-1-1.html 上篇帖子: mysql+heartbeat+DRBD+LVS实现mysql高可用<二> 下篇帖子: 基于heartbeat v1+ldirectord实现LVS的高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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