lvs-nat&lvs-dr&FWM&持久连接

lvs-nat

wKioL1aJBhjjnBMMAACDObLYT14983.png

1.按照上图拓扑配置好网络;

2.开启director的转发功能(# echo 1 > /proc/sys/net/ipv4/ip_forward ),并将test1test2网关指向DIP 192.168.1.1

3.进入test1test2,开启httpd服务;并分别给予创建主页index.html让其可以区分开test1 test2

    让我们直观的感受到调度器在工作;

wKiom1aJBh-R5ShDAAAC3qggPgU553.png

wKiom1aJBiChWqibAAAC_VgZnhk985.png 

4.进入director配置

安装ipvsadm

# yum intall -y ipvsadm

配置:

定义本机192.168.191.11180端口为集群服务,调度算法为轮询rr

# ipvsadm -A -t 192.168.191.111:80 -s rr

定义192.168.1.100realserverlvs类型为lvs-nat

# ipvsadm -a -t 192.168.191.111:80 -r 192.168.1.100:80 -m

定义192.168.1.200realserverlvs类型为lvs-nat

# ipvsadm -a -t 192.168.191.111:80 -r 192.168.1.200:80 -m

5.到此为止lvs-nat集群服务就算定义好了;

测试:

回到物理机,打开浏览器,访问http://192.168.191.111

    wKioL1aJBl2RL8MAAABq-5OauzI298.png

    刷新浏览器

    wKioL1aJBnSjxmkrAABgRqj8wr4594.png

6.测试成功,若要查看详细调度过程,可抓包或查看realserverweb服务日志;

wKiom1aJBnTyqZcgAABUjCnzl10378.png

抓包director可发现,客户机192.168.191.6请求192.168.191.11180服务,

也是director 192.168.191.11180端口响应的客户机192.168.191.6

 

wKiom1aJBn7TvQtVAAAjy3LDhUo481.png

抓包RS,test2可发现,客户机192.168.191.6请求的RS 192.168.1.200http服务,

也是RS,test2http服务响应的客户机192.168.191.6,可以看出在响应数据包经过director的时候,被director修改了地址;

 

--------------

lvs-dr

wKioL1aJBrSClLGaAACGRRCNisk299.png

1.首先在各主机eth0上配置IP地址;

2.RS上设置内核参数,使得RS上的VIP不予响应arp广播请求;

# 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

3.RS上的lo:0接口上配置VIP地址;(固定广播域和广播地址只是自己IP)

# ifconfig lo:0 192.168.191.100 netmask 255.255.255.255 broadcast 192.168.191.100

4.指定RS主机上对VIP192.168.191.100的请求,都通过lo:0接口响应出去;

# route add -host 192.168.191.100 dev lo:0

5.director上配置VIP以及集群服务;

# ifconfig eth0:0 192.168.191.100 netmask 255.255.255.255 broadcast 192.168.191.100

# ipvsadm -A -t 192.168.191.100:80 -s rr

# ipvsadm -a -t 192.168.191.100:80 -r 192.168.191.112 -g

# ipvsadm -a -t 192.168.191.100:80 -r 192.168.191.113 -g

6.配置完成,客户机测试(浏览器可能有缓存,建议再开一台虚拟机使用curl命令测试)

wKiom1aJBrDgIprKAABuHQhwzxU423.png

 

wKioL1aJBtuTuDajAABl5JL6SZI246.png

FWMfirewall mark

大意:FWM就是根据防火墙标记做调度;依赖mangle链做防火墙标记;

方法:在ipvs生效之前的netfilter的某hook function上定义iptables规则,实现给报文打上防火墙标记;

 

还是使用上面的lvs-dr模型;现在将ipvsadm -A -t 改为ipvsadm -A -f

步骤:

1.清空上面已经定义的ipvsadm条目;

# ipvsadm -C

2.在防火墙mangle链上打标(可以将多种服务打标为一个标记,实现集群捆绑调度)

# iptables -t mangle -A PREROUTING -d 192.168.191.100 -p tcp --dport 80 -j MARK --set-mark 10

3.定义ipvsadm规则;

# ipvsadm -A -f 10 -s rr

# ipvsadm -a -f 10 -r 192.168.191.112 -g

# ipvsadm -a -f 10 -r 192.168.191.113 -g

4.测试(另外开启了一台虚拟机,配置好IP,使用curl测试,结果如下);

            wKioL1aJBvCyrW-DAAAPowcpO4E243.png

lvspersistence: lvs持久连接

 

大意:无论使用哪一种调度方法,都能保证在指定时间范围之内,来自于同一个IP的请求将始终被定向至同个RS

方法:ipvsadm -A -t|-u|-f service-address -s SCHEDULER [-p [#]] (增加-p选项,代表开启持久连接;默认时长360秒)持久连接模板:

PPC:每端口持久;持久连接生效范围仅为单个集群服务;如果有多个集群服务,每服务被单独持久调度;

PCC:每客户端持久;持久连接生效范围为所有服务;定义集群服务时,其TCPUDP协议的目标端口要使用0

PFWM:每FWM持久:持久连接生效范围为定义为同一个FWM下的所有服务;

 

PPC例子:

ipvsadm -A -t 192.168.191.100:80  -s rr -p 600  

代表将192.168.191.10080服务做持久连接600秒,来自同一个IP的客户端在600秒内访问80服务,都被调度到同一个后端RS

PCC例子:

ipvsadm -A -t 192.168.191.100:0  -s rr -p 

ipvsadm -a -t 192.168.191.100:0 -r 192.168.191.112 -g

ipvsadm -a -t 192.168.191.100:0 -r 192.168.191.112 -g

代表来自同一个IP的客户端在访问,192.168.191.100的所有服务(ssh telnet www等)的时候,都在360秒内被调度到同一个后端RS

PFWM例子:

代表来自同一个IP的客户端在访问,同一个防火墙标记的服务时候,被调度到同一个后端RS

 


你可能感兴趣的:(负载均衡,LVS,持久连接)