LVS-nat-dr

主程序:ipvsadm

配置文件:

规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config

ipvsadm使用:

增:
     示例:ipvsadm -A -t 172.16.42.1:80 -s rr
               ipvsadm -a -t 172.16.42.1:80 -r 172.16.42.2 -w 1
删:
     示例:ipvsadm -d -t 172.16.42.1:80 -r 172.16.42.2
改:
     示例:ipvsadm -E -t 172.16.42.1:80 -s wrr
查:
     示例:ipvsadm -ln
保存重载:
     示例:ipvsadm -S > /etc/sysconfig/ipvsadm
                ipvsadm -R </etc/sysconfig/ipvsadm

调度方法:

静态方法:仅根据算法本身进行调度;
    RR:轮询;
    WRR: 加权轮询;
    SH:实现session sticy,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定;
    DH:目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡;
动态方法:主要根据每RS当前的负载状态及调度算法进行调度;
    LC:least connections
    Overhead=activeconns*256+inactiveconns
    WLC:Weighted LC
    Overhead=(activeconns*256+inactiveconns)/weight
    SED:Shortest Expection Delay
    Overhead=(activeconns+1)*256/weight
    NQ:Never Queue
    LBLC:Locality-Based LC,动态的DH算法;
    LBLCR:LBLC with Replication,带复制功能的LBLC;

LVS-nat:

多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发;
(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP;
(2)请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;
(3)支持端口映射,可修改请求报文的目标PORT;

(4)vs必须是Linux系统,rs可以是任意系统;

LVS-nat-dr

RS主机操作
    1.配置好IP地址即可
VS主机操作
    1.两张网卡,配置好IP地址
    2.yum安装ipvsadm
    3.添加lvs:ipvsadm -A -t 172.16.42.1:80 -s rr
       添加RS:ipvsadm -a -t 172.16.42.1:80 -r 172.16.42.2 -w 1
                       ipvsadm -a -t 172.16.42.1:80 -r 172.16.42.3 -w 1

LVS-dr:

通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;
Director和各RS都得配置使用VIP;
(1) 确保前端路由器将目标IP为VIP的请求报文发往Director:
(a) 在前端网关做静态绑定;
(b) 在RS上使用arptables;
(c) 在RS上修改内核参数以限制arp通告及应答级别;
arp_announce
arp_ignore
(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;
(3) RS跟Director要在同一个物理网络;
(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;

(5) 不支持端口映射;

LVS-nat-dr

RS1主机操作
1.编辑以下脚本, vim rs.sh,然后启动 bash rs.sh start
    #!/bin/bash
    #
    vip=172.16.42.2
    mask=’255.255.255.255′
    case $1 in
    start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #禁止广播
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig lo:0 $vip netmask $mask broadcast $vip up #vip地址
    route add -host $vip dev lo:0 #路由表
    ;;
    stop)
    ifconfig lo:0 down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ;;
    *)
    echo “Usage $(basename $0) start|stop”
    exit 1
    ;;
    esac
RS2主机操作
1.同上
#!/bin/bash
#
vip=172.16.42.3
……….
…………..
VS主机操作
1.yum安装ipvsadm
2.编辑以下脚本, vim vs.sh,然后启动 bash vs.sh start
    #!/bin/bash
    #
    vip=’172.16.42.1′
    iface=’ens33:0′
    mask=’255.255.255.255′
    port=’80’
    rs1=’172.16.42.2′
    rs2=’172.16.42.3′
    scheduler=’wrr’
    type=’-g’
    case $1 in
    start)
    ifconfig $iface $vip netmask $mask broadcast $vip up
    iptables -F
    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    ;;
    stop)
    ipvsadm -C
    ifconfig $iface down
    ;;
    *)
    echo “Usage $(basename $0) start|stop”
    exit 1
    ;;
    esac

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主机操作
1.添加iptable规则打上标记,再用lvs绑定端口
    iptables -t mangle -A PREROUTING -d 172.16.0.99 -p tcp -m multiport–dport 80,443 -j MARK–set-mark 3
    ipvsadm -A -f 3 -s rr
    ipvsadm -a -f 3 -r 172.16.42.2 -g
    ipvsadm -a -f 3 -r 172.16.42.3 -g

健康检测:

使用ldirectord,安装启动即可,然后在配置文件中修改以下内容。
配置示例:
    checktimeout=3
    checkinterval=1
    fallback=127.0.0.1:80
    autoreload=yes
    logfile=”/var/log/ldirectord.log”
    quiescent=no
    virtual=5
    real=172.16.42.2:80 gate
    real=172.16.42.3:80 gate
    fallback=127.0.0.1:80 gate
    service=http
    scheduler=wrr
    checktype=negotiate
    checkport=80
    request=”index.html” #这个文件得存在
    receive=”CentOS”

原创文章,作者:z long,如若转载,请注明出处:http://www.178linux.com/84213

(0)
z longz long
上一篇 2017-08-08 13:31
下一篇 2017-08-08 13:52

相关推荐

  • 导读谷歌三大核心技术之一 GoogleFileSystem(一)

    GoogleFileSystem设计构想 为满足Google数据处理的需求,Google工程师设计并实现了GoogleFileSystem(GFS)。GFS与传统分布式文件系统类似,也需要满足高性能、可伸缩性、可靠性以及可用性。与传统分布式文件系统思路不不同的是: GFS认为组件失效是常态而非意外,GFS由大量廉价设备组成 文件数量异常巨大 绝大部分文件修改…

    Linux干货 2017-05-07
  • Shell脚本编程基础中() (()) [ ] [[ ]] 的使用

    Shell脚本编程基础中() (()) [ ] [[ ]] 的使用 () 生成子进程,括号内的命令将会在子进程中运行,父进程不能够读取在子进程中创建的变量 例: 新建个脚本文件,写入 则执行结果为 $()相当于 ` `  ,返回括号内命令执行结果 (( )) 用作四则运算和逻辑运算,并且支持多个表达式 例: 当 (( )) 加$,则是将获得表达式值,赋值给左…

    2017-11-26
  • linux用户与用户组

    一.用户 用户是能够获取系统资源的权限的集合. 二.linux用户组的分类: a.管理员root  :具有使用系统所有权限的用户,其UID为0. b.Centos 6普通用户:即一般用户,其使用系统的权限受限,其UID为500-60000之间Centos7UID为1000-60000之间。 c.Centos 6系统用户:保障系统运行的用户,一般不提…

    Linux干货 2016-10-24
  • Linux正则表达式及文件查找

    1、显示当前系统上root、fedora或者user1用户的默认shell. #   grep  -E   “^(root|fedora|user1)”   /etc/passwd | cut -d: -f1,7     2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,…

    2017-10-22
  • linux中如何使用帮助

     在linux学习过程中,会遇到许多困难,尤其是一些命令掌握不牢固,不知道具体用法;或者是想要实现一些功能而不知道使用何种命令。这时求人不如求己,上网求助不如自己学会使用帮助,下面介绍几种linux帮助的用法。 1.what is +命令    执行这条命令可以显示命令的简短描述,让大家了解命令的基本功能。同时可以看到命令相关章…

    2017-07-23
  • 系统基础之shell脚本编程详解4(数组及字符串处理,变量赋值和配置文件)

    系统基础之shell脚本编程详解4(数组及字符串处理,变量赋值和配置文件)     今天来讲shell脚本编程的最后一些内容,数组及字符串处理,变量赋值和配置文件.这些内容也是我们经常在工作中使用到的知识点.下面让我们来详细了解下: 数组:   程序=指令+数据        &…

    Linux干货 2016-08-24