• lvs集群


    一、lvs集群的介绍

    1.1什么是集群

    Cluster,集群、群集

            由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。

    1.2 集群的类型

    LB: Load Balancing,负载均衡,多个主机组成,每个主机只承担一部分访问请求

    HA: High Availiablity,高可用,避免 SPOF(single Point Of failure)

    HPC: High-performance computing,高性能 。依赖于分布式、并行计算,例如云计算

    1.3 集群和分布式

    系统性能扩展方式:

    • Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务

    • Scale Out:水平扩展,向外扩展,增加设备,并行地运行多个服务调度分配问题,Cluster

    垂直扩展不再提及:

    随着计算机性能的增长,其价格会成倍增长

            单台计算机的性能是有上限的,不可能无限制地垂直扩展,多核CPU意味着即使是单台计算机也可以并行的。

    集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的。

    分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。

    1.3.1 集群设计原则

            可扩展性—集群的横向扩展能力

            可用性—无故障时间 (SLA service level agreement)

            性能—访问响应时间

            容量—单位时间内的最大并发吞吐量(C10K 并发问题) 

    二、LB Cluster 负载均衡集群

    SNAT:让 内网用户 可以访问外网

    DNAT:把内网的服务 共享到公网上(外网用户可以访问 公司内网的服务)

    2.1 基于工作的协议层次划分

    传输层(通用):DNAT 和 DPORT

    LVS:

    nginx:stream

    haproxy:mode tcp

    应用层(专用):针对特定协议,常称为 proxy server

    http:nginx, httpd, haproxy(mode http), ...

    fastcgi:nginx, httpd, ...

    mysql:mysql-proxy, mycat...

    3. 负载均衡集群的结构

    第一层,负载调度器(Load Balancer或Director)

    访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。负载均衡层


    第二层,服务器池(Server Pool)

    群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。web应用层


    第三层,共享存储(Share Storage)

    为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

    三、LVS介绍

            VS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名正明), 阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现

    LVS 官网:http://www.linuxvirtualserver.org/

    3.1 LVS工作原理

     在内核中查看功能是否开启

    [root@localhost ~]#grep -i -C 10 ipvs /boot/config-3.10.0-693.el7.x86_64 
    CONFIG_NETFILTER_XT_MATCH_CPU=m
    CONFIG_NETFILTER_XT_MATCH_DCCP=m
    CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
    CONFIG_NETFILTER_XT_MATCH_DSCP=m
    CONFIG_NETFILTER_XT_MATCH_ECN=m
    CONFIG_NETFILTER_XT_MATCH_ESP=m
    CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
    CONFIG_NETFILTER_XT_MATCH_HELPER=m
    CONFIG_NETFILTER_XT_MATCH_HL=m
    CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
    CONFIG_NETFILTER_XT_MATCH_IPVS=m
    CONFIG_NETFILTER_XT_MATCH_LENGTH=m
    CONFIG_NETFILTER_XT_MATCH_LIMIT=m
    CONFIG_NETFILTER_XT_MATCH_MAC=m
    CONFIG_NETFILTER_XT_MATCH_MARK=m
    CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
    CONFIG_NETFILTER_XT_MATCH_NFACCT=m
    CONFIG_NETFILTER_XT_MATCH_OSF=m
    CONFIG_NETFILTER_XT_MATCH_OWNER=m
    CONFIG_NETFILTER_XT_MATCH_POLICY=m
    CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
    --
    CONFIG_IP_SET_HASH_NET=m
    CONFIG_IP_SET_HASH_NETPORT=m
    CONFIG_IP_SET_HASH_NETIFACE=m
    CONFIG_IP_SET_LIST_SET=m
    CONFIG_IP_VS=m
    CONFIG_IP_VS_IPV6=y
    # CONFIG_IP_VS_DEBUG is not set
    CONFIG_IP_VS_TAB_BITS=12

    #
    # IPVS transport protocol load balancing support
    #
    CONFIG_IP_VS_PROTO_TCP=y
    CONFIG_IP_VS_PROTO_UDP=y
    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
    CONFIG_IP_VS_NQ=m

    #
    # IPVS SH scheduler
    #
    CONFIG_IP_VS_SH_TAB_BITS=8

    #
    # IPVS application helper
    #
    CONFIG_IP_VS_FTP=m
    CONFIG_IP_VS_NFCT=y
    CONFIG_IP_VS_PE_SIP=m

    #
    # IP: Netfilter Configuration
    #
    CONFIG_NF_DEFRAG_IPV4=m
    CONFIG_NF_CONNTRACK_IPV4=m
     

    3.2 LVS 功能及组织架构

    负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性。

    应用于高访问量的业务
    扩展应用程序
    消除单点故障
    同城容灾 (多可用区容灾)

    3.3  LVS集群类型中的术语

    • VS:Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器)

    • RS:Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)

    • CIP:Client IP(客户机IP)

    • VIP:Virtual serve IP VS外网的IP

    • DIP:Director IP VS内网的IP

    • RIP:Real server IP (真实IP)

    四、lvs调度算法

    分为两种:静态方法和动态方法

    静态方法:不管后端服务器的状态,根据自身算法进行调度

    动态方法:会根据后端服务器的状态调度

    静态

    1、RR:roundrobin,轮询,较常用

    2、WRR:Weighted RR,加权轮询,较常用

    3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

    4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存

    动态

    主要根据每RS当前的负载状态及调度算法进行调度Overhead=value 较小的RS将被调度

    1、LC:least connections 适用于长连接应用

    Overhead=activeconns*256+inactiveconns

    activeconns活跃数        inactiveconns  不活跃数

    2、WLC:Weighted LC,默认调度方法,较常用

    Overhead=(activeconns*256+inactiveconns)/weight

    weight  权重

    3、SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接

    Overhead=(activeconns+1)*256/weight

    4、NQ:Never Queue,第一轮均匀分配,后续SED

    5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等

    6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,,实现Web Cache等

  • 相关阅读:
    智能制造中后期:深挖成本、提升效率的关键——标准工时
    JavaSE学习--数据类型和运算符
    Spring MVC的常用注解
    书桌台灯怎么选?分享儿童卧室灯品牌
    MFC 对话框
    人工神经网络算法实战教程
    Linux编译动态和静态链接库
    计算机系统(20)----- 信号量机制
    Spring Boot集成ElasticsearchRepository
    Mac电脑其他文件太占内存?如何进行删除
  • 原文地址:https://blog.csdn.net/mikechen1/article/details/136477014