我不是DBA

比你强的人你还努力,总结........

  • 博客访问: 3867
  • 博文数量: 5
  • 用 户 组: 普通用户
  • 注册时间: 2016-01-18 10:45
  • 认证徽章:
ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(5)

文章存档

2017年(3)

2016年(2)

我的朋友
最近访客
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
LVS(一)基本介绍 2017-10-16 09:23:23

分类: Linux

LVS介绍

VSlinux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统。它是一个实现负载均衡集群的开源软件项目,目前已经是Linux内核标准的一部分。使用LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。
LVS从逻辑上可以分为调度层和server集群层。

LVS的组成

ipvs:工作在内核区间的一段代码(调度实现的真正代码);
ipvsadm:工作在用户空间,是集群服务的命令行工具,为ipvs内核框架编写规则,定义集群服务。

LVS工作原理

首先ipvs是工作并监听在iptables的input链路上,并对事先定义集群服务进行转发。具体如:
  1. 当用户向负载均衡调度器(Director)发起请求,调度器将请求发往至内核空间;
  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链;
  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链;
  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器。

LVS类型与特点

NAT(目标地址转换)
  • 请求报文和响应报文都会通过director,在高负载场景中,director容易成为整个系统的瓶颈;
  • 所有集群server必须在同一个网络中;
  • real server通常是私有地址,仅用于集群节点间的通信;
  • real server的网关需要指向director;
  • 支持端口映射
DR(直接路由)
  • director只负责调度请求,响应报文不会通过director,直接由real server返回给客户端;
  • director在实现调度算法的时候不会修改目标IP地址,仅仅修改目标MAC地址;
  • real server和director必须在同一个网络中;
  • real server网关不能指向director;
  • 不支持地址转换,也不支持端口映射;
DR需要注意的地方:因为响应报文不通过director,所以每个real server必须存在客户端请求的VIP地址,但是此地址又不能响应ARP报文(只能director server上面的VIP响应ARP报文)。
解决办法:将real server的VIP绑定在lo网卡上并使用内核参数arp_announce/arp_ignore禁止real server上的VIP响应ARP报文。
TUN(隧道传输):结构和DR类型相似,唯一不同的是director和real server之间不再同一个网络中。实现方式是director向real server发送的报文不是修改目标MAC地址,而是在源报文上再一次封装IP首部信息。
  • director只负责调度请求,响应报文不会通过director,直接由real server返回给客户端;
  • 各节点可以不在同一个网络中;
  • real server的网关不能指向director;
  • 不支持端口映射;
  • real server必须支持隧道

LVS的调度算法

固定调度
    RR(轮询):依次循环的方式将请求调度到不同的real server上。特点:director不区分real server的处理能力而非常均衡的将任务分发到后端real server上;
    WRR(加权轮询):改算法比RR算法多一个权重概念,设置real server后,权重越高,分发的请求数越多,权重的范围为0~100。特点:WRR可以考虑real server的处理能力,根据处理能力将任务分发给real server;
    SH(源地址hash/source hash):把请求的源地址散列算法进行静态分配到固定的real server上;
    DH(destination hashing):根据目标IP地址通过散列函数将目标IP与real server建立映射关系,出现real server不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器;
动态调度
    LC(least-connection):最少连接,director将请求优先分配给连接数比较少的real server;
    WLC(weigth least-connection):加权最少连接,可以在LC上多设置一个加权值,考虑real server的处理能力;
    LBLC:基于局部性的最少连接调度算法,改进的DH算法,根据请求的IP地址寻找最近的该IP地址所有使用的real server,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的real server,否则会继续选择其它可行的real server;
  LBLCR:基于本地的带有复制功能的最少连接,记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高;
阅读(7) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册