zoukankan      html  css  js  c++  java
  • 第十周LINUX 学习笔记

                                        LVS集群nat丶DR

    HA:高可用
        平均无故障时间/(平均无故障时间+平均修复时间)
        
        负载均衡

    次序
    lb(负载)——>ha()
    LB
      tcp:lvs,haproxy
      应用层:nginx haproxy ats
      缓存:varnish squied

    HA:heartbeat,corosync keeplived iscsi gfs2 drdb
    MogileFS
    NoSQL:MongoDB


    集群类型:
        LB:Load Banlancing(负载)
            扩展容量,实现伸缩性
        HA:High Availability(高可用)
            服务可用性
        HP:High Performace(高性能)
            向量机
            并发处理集群

    开源方案
        LB:lvs,haproxy,nginx,ats
        HA:
           heartbeat
           corosync+pacemaker
           cman+rgmanager
           cman+pacemaker
           keepalived
           ultramonkey
        HP:hadoop


    LB:解决方案
        硬件:
            F5 BIG-IP
            思杰 Citrix Netscaler
            A10 A10
            Array
            Redware
        软件:lvs
         linux Virtual Server
             章文嵩:正明

        ipvs相当于netfilter,将用户转发
           框架,需要依赖以规则完成转发
           ipvs集群服务
             定义一个或多个后端的服务器

        ipvsadm

    LVS:四层交换、四层路由

    VIP:
    keepalived
    CIP
    Director:负载均衡器
    real server
    DIP:跟real server交互
    RIP

    CIP<-->VIP--DIP<-->RIP

    LVS类型:
        NAT:-->(DNAT)
        DR
        TUN
        FULLNAT

    LVS NAT的特性
        1.RS的应该使用私有地址
        2.RS的网关必须指向DIP
        3.RIP和DIP必须在同一网段内
        4.请求和响应的报文都得经过Director,在高负载场景中,Director很可能成为性能凭借
        5.支持端口映射
        6.RS可以使用任意支持集群服务的OS
    LVS DR类型
        1.让前段路由将请求发往VIP时,只能是Dirctor上的VIP
            解决方案
            1.静态地址绑定
                未必有路由器的配置权限
                Director调用时静态地址绑定将难以使用
            2.arptables
            3.修改linux内核参数,将RS上的VIP配置在lo接口的别名上,限制linux仅对对应接口的ARP请求做相应

    LVS DR类型的特性
        1.RS可以使用私有地址,还可以使用公网地址,此时可以直接通过互联网连入RS,以实现配置、监控等
        2.RS的网关一定不能指向DIP
        3.RS跟Dirctory要在同一物理网络内(不能有路由器分隔)
        4.请求报文经过Directory,但响应报文一定不经过Director
        5.不支持端口映射
        6.RS可以使用大多数的操作系统

    LVS TUN类型:IP隧道
         1.RIP,DIP,VIP都得是公网地址
         2.RS的网关不会指向也不可能指向DIP
         3.请求报文经过Directory,但响应报文一定不经过Director
         4.不支持端口映射
         5.RS的OS必须得支持隧道功能

    LVS的调度方法:10种
     
    下午:回顾
      LVS-NAT,DNAT
      LVS-DR(Direct Routing)
      LVS-TUN:(IPIP)
      LNS-FULLNAT


    LVS的调度方法:10种
         静态方法:仅根据算法本身进行调度
             rr:Round Robin 轮询
             wrr:Weighted RR 权重轮询
             sh:source hashing    源地址hash
             dh:destination hashing 目标地址hash
          动态方法:根据算法及RS当前的复制状态
              lc:Least Connection 最少连接
                  计算当前的负载Overhead=Active*256+Inactive来实现
              wlc:Weighted LC
                  Overhead=(Active*256+Inactive)/weight
              sed:Shortest Expect Delay  最短期望延迟
                Overhead=(Active+1)*256/weight          
            aq:Nerver Queus: 永不排队

            lblc:Locality-based least connection 基于本地的最少连接
            相当于dh+lc

            Lblcr:基于复制的基于本地的最少连接 Replicated and Locality-based least connection


    Session持久机制
        1.Session绑定:始终将统一请求者的连接定向至统一RS(第一次请求时仍有调度选择):没有容错哦能力,有损均衡效果
        2.session复制:在RS之间同步session,因此,每个RS持集群中所有的session;对于大服务器集群环境不适用
        3.session服务器:利用单独部署的服务器来统一管理session


    LNS-FULLNAT:


    LVS的集群服务:
        四层交换,四层路由
        根据请求目标套接字(包括端口的协议类型tcp,udp)来实现转发


    ipvsadm

    集群服务相关

    -A:添加一个集群服务
        -t:tcp
        -u:udp
        -f: firewall make 通常应用于将两个或以上的服务绑定为一个服务进行处理时使用
        service-address
          -t IP:port
          -u ip:port
          -f firewall_mark
        -s 调度算法,默认为wlc
        -p: timeout persistent connection 持久连接
    -E:修改定义过的集群服务

    -D -t|u|f service-address:删除指定的集群服务

    RS相关

        -a:向指定的CS中添加RS
            -t|-u|-f service-address:指明将RS添加至那个Cluster Service 中

            -r:指定RS,可以包含{IP[:port]},只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口

            lvs类型:
                -g:Gateway,DR
                -i:ipip,TUN
                -m:masquerade(地址伪装),NAT
                默认为DR

               指定RS权重
                   -w
               上限下限:
                -x:下限
                -y:上限

        -e:修改指定的RS属性

        -d  -t|u|f  service-address  -r  server-address:在指定的集群服务中删除一个指定的RS

    情况所有的集群服务:
        -C

    保存规则(使用输出重定向):
        ipvsadm-save
        ipvaadm -S

    载入指定的规则:(使用输入重定向)
         ipvsadmin-restore
         ipvasdm -R

    查看ipvs规则等
         -L [options]
             -n 使用数字格式显示IP地址,不反解
             -c:查看连接数相关信息
             --stats:显示统计数据
             --rate:数据传输速率
             --timeout:显示tcp会话时长
             --daemon:守护进程的信息
             --sort:对虚拟服务进行排序,默认为升序
             --exact:精确显示,不做单位换算

    -Z:计数器清零


    LVS-DR模型
        Director两个地址:VIP,DIP
        RS有两个地址:VIP,RIP


        禁止rs响应对BIP的ARP广播请求
            1.在前端路由上实现静态MAC地址VIP的绑定
                前提:得有路由器的配置权限
                缺点:Directory故障转移时,无法更新此绑定
            2.arptables
                前提:在各RS在安装arptables程序i,并编写arptables规则
                缺点:依赖于独特功能的应用程序
            3.修改Linux内核参数
                前提:RS必须是Linux
                缺点:适用性差
                两个参数:
                    arp_announce:定义通告模式
                    arp_ignore:定义收到arp请求的响应模式
                配置专用路由,以使得响应报文首先通过VIP所篇日志的lo上的别名接口

                Linux的工作特性:IP地址是属于主机,而非特定网卡
    LVS-DR配置架构根据其VIP与RIP是否在同一个网络内有两种情况

    在Directory 和RS上配置VIP,要使用如下格式
    ifconfig ALIAS VIP netmask 255.255.255.255 broadcast VIP

    route add -host VIP dev



    LVS-DR的配置
     Director
         iptables -t filter -F
         ifconfig eth0:0 VIP netmask 255.255.255.255 broadcast VIP up
         route add -host VIP dev eth0:0

    RS:
        echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
        echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
        echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
        echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

        ifconfig lo:0 VIP netmask 255.255.255.255 broadcast VIP up
         route add -host VIP dev eth0:0

    Director:
    ipvsadm -A -t ip:port -s scheduler
    ipvsadm -a -t ip:port -r rs1 -g

                              LVS持久连接、DR、防火墙标记  


    VIP 与DIP 不在同一网段
    DIP 和RIP在同一网段

    LVS持久连接

    源地址HASH

    ipvs的连接模板 可以通过ipvsadm -L -c


    持久连接
    持久客户端连接 PCC:在固定时间内将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS
    0表示所有端口
    持久端口连接 PPC:将来着余同一个客户端发往某VIP的某端口的所有请求统统定向至同一个RS
    -p 指定时间

    持久防火墙标记连接PFMC:port affinity
        基于防火墙标记,将两个或以上的端口绑定为同一个服务

        iptables -t mangle -A PREROUTING -d 172.16.100.8 -p tcp --dport 80 -j MARK --set-mark 10
        iptables -t mangle -A PREROUTING -d 172.16.100.8 -p tcp --dport 443 -j MARK --set-mark 10
        ipvsadm -A -f 10 -s rr
        ipvsadm -a -f 10 -r 172.16.100.11 -g
        ipvsadm -a -f 10 -r 172.16.100.11 -g

        ipvsadm -E -f 10 -s rr -p 1200



    ipvs集群两个问题
        1.后端RS的监控状态检测?
            1.脚本
            2.keepalived,ldorectord

        2.Director自身的可用性?
            1.ldirectord(heartabeat,corosync)
            2.keeplived

       手动脚本检测


       1.某RS故障时,要检测至少三次才能让且下线,而重新上线时,只需要检测一次
       2.如何让脚本有更好的适应性

                        

  • 相关阅读:
    柱状图
    开源版本Visifire的应用
    Jmeter录制脚本-BadBoy
    Jemter环境搭建
    DOS命令
    OSI七层模型
    Google浏览器PostMan插件版安装步骤
    理解JavaScript的caller,callee,call,apply
    .net http请求
    使用命令对象代替switch语句的写法示例
  • 原文地址:https://www.cnblogs.com/gohrx/p/10817846.html
Copyright © 2011-2022 走看看