LVS详解-三种模式和负载均衡算法

1.由来

起初是用来进行LAMP的优化,其中包括:

  • web服务器调优;
  • 网站调优;
  • 动静态请求分离;
  • 动态页面静态化;
  • 数据库参数调优:还可以做读写分离;
  • 加缓存(memcached);

1.1web服务器调优

缓存;进程数;添加web服务器;负载均衡

1.11负载均衡

结构:调度器DR、web服务器

  • 调度器(又称负载均衡器)
    负责接收用户请求
    将请求通过调度算法转发给web服务器

    实现方式:
    软件:

1.工作在OSI七层中的第4层

通过端口号(所以是工作在四层的):

定义集群'10.1.1.200:80'
定义rs(real server):
    	10.1.1.211
    	10.1.1.212
我们访问的是调度器的80端口,这是一个集群,请求会转交给后端的rs
这个调度器是不需要跑web服务器的,因为它只需要转发;
所以我们可以通过不同的端口号做诸多服务的负载均衡,例如SSH负载均衡

2.工作在OSI七层中的第7层

  • nginx
  • haproxy

硬件:

  • F5
  • netscaler
  • hillstone #山石网络

1.2linux virtual server

是一个虚拟的服务器集群系统

结构如下:

  • 负载均衡器
  • 存储网(服务器池):如raid技术
  • 共享存储:比如NFS,把各服务器的/data/www用某个共同的存储池来挂载

四层协议的特征

  • 端口号
  • 需要在内核的TCP/IP协议栈进行过滤筛选:因此这个操作是在内核模块中完成的,所以lvs其实是一个内核模块
    两段式结构:
    ipvs:内核空间
    ipvsadm:用户空间

2.LVS模式

术语介绍:

VIP
	Virtul IP,也就是DR的地址(也是公网地址来的)
RIP
	集群节点;真正提供服务的web服务器的地址(有可能是与DR处于同一个网段的私网地址)
DIP
	Director用来和RIP进行通讯的地址
CIP
	client IP

2.1.NAT(IP转换)模式

nat转换的地方是:RS返回数据包给DR的时候的数据包中源地址由RIP变成VIP

图解:

特点:

	1. DR要同时处理入站和出站的请求;调度器容易成为整个架构的瓶颈
	2.所有的RS要和DR在同一个网段
	3.通常情况下RIP是私有地址
	4.RS可以是任何的操作系统,能处理用户请求就ok

2.2.DR(路由)模式

用户的请求经过DR,RS直接返回给客户端(推荐)

图解:

特点:

1.DR只处理进入的请求
	RS的网关不能指向DR而是指向真正的路由器
	
2.集群必须在同一个物理网络中,因为是通过arp基于MAC地址进行转发的

3.需要所有的RS本地都有一个VIP地址(配了两个网卡)
	大部分操作系统都支持
	因为RS返回数据包的时候需要用的VIP才能够封装
	虽然所有RS都有配置了VIP这个地址的网卡,但是可以通过设置内核参数让其暂时不启用
		这里要配置arp_announce,目的是修改返回数据包的源ip地址

4.不支持端口映射

5.这种方式的性能更好

2.3.TUNNEL(隧道)模式

在IP请求包上进行二次封装,加上tunnel的ip段

图解:

特点

	此时DR和RS不需要在同一个物理网段中
	DR和RS的通信是通过包裹在外部的DIR RIP1 来实现的
	RS和CLIENT通信时,RS也是用自己的配置了VIP的网卡来转发

3.LB 负载均衡集群

负载均衡集群需要分发器:Director
根据内部锁和调度规则选择急群众的一个来响应
分发是通过调度算法来决定的

LVS调度算法:

静态:

  • RR Round-robin轮询算法:
	绝对公平:每个人分配到的请求一样多
	若服务器的处理能力不一致的话会造成浪费
	我们应该让性能更好的服务器处理更多请求
  • WRR Weighted round-robin加权轮询:
	每个服务器有权重值
  • DH目的地址哈希:
	同一类的请求会到同一个RS中获得
	哈希表存的是不同类型目的地址到RS的映射
	用来做缓存服务器
  • SH源地址哈希
	同一台CIP会访问到同一个RS
	哈希表存的是DIP到RS的映射
	用来做会话维持

动态:
根据算法和RS的负载状态做决策

  • LC
    Least connection:最少连接

      		找处理请求最少的RS
      		计算每台RS的负载:active*256+inactive=overhead
      			active是处于活动状态的连接数
      			inactive是处于非活动状态的连接数
      		仍然是不公平的
      			服务器性能有差异
    
  • WLC

      		加权最少连接
      			overhead/weight
      		默认的算法
    
  • SED

      	最短期望延迟
      		不考虑非活动状态的连接
    
  • NQ

      	Never Queue
      		永不排队
    
  • LBLC

      	动态DH
    

全部评论

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务