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

[经验分享] LVS+heartbeat+ldriectord

[复制链接]

尚未签到

发表于 2019-1-4 06:47:50 | 显示全部楼层 |阅读模式
  

  LVS
  LVS+Keepalived+heartbeat
  Lvs:Linux Virtual Server Linux 虚拟服务器,是一个虚拟的服务器集群系统
  主要有四种负载均衡技术(VS/NAT,VS/TUN,VS/DR,VS/fullNAT)十余种调度算法:(rr,wrr,lc,wlc,lblcr,dh,sh,sed,nq
  Keepalvied主要作用时Realserver的健康状态检查及LoadBalance主机和Backfail的实现。
  

LVS可分为三部分:
1.Load Balancer:这是LVS的核心部分,它好比我们网站MVC模型的Controller。它负责将客户的请求按照一定的算法分发到下一层不同的服务器进行处理,自己本身不做具体业务的处理。另外该层还可用监控下一层的状态,如果下一层的某台服务器不能正常工作了,它会自动把其剔除,恢复后又可用加上。该层由一台或者几台Director Server组成。
2.Server Array:该层负责具体业务。可有WEB Server、mail Server、FTP Server、DNS Server等组成。注意,其实上层的Director Server也可以当Real server用的。
3.Shared Storage:主要是提高上一层数据和为上一层保持数据一致
负载均衡机制
前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。LVS的通过控制IP来实现负载均衡。IPVS是其具体的实现模块。IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如果返回给客户端数据等等。IPVS为此有三种机制:
1.VS/NAT(Virtual Server via Network Address Translation),即网络地址翻转技术实现虚拟服务器。当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。
2.VS/TUN(Virtual Server via IP Tunneling),即IP隧道技术实现虚拟服务器。它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。
  3.VS/DR(Virtual Server via Direct Routing),即用直接路由技术实现虚拟服务器。跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上
  


  ARP协议:
  ARPAddress Resolution Protocol是根据IP地址获取物理地址的一个TCPIP协议,主机反送消息时将包含目标IPARP请求广播到网络上的所有主机,并接受返回消息,一次确定目标的物理地址,受到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保存一定时间,下次请求时直接查询ARP缓存以节约资源。
  由于lvslinux2.6以后内核自带的,所以可以直接使用
  Ipvsadmrhel中含有,只要安装ipvsadmipvsadmrhel的隐藏模块中,所以应该先配好yum源,有关配置请查看上一片“redhat_HA”
  Serve1作为Scheduler
  Server3Server4作为RealServer
  在Server3Server4上安装httpd服务器,作为测试项
  写入主页:
  并加入红色
  [root@server3 ~]# cat /var/www/html/index.html
  server3.example.com
  为SchedulerRealServer添加VIrt IpVIP
  [root@server1 ~]# ip addr add 172.25.33.100/24 dev eth0
  [root@server4/3 ~]#  ip addr add 172.25.33.100/32 dev eth0
  
  添加策略:
  [root@server1 ~]# ipvsadm -A -t 172.25.33.100:80 -s rr
  [root@server1 ~]# ipvsadm -a -t 172.25.33.100:80 -r 172.25.33.3
  [root@server1 ~]# ipvsadm -a -t 172.25.33.100:80 -r 172.25.33.4
  [root@server1 ~]# service ipvsadm save
   ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
  
  -A, --add-service
                Add a virtual service.
   -a, --add-server
                Add a real server to a virtual service.
  -t, --tcp-service service-address
                Use TCP service.
  -s, --scheduler scheduling-method
                scheduling-method  
  rr 调度算法:轮询
  -r, --real-server server-address
                Real server that  an  associated  request  for  service  may  be
                assigned  to.
  设置其在第三和第五等级开机启动。
  [root@server1 ~]# chkconfig --level 35 ipvsadm  on
  [root@server1 ~]# chkconfig --list |grep ipvsadm
  ipvsadm        0:off1:off2:off3:on4:off5:on6:off
  此时的lvs已经可以开始访问了,但是由于realservervip也是100,很容易造成arp表中的映射关系错误,从而产生只能访问一个realserver的错误。
  如果想要客户端访问调度器而不能访问realserver,那么需要让realserver忽略每个虚拟IPARP请求,执行以下指令
  [root@server4/3 ~]# yum install arptables_jf -y
  [root@server4 ~]# arptables -A IN -d 172.25.33.100 -j DROP
  [root@server4 ~]# arptables -A OUT -s 172.25.33.100 -j mangle --mangle-ip-s 172.25.33.4
  此时,realserver仅响应调度器的请求。
  保存策略
  [root@server4 ~]# service arptables_jf save
  Saving current rules to /etc/sysconfig/arptables:          [  OK  ]
  使用arp -an IP 查看当前请求iPMAC的绑定关系,如果不会自动轮询,那么查看各主机的mac,看是否在某个主机上。
  [kiosk@foundation33 Desktop]$ arp -an 172.25.33.100
  ? (172.25.33.100) at 52:54:00:ec:e5:a9 [ether] on br0
  使用arp -d 172.25.33.100删除IP——MAC映射表。
  与heartbeat的结合:
  使用ipvsadm -C清空策略:
  

  [root@server1 ha.d]# cat haresources |tail -n 1
  server1.example.comIPaddr::172.25.33.100/24/eth0 ipvsadm httpd
  
  但是由于heartbeat和lvs本身都没有对服务是否运行的监控能力,所以需要使用ldirectord来帮助heartbeat和lvs进行监控管理,ldirectord要预先安装。
  ldirectord - Linux Director Daemon
  
         Daemon to monitor remote services and control Linux Virtual Server
  [root@server1 ha.d]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf .
  [root@server1 ha.d]# vim ldirectord.cf
  [root@server1 ha.d]# scp ldirectord.cf 172.25.33.2:/etc/ha.d/
  [root@server1 ha.d]# vim ldirectord.cf
  virtual=172.25.33.100:80
          real=172.25.33.3:80 gate
          real=172.25.33.4:80 gate
          fallback=127.0.0.1:80 gate
          service=http
          scheduler=rr
          #persistent=600
          #netmask=255.255.255.255
  启动heartbeat,配好参数//此处未知参见hearbeat_HA.
  在heartbeat资源策略haresources中,添加资源httpd ldirectord ipvsadm 即可让heartbeat实现ipvsadm的双机热备
  测试:
  停掉server3的http服务,会发现调度器不会往server3上调度,开启server3,ipvsadm -l 发现,调度内容重新出现,server1的heartbeat服务停止,server2的heartbeat会继续接管。
  与keepalived结合:
  
  
  编译安装keepalived:
  tar -xf keepalived-1.2.20.tar.gz
   ./configure --prefix=/usr/local/keepalived
  yum install -y libnl-devel
  ./configure --prefix=/usr/local/keepalived
  yum install -y libnl-devel
  ./configure --prefix=/usr/local/keepalived
  yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
  ./configure --prefix=/usr/local/keepalive
  make&& make install
  编译安装完成后,需要将/usr/local/keepalived下的配置文件,执行脚本(+x)
  执行脚本
  [root@server1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
  配置文件:
  [root@server1 init.d]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  [root@server1 init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
  启动脚本:
  [root@server1 init.d]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
  [root@server1 init.d]# chmod +x /etc/init.d/keepalived
  global_defs {
     notification_email {
          root@localhost//收到警报的email地址
     }
     notification_email_from keepalived@server1.example.com
     smtp_server 127.0.0.1//使用本机转发email
     smtp_connect_timeout 30
     router_id LVS_DEVEL//load balancer 的表示地址ID,用于email警报
     vrrp_skip_check_adv_addr
     vrrp_strict
  }
  
  vrrp_instance VI_1 {
      state MASTER备机改为backup,此状态是由priority的值来确定的,如果主机的priority的值小于备机,那么将会失去master的状态。
      interface eth0
      virtual_router_id 51
      priority 100备机设为50
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
   }
      virtual_ipaddress {
          172.25.33.100
      }
  }
  
  virtual_server 172.25.33.100 80{
      delay_loop 6
      lb_algo rr
      lb_kind DR
      #persistence_timeout 50
      protocol TCP
  
      real_server 172.25.33.3 80{
          weight 1
          TCP_Check{
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }
     real_server 172.25.33.4 80{
          weight 1
  TCP_Check{
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }
  }
  

  添加服务vsftpd为长连接,因为vsftpd是上传下载,所以要保持长连接,在操作时不断开。
  
  persistence_timeout 50
  重起keepalived
  [root@server1 ha.d]# ipvsadm -l
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  172.25.33.100:http rr
    -> server3.example.com:http     Route   1      0          0         
  TCP  172.25.33.200:http rr persistent 50
    -> server3.example.com:ftp      Route   1      0          0      
  
  

  

  
  





运维网声明 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-659095-1-1.html 上篇帖子: heartbeat+ldirectord+lvs安装及配置 下篇帖子: heartbeat+lvs+Keepalive
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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