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.如何让脚本有更好的适应性

                    

第十周LINUX 学习笔记的更多相关文章

  1. 第十二周LINUX学习笔记

    zabbix zabbix-server: 监听的端口10051 zabbix-agent: 10050 Zabbix: Item, Key(键) ethercard.traffic[eth0] ac ...

  2. 第八周LINUX学习笔记

    vsftpd丶NFS丶SAMBA nfs基于rpcsamba基于cifs(smb)  DRBD: ftp:File Transfer protocol 文件传输协议 两个连接:       tcp:命 ...

  3. 第七周LINUX学习笔记

    HTTP的基本操作 3月17资源子网和通信子网套接字:两类    socket:IP port             IP:port            Ip.port unix sock:基于文 ...

  4. 第六周LINUX学习笔记

    DNS服务 DNS:Domain Name Service //协议     实现:BIND(Berkeley Internet Name Domain)     监听端口:        UDP:5 ...

  5. 第三周LINUX学习笔记

    周期性任务丶find 文件查找:find命令 locate :在数据库中查找,非实时查找,精确度不高,查找速度快,模糊查找  /tmp/passwad/a.textfind:实时查找:速度慢  ,精确 ...

  6. 第五周linux学习笔记

    第五章 系统调用 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层.该层主要作用有三个. 它为用户空间提供了一种硬件的抽象接口. 系统调用保 证了系统的毡定和安全. 在第 3 ...

  7. 第十一周LINUX 学习笔记

    keepalived keepalived:    基于vrrp(虚拟冗余路由协议)的实现     virtual server: 对于IPVS    vrrp_script: 调用外部脚本 ngin ...

  8. 第九周LINUX 学习笔记

    基于GTID的mysql主从简单复制 一.简单主从模式配置步骤1.配置主从节点的服务配置文件1.1.配置master节点:[mysqld]binlog-format=ROWlog-bin=master ...

  9. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

随机推荐

  1. QThread 采用moveToThread方式实现多线程。 线程本身、connect关联的槽函数、connect关联的lambda对象分别运行在哪个线程中。

    Qt如何实现多线程:https://www.cnblogs.com/azbane/p/11372531.html September 5,2019 先抛出几个问题,用问题来引导思维导向: 1.继承的Q ...

  2. MongoDB Shell 命令

    更新列名 db.Stores.update({}, {$rename : {"StoreId" : "MetaId"}}, false, true) 查询长度 ...

  3. 终于有人把elasticsearch原理讲通了

    转自 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节. 但是由于小史很 ...

  4. Python【每日一问】26

    问: [基础题]:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数 [提高题]:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第 10 次落地时,共经过多 ...

  5. Android实时打印内核log

    由于访问的是/proc/kmsg,因此需要先获取root权限: adb root adb shell "while true; do cat; sleep 1; done < /pro ...

  6. URL中出现了%E2%80%8E(Zero-Width Space)

    下面两个url地址,看起来是一样的,但是粘贴到记事本里会发现一个多出了很长的空格 url: '/secure​/Dishes/GetList', url: '/secure/Dishes/GetLis ...

  7. ZYNQ笔记(4):PL触发中断

    一.ZYNQ中断框图 PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0.从下面的表格中可以看到中断向量的具体值.PL到PS部分一共有20个中断可以使用.其中4个是快速中断.剩余 ...

  8. ASp.net Core EF ActionFilterAttribute AOP

    在项目中经常遇到一些数据的修改,很多时候业务方需要一个修改日志记录,这里我们计划用mssql数据库来存放日志记录,用EF来操作,记录日志可以用mvc的ActionFilterAttribute 来完成 ...

  9. EF Core 批处理语句

    在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句.那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请 ...

  10. Django中使用CORS实现跨域请求(转)

    原文:https://blog.csdn.net/zizle_lin/article/details/81381322 跨域请求: ​    请求url包含协议.网址.端口,任何一种不同都是跨域请求. ...