LVS原理

LVS模型

负载均衡

负载均衡的实现

● 硬件

  • F5 Big-IP
  • Citrix Netscaler
  • A10 A10

● 软件

  • lvs:Linux Virtual Server,阿里四层SLB (Server Load Balance)使用
  • nginx:支持七层调度,阿里七层SLB使用Tengine
  • haproxy:支持七层调度
  • ats:Apache Traffic Server,yahoo捐助给apache
  • perlbal:Perl 编写
  • pound
  • 一般使用较多的:LVS、Nginx、haproxy

● 此处主要介绍LVS实现负载均衡。

  • LVS工作在OSI模型的下四层,不支持应用协议内部的调度。因此一般将LVS作为最前端的调度器,然后再使用Nginx或者haproxy调度。

负载均衡的实现分类

● 基于工作的协议层次划分:

  • 传输层(通用):DPORT
    • LVS:
    • nginx:stream
    • haproxy:mode tcp
  • 应用层(专用):针对特定协议,自定义的请求模型分类
    • proxy server:
      http:nginx, httpd, haproxy(mode http), …
      fastcgi:nginx, httpd, …
      mysql:mysql-proxy, …

负载均衡产生的会话保持问题

● 每次访问时可能被调度至不然的服务器,但是访问过程产生的一些个人信息应该或者说是访问的有些状态是需要下次再次访问是服务器应该记住的数据。例如:电商网站的购物车。那么因为调度至不同的服务器如何解决会话保存的问题呢?

● 解决办法:

  • (1) session sticky:同一用户调度固定服务器
    • Source IP:LVS sh算法(对某一特定服务而言)
    • Cookie (cookie是工作在应用层,LVS工作在OSI下四层,因此lvs不能识别cookie)
  • (2) session replication:每台服务器拥有全部session
    • session multicast cluster
  • (3) session server:专门的session服务器(专门的session服务器实现session共享)
    • Memcached,Redis

LVS自身存在的问题

● LVS调度器存在单点失败问题

● LVS不能检查后端服务器的健康状态

● 解决办法:

  • keepalived:VRRP协议
    • keepalived与lvs经常会搭配使用。

LVS介绍

LVS简介

● LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名 正明)

  • 官网:http://www.linuxvirtualserver.org/
  • VS: Virtual Server,负责调度
  • RS: Real Server,负责真正提供服务
  • L4:四层路由器或交换机
  • 阿里的四层SLB(Server Load Balance)是基于LVS+

LVS的工作原理

● 工作原理:VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS

  • 用户访问的其实是LVS服务器,通过LVS再将用户的请求调度至后端服务器,因此LVS是负责接收用户请求的,而用户看不到后端服务器,只能看到LVS服务器,但是LVS并不是真正提供服务器的服务器,因此lvs是一个虚拟服务器。

● lvs工作在内核中,引用的netfilter的功能,工作在内核的INPUT钩子上的框架。

查看lvs的内核支持

[root@magedu ~]# grep -i -A 10 "IPVS" /boot/config-3.10.0-862.el7.x86_64
# IPVS transport protocol load balancing support
CONFIG_IP_VS_PROTO_TCP=y #开启tcp
CONFIG_IP_VS_PROTO_UDP=y #开启udp
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y #

# IPVS scheduler #默认支持的算法
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m

lvs集群体系结构

● 不同的业务可能搭建多组lvs

LVS集群中的相关术语

● VS:Virtual Server,Director Server(DS),Dispatcher(调度器),Load Balancer

● RS:Real Server(lvs), upstream server(nginx),backend server(haproxy)

对后端服务器的称呼:
    lvs中            Real Server
    Nginx配置文件中   upstream server
    haproxy中        backend server

● CIP:Client IP

● VIP: Virtual serve IP VS外网的IP

● DIP: Director IP VS内网的IP

● RIP: Real server IP

  • 访问流程:CIP <–> VIP == DIP <–> RIP

lvs的管理工具

● lvs: ipvsadm/ipvs

  • ipvsadm:用户空间的命令行工具,规则管理器
    • 用于管理集群服务及RealServer
  • ipvs:工作于内核空间netfilter的INPUT钩子上的框架

lvs集群的类型

● lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

● lvs-dr:操纵封装新的MAC地址

● lvs-tun:在原请求IP报文之外新加一个IP首部

●lvs-fullnat:修改请求报文的源和目标IP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值