LVS

  LVS(Linux Virtual Server, Linux 虚拟服务器),它是一个虚拟的四层交换集群系统。本身不产生流量,只做用户请求的转发。

LVS 由2部分组成:

  • IPVS:安装在Director Server,同时虚拟出一个IP地址,用户必须通过这个虚拟的IP(VIP)访问服务。IP负载均衡技术就是通过内核中的IPVS模块来实现。

  • ipvsadm:用户空间的集群服务管理工具。

IP负载均衡技术

  • Virtual Server via Network Address Translation(VS/NAT)

  通过网络地址转换,调度器重写请求报文的目标IP地址,根据预设的调度算法,将请求分发给后端的真实服务器。真实服务器的响应报文通过调度器时,报文的源地址将被重写,再返回给用户,完成整个负载调度过程。由于请求和响应报文都必须经过调度器,当服务器结点数目为10~20 时,调度器的处理能力将成为瓶颈。

  • Virtual Server via IP Tunneling(VS/TUN)

  调度器把请求报文通过IP隧道转发至真实服务器,真实服务器直接响应给用户,所以调度器只处理请求报文。由于一般网络服务应答报文比请求报文大很多,采用 VS/TUN 技术后,集群系统的最大吞吐量可以提高10倍。

  • Virtual Server via Direct Routing(VS/DR)

  调度器改写请求报文的MAC地址,将请求发送到真实服务器,真实服务器直接响应给用户。可以极大地提高整个集群系统的伸缩性。但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。

  • Director Server对外的网卡,Real Server的lo接口均配置为VIP。

  • Real Server内核参数arp_ignore=1。(只响应目标IP地址为接收网卡上的本地地址的arp请求)

  • Real Server内核参数arp_announce=2。(忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址)

LVS四层负载均衡

  四层负载均衡工作在传输层,调度器接受到客户端请求后,通过修改数据包的地址信息,将请求转发到后端服务器,由客户端和后端服务器直接建立TCP连接。特点是负载性能高、支持各种网络协议,但是对网络依赖较大。

负载调度算法

  轮询、加权轮询、最小连接、加权最小连接等。

Keepalived

  keepalived 是一个类似于网络层,传输层及应用层交换机制的软件,防止单点故障,主要用作 Real Server 的健康检查以及负载调度器主机和备机之间 failover 的实现。Keepalived 检测到故障的服务器,会将其从集群中剔除,当服务器恢复正常后,Keepalived 自动将其加入到集群中,这些工作全部自动完成,不需要人工干预。

  Keepalived 实现了基于 TCP/IP 协议的网络层,传输层及应用层的健康检查机制。

  • 网络层是以服务器的IP地址是否有效作为服务器工作正常与否的标准。(ICMP数据包,即ping命令)

  • 传输层主要以TCP端口的状态来决定服务器工作正常与否。

  • 应用层是对指定的URL执行HTTP GET,然后使用MD5算法对HTTP GET结果进行求和。用这个结果与预期值比较,检查应用程序服务器是否正常工作。

  Keepalived 还基于 VRRP 协议实现了 LVS 负载调度器的故障转移。

VRRP协议

  VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议),将N台提供相同功能的静态路由器组成一个路由器组,这个组里面有一个master和多个backup,master有一个对外提供服务的vip。master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup来作为master。

高可用架构

  LVS+keepalived+Nginx+应用服务器。

 

posted @ 2020-01-26 09:18  PIPO2  阅读(190)  评论(0编辑  收藏  举报