lvs注意点

参考:
http://www.cnblogs.com/liwei0526vip/p/6370103.htmlhtml

http://www.javashuo.com/article/p-sxgzfcbd-bc.htmlweb

TCP四层转发协议,其中内核是经过 PREROUTING INPUT FORWARD OUTPUT POSTROUTING 这个几个数据转发控制来完成的。bash

模式1、
NAT(DNAT)网络

注意:
一、目的地址修改,内核的prerouting和postrouting链
二、RS的网关地址必定要指向DIP(LVS的内网IP,由于第一点,IP报文的转发过程都是只更改DIP)
三、由于第二点的缘由,RS的出外网是受限制的,因此不多使用。
四、回包必定要通过DR去修改IP头部的SIP(源ip地址)地址(由于TCP回话必定要保证出去的包和收回的包 IP地址不变)负载均衡

须要内核支持
modprobe ip_vscurl

网上看到的常常说的DNAT的一个缺点:
上面说了NAT模型的实现方式,那么NAT模型有个缺陷,由于进出的每一个数据包都要通过Director Server,当集群系统负载过大的时候Director Server将会成为整个集群系统的瓶颈(但我以为这个不是瓶颈,不用NAT是由于网络结构不适合多数公司)ide

那么DR模型就避免了这样的状况发生,DR模型在只有请求的时候才会通过Director Server, 回应的数据包由Real Server 直接响应用户不须要通过Director Server,其实三种模型中最经常使用的也就是DR模型了。oop

模式2、DR模式post

注意:
一、源末地址都未修改,lvs更改的是源和目标mac地址。CIP VIP -> DIP RIP的mac地址。
二、RS上添加lo:0地址为 VIP的地址,由于从客户端发起的请求到结束,源末地址都未修改,RS要接收包,必须目标地址是本机地址。
三、RS上要修改mac的接收和响应方式(详解参考:http://www.javashuo.com/article/p-sxgzfcbd-bc.html
四、RS和VIP的端口必定要同样都是80(不支持地址转换,也不支持端口映射)
由于上原理,因此要配置DR模式 VIP DIP RIP 都必须在同一个网段(由于须要是经过二层来传输)(多数是公网若是是提供web服务)测试

实验采用私有IP地址的脚本配置如:

LVS机器上配置
cat lvs_dr.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip="21.32.19.200"
rs1="21.32.19.21:80"
rs2="21.32.19.22:80"
ifconfig eth0:0 down
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s wrr 
$ipv -a -t $vip:80 -r ${rs1} -g -w 3
$ipv -a -t $vip:80 -r ${rs2} -g -w 1

RS上的配置
cat lvs_dr_rs.s

#! /bin/bash
vip=21.32.19.200
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

测试:
curl http://21.32.19.200
注意测试的时候,不要在DR(lvs机器上)和RS机器上,由于这几个机器都有这个VIP地址。

企业经常使用
DR + keepalived
keepalived的出现就是为了LVS(keepalived中不少参数是直接影响lvs的,和你用命令 ipvsadm 管理lvs是同样的效果)

其中keepavlied难理解的参数:
一、lvs_sync_daemon_inteface eth0 #负载均衡器之间的监控接口(DR模式中同interface)

二、vrrp_sync_group (多个入口的时候,CTC CNC CMCC的时候这个三个VS组能够作同步切换)

三、delay_loop 探测的时间

相关文章
相关标签/搜索