LVS 端口绑定(防火墙标记)

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40195432/article/details/84852765

防火墙标记主要解决的是端口亲缘性问题
1.LVS添加VIP的时候,是否可以不指定端口呢?
原因就是我的真实服务器中开有多个端口,比如说RS开有 80 81 82 83,我希望访问 VIP:80的时候转到 RS:80 , VIP:81的时候转到 RS:81 ,以此类推
由于端口比较多,我不希望为每个端口添加一次配置

2.一个用户只想在同一台realserver上做操作的情况,例如ftp,用户在做写操作的时候第一个包发在第一台realserver上,第二个包也应该要分发给第一台realserver
同一个服务有两个端口的,例如ftp的控制端口21 和传输端口20,或网上购物车的HTTP 80和HTTPS 443,客户对两个端口的访问应该在同一台realserver上;

拓扑(使用XEN虚拟机,virbr0)

++++++++++++
+--------------> + Client + 192.168.122.1/24 (真实机做客户端)
| ++++++++++++
| |
| |
| ++++++++++++ VIP eth0:1 192.168.122.254/24
| + Director +
| ++++++++++++ DIP eth0 192.168.122.100/24
| |
|_______________________|_________________
| |
| |
++++++++++++ ++++++++++++
+ Real Server A + + Real Server B +
++++++++++++ ++++++++++++
eth0 192.168.122.10/24 eth0 192.168.122.20/24


配置LVS VS/DR模式
=================================
Real Server A & Real Server B:
[root@localhost ~]# ifconfig lo:1 192.168.122.254/32
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce、
[root@localhost ~]# yum install vs

ftpd


[root@localhost ~]# vim /etc/vs

ftpd/vsftpd.conf


pasv_enable=YES #开启被动模式
pasv_max_port=60000 #指定被动端口范围 50000-60000
pasv_min_port=50000
pasv_address=192.168.122.254 #指定被动模式使用的IP


Director:
[root@localhost ~]# iptables -t mangle -A PREROUTING -p tcp --dport 21 -j MARK --set-mark 123
[root@localhost ~]# iptables -t mangle -A PREROUTING -p tcp --dport 50000:60000 -j MARK --set-mark 123
[root@localhost ~]# yum install ipvsadm
[root@localhost ~]# ipvsadm -A -f 123 -s rr -p 3000
-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
[root@localhost ~]# ipvsadm -a -f 123 -r 192.168.122.10 -g
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
[root@localhost ~]# ipvsadm -a -f 123 -r 192.168.122.20 -g
[root@localhost ~]# ipvsadm -Ln
[root@localhost ~]# ipvsadm -Ln -c

==============================



场景一:单端口服务
httpd ---- 80/tcp

1. 防火墙打标记
[root@tianyun ~]# iptables -t mangle -A PREROUTING -p tcp -d 30.30.30.100 --dport 80 -j MARK --set-mark 80

2. 定义LVS调度策略,使用防火墙标记
[root@tianyun ~]# ipvsadm -C //-C --clear 清除内核虚拟服务器表中的所有记录。
[root@tianyun ~]# ipvsadm -A -f 80 -s rr
[root@tianyun ~]# ipvsadm -a -f 80 -r 30.30.30.10 -g
[root@tianyun ~]# ipvsadm -a -f 80 -r 30.30.30.20 -g
[root@tianyun ~]# ipvsadm -a -f 80 -r 30.30.30.30 -g

[root@Director ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 80 rr
-> 30.30.30.10:80 Route 1 0 0
-> 30.30.30.20:80 Route 1 0 0
-> 30.30.30.30:80 Route 1 0 0


场景二:多端口服务
FTP Command: 21/tcp
FTP Data: 50000-60000/tcp

1. 防火墙打标记
[root@tianyun ~]# iptables -t mangle -A PREROUTING -p tcp -d 30.30.30.100 --dport 21 -j MARK --set-mark 10
[root@tianyun ~]# iptables -t mangle -A PREROUTING -p tcp -d 30.30.30.100 --dport 50000:60000 -j MARK --set-mark 10

2. 定义LVS调度策略,使用防火墙标记
[root@tianyun ~]# ipvsadm -C
[root@tianyun ~]# ipvsadm -A -f 10 -p 300 -s rr
[root@tianyun ~]# ipvsadm -a -f 10 -r 30.30.30.10 -g
[root@tianyun ~]# ipvsadm -a -f 10 -r 30.30.30.20 -g
[root@tianyun ~]# ipvsadm -a -f 10 -r 30.30.30.30 -g

[root@Director ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 10 rr
-> 30.30.30.10:80 Route 1 0 0
-> 30.30.30.20:80 Route 1 0 0
-> 30.30.30.30:80 Route 1 0 0
 

猜你喜欢

转载自blog.csdn.net/qq_40195432/article/details/84852765
lvs