一、LVS、KeepAlived、Nginx是什么?     

前言

  1. LVS、Nginx、HAProxy 是目前使用最广泛的三种软件负载均衡软件。
  2. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的 Web 应用,比如日 PV 小于1000万,用 Nginx 就完全可以了;如果机器不少,可以用 DNS 轮询LVS 所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用 LVS。
  3. 目前比较流行的架构方案

           - web前端采用nginx/HAProxy+Keepalived作为负载均衡

           - 后端mysql数据库一主多从和读写分离,采用lvs+keepalived的架构 1.2. 网络分层架构

(1)什么是LVS   官网

                   

keepalived怎么做负载均衡_服务器

  • VS: Virtual Server ,Director Server(DS) ,Dispatcher(调度器),Load Balancer 负责调度
  • RS: Real Server(lvs),upstream server(nginx),backend server(haproxy) 真正提供服务器

      虚拟服务器(LVS)是在真实服务器集群上构建的高度可扩展且高度可用的服务器。服务器群集的体系结构对于最终用户是完全透明的,并且用户与群集系统进行交互就好像它只是一台高性能虚拟服务器一样

(2)四层负载均衡和七层负载均衡    OSI七层和四层

负载均衡的分层是针对OSI网络模型来说的,负载均衡模型也不仅仅只有四层和七层的。下面先给出OSI网络模型架构:

          

keepalived怎么做负载均衡_lvs_02

根据上述模型,可以快速了解负载均衡的分层:

  • 二层负载均衡:基于虚拟MAC与真实MAC的地址互联。
  • 三层负载均衡:基于虚拟IP与真实IP的地址互联。
  • 四层负载均衡:基于三层的IP加四层的PORT进行虚拟与真实互转,期间也记录四层的UDP和TCP信息。
  • 七层负载均衡:基于六层的URL进行地址互转,分析URL得到对应的七层HTTP等信息。

(3)lvs集群的模式分析

  • lvs-nat:修改请求报文的目标IP ,多目标IP的DNAT
  • lvs-dr:操纵封装新的MAC地址
  • lvs-tun:在原请求IP报文之外新加一个IP首部
  • lvs-fullnat:修改请求报文的源和目标IP

(4)举lvs_nat模式例说明‘

nat模式的本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发

                

keepalived怎么做负载均衡_keepalived怎么做负载均衡_03

 

  • 原理简述

客户端向VIP发起请求连接,Director在经过调度之后选取RS,将本地端口与RS的端口做映射,然后RS返还数据Director将数据返还客户端

  • LVS-NAT特性

1.RIP的网关必须与网关指向DIP
2.可以使用端口映射;即Director将客户端请求的IP端口转换为真是服务器的iP与端口
3.Director会成为系统的瓶颈所在,
可以为任意的操作系统
5.每台后端服务器的网关必须为调度器的内网地址

  • 常用的名词
  1. VS:Virtual Server,虚拟服务器,也称为Director
  2. RS:Real Server(lvs),真正的服务器,集群中各节点
  3. CIP:客户端IP
  4. VIP:Director向外部提供服务的IP
  5. RIP:集群节点的服务器IP
  6. DIP:Director与RS通信的IP

(2)KeepAlived

  •  什么是keepAlived?

        keepalive,是在TCP中一个可以检测死连接的机制。Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

  • 简介
  1. keepalived是保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
  2. 以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议
  3. keepalived是可以工作在第三层、第四层、第五层的检测服务器状态的软件,
  4. 如果有一台web服务器死机,或工作出现故障,keepalived将检测到,并将其从系统中剔除
    当web服务器工作正常后keepalived自动将web服务器加入到服务器集群中

三层、四层、五层工作在TCP/IP协议栈的IP层、TCP层、应用层。原理如下:

  1. 三层:keepalived使用三层方式工作是,keepalived会定期向服务器集群中的服务器发送一个IMCP的数据包,也就是ping程序,如果发现某台服务器的IP地址没有激活,keepalived便报告这台服务器失效,并将它从集群中删除,这种情况的典型例子是某台服务器被非法关机。三层的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
  2. 四层:主要是以TCP端口的状态来决定服务器工作正常与否。如web服务器的端口一般是80,如果keepalived检测到80端口没有启动,则keepalived将这台服务器从集群中剔除。
  3. 五层:应用层,比三层和四层要复杂一点,keepalived将根据用户的设定检查服务器程序运行是否正常,如果与用户设定的不相符,则keepalived将把服务器从服务器集群中剔除。
  4. 基于VRRP虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级选举一个backup当master。这样的话就可以保证路由器的高可用了。
  5. keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

作用:主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。
高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)

1、为什么要使用?

  自问:当我们的服务器意外挂了之后,我们要怎么做?

  自答:当然是找一台新的机器,替代现有的机器,然后做新的环境部署,端口映射,域名解析等等一系列的工作,再将服务重新启动;但是如果这一系列的操作都是手动完成的,那么等你把这些工作搞好,可能服务已经停止个把小时了,这会儿估计运营早就提着菜刀架在你脖子上了;
但是如果使用了KeepAlived之后,然后提前将备用机准备好,当主的机器挂掉之后,自动将VIP给你切换到备用机,并且以邮件的形式告诉你说主服务已经挂了,你得赶紧恢复起来;这时候你就可以慢慢的去找主服务的问题,这时候并不会影响到你的正常业务运行。