高性能集群Linux Virtual ServerCL

内容概要:

1,集群概念

2,LVS介绍

3,LVS实现

4,LVS高可用性


Cluster概念:

1,系统扩展方式:

    Scale UP : 向上扩展,增强.

    Scale Out : 向外扩展,增加设备,调度分配问题,Cluster.

2,Cluster: 

    集群,为解决某个特定问题将多台计算机组合起来形成单个系统.

3,Linux Cluster 类型:

    LB : Load Balancing , 负载均衡

    HA : High Availiablity ,高可用  , SPOF(single point of failure)

            MTBF : Mean Time Between Failure 平均无故障时间

             MTTR : Mean Time To Restoration ( repair ) 平均恢复前时间

            A = MTBF / (MTBF + MTTR )

    HPC : High-performance computing , 高性能 ,排名可参考(www.top500.org)

4,分布式系统:

    分布式储存 :  云盘

    分布式计算 : hadoop , Spark


Cluster分类:

LB Cluster 的实现;

硬件:

    F5 Big-IP

    Citrix Netscaler

     A10 A10

软件:

    lvs: Linux Virtual Server

    nginx : 支持四层调度

    haproxy : 支持四层调度

    ats : apache traffic server , 由yahoo!捐助

    perlbal : Perl 编写

    pound


 Cluster分类:

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

    传输层(通用):DPORT

        LVS:

        nginx : stream

        haproxy : mode tcp

        应用层(专用): 针对特定协议,自定义的请求模型分类

            proxy server :

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

                fastcgi : nginx , httpd , ...

                mysql : mysql-proxy , ...


Cluster相关:

会话保持 : 负载均衡

    (1) session sticky : 同一用户调度固定服务器

            Source IP : LVS sh算法(对某一特定服务而言)

            Cookie

    (2)session replication : 每台服务器拥有全部session

            session multicast cluster 

    (3) session server : 专门的session服务器

            Memcached , Redis

HA集群实现方案:

    keepalived : vrrp 协议

    ais : 应用接口规范

            heartbeat

            cman + rgmanager(RHCS)

            coresync_pacemaker 


LVS介绍:

LVS: Linux Virtual Server , 负载调度器 , 集成内核 

        VS : Virtual Server , 负责调度

        RS : Real Server , 负责真正提供服务

        L4 : 四层路由器或交换机

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

iptables/netfilter : 

    iptables : 用户空间的管理工具

    netfilter : 内核空间上的框架

    流入: PREROUTING --> INPUT

    流出: OUTPUT --> POSTROUTING

    转发: PREROUTING --> FORWARD --> POSTROUTING 

    DNAT: 目标地址转换


LVS集群体系结构:

我自己按照理解画的草图,网上有很多详细的(这是一个VS/NAT模式的)


LVS概念:

lvs集群类型中的术语:

VS : Virtual Server , Director Server(DS)

        Dispatcher(调度器) , Load Balancer 

RS : Real Server(lvs) , upstream server(nginx)

        backend server(haproxy)

CIP : Client IP

VIB : Virtual Server IP

RIP : Real Server IP

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


Lvs集群的类型:

lvs : ipvsadm/ipvs 

        ipvsadm : 用户空间的命令行工具 , 规则管理器

        ipvs : 工作与内核空间的netfilter的INPUT钩子上的框架

lvs集群的类型:

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

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

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

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


Lvs-nat模式:

lvs-nat : 本质是多目标IP的DNAT , 通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发.

(1) RIP和DIP必须在同一个IP网络 , 且应该使用私网地址 ; RS的网关要指向DIP

(2) 请求报文和相应报文都必须经由Director转发 , Director易于成为系统瓶颈

(3) 支持端口映射 , 可修改请求报文的目标PORT

(4) VS必须是Linux系统 , RS可以是任意OS系统


NAT模式IP包调度过程:

LVS-DR模式:

LVS-DR : Direct Routing , 直接路由 , LVS默认模式 , 应用最广泛 , 通过为请求报文重新封装一个MAC首部进行转发 , 源MAC是DIP所在的接口的MAC , 目标MAC是某挑选出的RS的RIP所在接口的MAC地址 ; 源IP/PORT , 以及目标IP/PORT均保持不变

Director和各RS都配置有VIP

(1) 确保前端路由器将目标IP为VIP的请求报文发往Director : 

        在前端网关做静态绑定VIP和Director的MAC地址

        在RS上使用arptables工具

          arptables -A IN -d $VIP -j DROP

          arptables -A OUT -s $VIP -j mangle --mangle -ip-s $RIP

        在RS上修改内核参数以限制arp通告及应答级别

          arp_announce

          arp_ignore

(2) RS的RIP可以使用私网地址 , 也可以是公网地址 ; RIP与DIP在同一IP网络 ; RIP的网关不能指向DIP , 以确保响应报文不会经由Director.

(3) 请求报文要经由Director , 但响应报文不经由Director , 由RS直接发往Client

(5) 不支持端口映射(端口不能修改)

(6) RS可以使用大多数OS系统 

体系结构:


DR模式IP包调度过程:



lvs-tun模式:

lvs-tun:

转发方式 : 不修改请求报文的IP首部(源IP为CIP , 目标IP为VIP) , 而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP) , 将报文发往挑选出的目标RS ; RS直接响应给客户端(源IP是VIP , 目标IP是CIP)

    (1) DIP , VIP , RIP 都应该是公网地址

    (2) RS的网关不能 , 也不可能指向DIP

    (3) 请求报文要经由Director , 但响应不能经由Director

    (4) 不支持端口映射

    (5) RS的OS必须支持隧道功能

vs/tun体系结构:


TUN模式IP包调度过程:



Lvs-fullnat模式:

lvs-fullnat : 通过同时修改请求报文的源IP地址和目标IP地址进行转发 ; CIP --> DIP , VIP --> RIP

    (1)  VIP是公网地址 , 但RIP和DIO是私网地址 , 且通常不在同一IP网络 ; 因此 , RIP的网关一般不会指向DIP

    (2) RS收到的请求报文源地址是DIP , 因此 ,只需响应给DIP ; 但Director还要将其发往Client

    (3) 请求和相应报文都经由Director

    (4) 支持端口映射;

    注意 : 此类型kernel默认不支持


 总结:

lvs-nat与lvs-fullnat : 请求和响应报文都经由Director

lvs-nat : RIP的网关要指向DIP

lvs-fullnat : RIP和DIP未必在同一IP网络 , 弹药可以通信


lvs-dr 与 lvs-tun : 请求报文要经由Director , 但响应报文由RS直接发往Client

lvs-dr : 通过封装新的MAC首部实现 , 通过MAC网络转发

lvs-tun : 通过在原IP报文外封装新IP头实现转发 , 支持远距离通信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值