lvs-dr,firewallmark篇(二)

系统:centos7.1

实现目标1:lvs-dr

lvs-dr的工作流程也是遵循这样的流程:用户发出连接请求给director,然后由director转发给rs处理

lvs-dr模式的特点是:

1.CIP和VIP地址均不变,通过转换MAC地址来实现通信的

2.连接请求只能通过Director进来,必须由RS回应

3.Director和RS均连接在同一物理网络中

面临的问题:

1.若vs和rs均设置为vip地址,ip地址会冲突,

解决办法:RS使用本地的lo设置一个vip别名,通过设置内核参数arp_ignore和arp_annouce来实现当外部询问vip地址时,只物理网络中的接口予以通告,没在物理网络中的VIP则不予以通告,而响应数据时则选择最佳的target地址予以响应,即vip所在的lo:0予以响应。(apr规则的设定除了通过调整内核参数,还可以像iptables工具一样通过arp相关工具来设定)

实现:

三台主机:

vip:172.16.52.57

HOST1:

eno16777736            172.16.52.58

eno16777736:0  172.16.52.57 

HOST2:

eno16777736          172.16.52.60

lo:0          172.16.52.57

HOST3:

eno16777736      172.16.52.61

lo:0       172.16.52.57

开始设置:

host1:

1.编写一个脚本

]# vim  ipvsadm.sh

#!/bin/bash
vip='172.16.52.67'
ifac='eno16777736'
echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig  ${ifac}:0  $vip netmask 255.255.255.255 broadcast $vip
yum install ipvsadm
ipvsadm  -A -t 172.16.52.57:80 -s rr
ipvsadm  -a -t 172.16.52.57:80 -r 172.16.52.61 -g
ipvsadm  -a -t 172.16.52.57:80 -r 172.16.52.60 -g
echo "hello"


 2.然后复制一份命令为ipvs.sh,加以修改,复制到host2和host3上

]#cp ipvsadm.sh ipvs.sh

[root@localhost ~]#vim  ipvs.sh

#!/bin/bash
vip='172.16.52.57'
ifcfgalias='lo:0'
ifac=eno16777736
case $1 in
start)
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/$ifac/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/$ifac/arp_announce

##在lo配置VIP地址,只广播信息给自身

ifconfig lo:0  $vip  netmask 255.255.255.255 broadcast $vip

#添加lo:0 VIP地址路由,响应报文要经过lo:0网卡发送到物理网卡以原地址为$vip发送出去

route add -host $vip  dev  $ifcfgalias
yum install httpd
systemctl start httpd
;;


stop)

echo 0 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 0 >/proc/sys/net/ipv4/conf/$ifac/arp_ignore
echo 0 >/proc/sys/net/ipv4/conf/$ifac/arp_announce
ifconfig lo:0 down
route del 172.16.52.57
yum remove httpd
;;


*)
echo "please input correct parameters." 
esac

]# scp -r ipvs.sh root@172.16.52.{60,61}:/root

host2:执行脚本

sh ipvs.sh

vim  /var/www/html/test1.html

<h1>this  is rs1.com page </h1>


host3:执行脚本

sh ipvs.sh  stop

sh ipvs.sh start

vim  /var/www/html/test1.html

<h1>this  is rs1.com page </h1>


测试:

选一台同一网段里的主机进行测试

watch -n 1 "curl http://172.16.52.57/test1.html"

会看到返回结果来回切换


实现目标2:firewallmark(fwm)


fwm是为指定的某一群体打标签,这一群体可以是某几个ip地址或者是几个端口,实现的作用是,可以将需要访问的几个目标地址或者端口定向到同一个标签,比如给80,8080,443端口打上同一个标签,那么就可以让用户访问这三个端口中的任意一个端口定向到同一个主机。

在上面的基础上开始实现fwm:

1.host1上面清理掉之前的规则:

ipvsadm  -C

2.使用mangle在PREROUTING上面打上标签

iptables -A PREROUTNG -t mangle -d 172.16.52.57 -p tcp --dport 80 -j MARK --set-mark 9

ipvsadm -A -f 3 -s rr

ipvsadm -a -f 3  -r 172.16.52.60 -g

ipvsadm -a -f 3 -r 172.16.52.61 -g


实现目标3:持久连接

eg1:

[root@localhost scripts]# ipvsadm -A -t 172.16.52.57:80 -s rr -p
[root@localhost scripts]# ipvsadm -a -t 172.16.52.57:80  -r 172.16.52.60 -g
[root@localhost scripts]# ipvsadm -a -t 172.16.52.57:80  -r 172.16.52.61 -g

说明:基于端口的持久连接,-p是指定持久时长,默认是360s,但是man手册里面说的300s,常用方式是:   -p  timeout

eg2:

[root@localhost scripts]# ipvsadm -A -t 172.16.52.57:0 -s rr -p
[root@localhost scripts]# ipvsadm -a -t 172.16.52.57:0 -r 172.16.52.60 -g  
[root@localhost scripts]# ipvsadm -a -t 172.16.52.57:0 -r 172.16.52.61 -g

说明:基于客户端的持久连接,使用端口号0,后面必须要跟-p ,不加可以试试看,会报错的。。。

eg3:

[root@localhost scripts]# iptables -A PREROUTING -t mangle -d 172.16.52.57 -p tcp --dport 80 -j MARK --set-mark 20
[root@localhost scripts]# iptables -A PREROUTING -t mangle -d 172.16.52.57 -p tcp --dport 443 -j MARK --set-mark 20
[root@localhost scripts]# ipvsadm -A -f 20  -s rr -p
[root@localhost scripts]# ipvsadm -a -f 20 -r 172.16.52.60 -g  -p
[root@localhost scripts]# ipvsadm -a -f 20 -r 172.16.52.61 -g -p

说明:通过防火墙标记的方式来进行的持久连接,可以 cat /proc/net/ip_vs_conn查看连接状态


总结:持久连接分为上面三种方式,但跟调度算法无关,调度算法无法保持持久连接










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值