zoukankan      html  css  js  c++  java
  • [network] IPVS / Load balancer / Linux Virtual Server

    Load Balancer

    IPVS: http://kb.linuxvirtualserver.org/wiki/IPVS

      NAT: http://kb.linuxvirtualserver.org/wiki/LVS/NAT

        VIP: http://kb.linuxvirtualserver.org/wiki/VIP

        ARP: http://kb.linuxvirtualserver.org/wiki/ARP_Issues_in_LVS/DR_and_LVS/TUN_Clusters

      TUN: http://kb.linuxvirtualserver.org/wiki/LVS/TUN

        http://www.linuxvirtualserver.org/VS-IPTunneling.html

      DR:http://kb.linuxvirtualserver.org/wiki/LVS/DR

        http://www.linuxvirtualserver.org/VS-DRouting.html

      FNAT: <<LVS_FULLNAT概要设计.docx>>   可以从下面的链接里download。

    中文资料:http://linuxvirtualserver.org/zh/index.html

    LVS集群的通用体系结构 

    负载调度器(load balancer)

    服务器池(server pool)

    共享存储(shared storage)

      分布式锁管理器(Distributed Lock Manager)

    高可用性

    一般来说,调度器的可靠性较高,因为调度器上运行的程序较少而且大部分程序早已经遍历过,但我们不能排除硬件老化、网络线路或者人为误 操作等主要故障。为了避免调度器失效而导致整个系统不能工作,
    我们需要设立一个从调度器作为主调度器的备份。两个心跳(Heartbeat)进程[6]分 别在主、从调度器上运行,它们通过串口线和UDP等心跳线来相互定时地汇报各自的健康状况。
    当从调度器不能听得主调度器的心跳时,从调度器通过ARP欺骗 (Gratuitous ARP)来接管集群对外的Virtual IP Address,同时接管主调度器的工作来提供负载调度服务。
    当主调度器恢复时,这里有两种方法,一是主调度器自动变成从调度器,二是从调度器释放 Virtual IP Address,主调度器收回Virtual IP Address并提供负载调度服务。
    这里,多条心跳线可以使得因心跳线故障导致误判(即从调度器认为主调度器已经失效,其实主调度器还在正常工作)的概论 降到最低。 通常,当主调度器失效时,主调度器上所有已建立连接的状态信息将丢失,已有的连接会中断。客户需要向重新连接,从调度器才会将新连接调 度到各个服务器上,这对客户会造成一定的不便。
    为此,IPVS调度器在Linux 内核中实现一种高效状态同步机制,将主调度器的状态信息及时地同步到从调度器。当从调度器接管时,绝大部分已建立的连接会持续下去。

    负载均衡的发展历史,以及NAT、TUN、DR三种方式优缺点的比较

    http://linuxvirtualserver.org/zh/lvs3.html

    PrivateLink是啥

    https://docs.aws.amazon.com/aws-technical-content/latest/aws-vpc-connectivity-options/aws-privatelink.html

    在支持fullnat的基础上,可以通过配置实现 PrivateLink

    LVS集群的负载调度

    http://linuxvirtualserver.org/zh/lvs4.html

    LVS项目下的软件,包括:http://www.linuxvirtualserver.org/software/index.html

    IPVS: http://www.linuxvirtualserver.org/software/ipvs.html

    包括,内核模块:  /linux-4.18-rc2/net/netfilter/ipvs

    管理工具:ipvsadm   https://mirrors.edge.kernel.org/pub/linux/utils/kernel/ipvsadm/

    看代码

      /linux-4.18-rc2/net/netfilter/ipvs

    入口:

    2373 module_init(ip_vs_init); 

    hook

    2116 static const struct nf_hook_ops ip_vs_ops[] = {                                 
    2117         /* After packet filtering, change source only for VS/NAT */             
    2118         {                                                                       
    2119                 .hook           = ip_vs_reply4,                                 
    2120                 .pf             = NFPROTO_IPV4,                                 
    2121                 .hooknum        = NF_INET_LOCAL_IN,                             
    2122                 .priority       = NF_IP_PRI_NAT_SRC - 2,                        
    2123         },                                                                      
    2124         /* After packet filtering, forward packet through VS/DR, VS/TUN,        
    2125          * or VS/NAT(change destination), so that filtering rules can be        
    2126          * applied to IPVS. */                                                  
    2127         {                                                                       
    2128                 .hook           = ip_vs_remote_request4,                        
    2129                 .pf             = NFPROTO_IPV4,                                 
    2130                 .hooknum        = NF_INET_LOCAL_IN,                             
    2131                 .priority       = NF_IP_PRI_NAT_SRC - 1,              
    。。。 。。。

    为了清楚 hook点的进入条件和场景:

    阅读 netfilter相关内容: 跳转至 

    [network] netfilter

  • 相关阅读:
    Java 读取某个目录下所有文件、文件夹
    poi根据excel模板导出Excel
    UML关系(泛化,实现,依赖,关联(聚合,组合))
    使用Git下载Hadoop的到本地Eclipse开发环境
    maven command to create your application
    Roo中的@Version
    oracle 给用户赋表空间
    hiberante 二级缓存设置
    procedure
    Oracle综合数据库管理命令集
  • 原文地址:https://www.cnblogs.com/hugetong/p/9240882.html
Copyright © 2011-2022 走看看