版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cx55887/article/details/83988318
- LVS(Liunx Virtual Server)
LVS作用就是实现负载均衡,而负载均衡简单来所就是将用户请求合理的分流到后端节点之上,以实现资源的高效利用。
LVS特点是可以跨平台,也就是在windows、Linux系统之上都可以用。
LVS的核心组件:
- ip_vs:linux的内核功能模块,工作在内核,依赖该内核模块实现负载均衡功能
- ipvsadm:应用层程序,该程序可以和内核中的ip_vs模块通信,实现对负载均衡的管理和控制
- keepalived也可以对ip_vs进行管理
相关概念:
- DS:Director Server。前端负载均衡器节点。
- RS:Real Server。后端真实的工作服务器。
- VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
- DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
- RIP:Real Server IP,后端服务器的IP地址。
- CIP:Client IP,访问客户端的IP地址。
LVS的工作模式:DR模式、NAT模式、TUN模式、FULLNAT模式。
LVS的调度算法,所谓算法简单来说就是按照什么规则来送后端的多个RS中挑选一个给用户提供服务。算法有静态算法和动态算法。
静态算法:无论后端的RS当前的服务器负载情况怎么样,都安装固定的方式来给RS分配用户请求
- rr:Round Bobin,轮询,将客户端的请求交替分配给RS
- wrr:Weighted Round Bobin,加权轮询,根据RS的性能不同,让他们来承担不同比例的用户请求
- dh:Destination Hashing,目标地址哈希调度,基于用户所请求的地址做哈希表
作用:实现将对于相同的地址的请求调度到同一个RS之上
使用场景:适应于前端是一个DR,后端是多个cache的时候 - sh:Source Hashing,源地址的哈希调度,基于用户的ip地址做哈希表
作用:实现将同一个客户端调度到相同的RS之上
动态算法:
- lc:Least Connection,最小连接数调度,本质是调度到当前负载最低的主机上
overhead=active*256+inactive - wlc:Weighted Least Connection,加权最小连接数调度,本质是调度到当前负载最低的主机上
overhead=(active*256+inactive)/weight - SED:是wlc补充,为了降低overhead出现重复的情况
overhead=((active+1)*256+inactive))/weight - lblc:基于目标地址的最小连接数调度,这种算法那是lc和dh的组合,适应于cache场景
- lblcr:带有复制功能的lblc
算法的选型:
- 一般的网络的服务(http mail mysql)
rr wlc wrr - 缓存服务(web cache/db cache)
dh lblc lblcr