四层和七层传输的区别

四层:

1.主要做目标地址转换

2.从头到尾只建立了一次完整连接

LVS DR部署_lvs

七层:

1.总共建立2次连接

LVS DR部署_lvs_02

LVS DR部署环境配置

Lvs

eth0 10.10.10.11

eth0:0 10.10.10.100

rel server

eth0 10.10.10.12

lo:0 10.10.10.100

rel server

eth0 10.10.10.13

lo:0 10.10.10.100

LVS DR主要是通过路由器到LVS,LVS到后端真实服务做了一个DMAC地址转换,10.10.10.100 IP相当于是VIP 的概念。回数据包后端服务器直接回给用户,不经过lvs。

DR模式特点:

1、集群节点处于同一个广播域中;

2、RS 的 RIP 可以使用私有地址,也可以使用公网地址,以方便配置;不支持支持端口映射;

3、RS可以使用必须为uninx操作系统(OS);且RS需要仰制arp,需要在loopback配置vip;

4、Director 仅负责处理入站请求,响应报文由 Realserver 直接发往客户端;Realserver 不能将网关指向 DIP,而直接使用前端网关响应请求报文;

建立一个LVS的网络,三台机器加入。

LVS DR部署_lvs_03

LVS主机操作

关闭防火墙

关闭selinux

lvs主机配置

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
#1块的配置
[root@localhost network-scripts]# cat ifcfg-eth0
# Generated by parse-kickstart
DEVICE="eth0"
IPV6INIT="yes"
BOOTPROTO="static"
UUID="13aa7f77-aa60-460b-986d-c55566a1dcbb"
ONBOOT="yes"
IPADDR=10.10.10.11
PREFIX=24
#虚拟网卡配置
[root@localhost network-scripts]# cat ifcfg-eth0:0
# Generated by parse-kickstart
DEVICE="eth0:0"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=10.10.10.100
PREFIX=24

LVS 服务器网卡配置

LVS DR部署_lvs_04

重启网卡

# /etc/init.d/network restart

内核参数修改

# cat /etc/sysctl.conf
关闭广播功能
net.ipv4.ip_forward=0  #关闭网卡转发功能
net.ipv4.conf.all.send_redirects=0  ##禁止所有网卡转发重定向报文
net.ipv4.conf.default.send_redirects=0  ##禁止默认网卡转发重定向报文
net.ipv4.conf.eth0.send_redirects=0  ##禁止eth0网卡转发重定向报文
#如果多个网卡,可以继续添加其他网卡

安装LVS软件包

yum -y install ipvsadm

[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

#加载到内核中来
[root@localhost ~]# modprobe ip_vs


查看当前的lvs规则
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

2个后端rel server配置都是一样的

# cp -a ifcfg-lo ifcfg-lo:0

[root@localhost network-scripts]# cat  ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.10.10.100
NETMASK=255.255.255.255   #只是标识,自己跟自己玩
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

内核参数修改

# cat /etc/sysctl.conf
#all default lo网卡的 ARP 通信行为控制
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
# sysctl -p



#真实服务添加路由,当有访问10.10.10.100 就交给lo:0
# route add -host 10.10.10.100 dev lo:0

#路由加入开机自启动
echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
10.10.10.100    0.0.0.0         255.255.255.255 UH    0      0        0 lo

安装apache服务

yum install httpd -y
echo "10.10.10.12" >> /var/www/html/index.html
systemctl restart httpd

LVS配置

-A 添加集群
-a 添加集群的子节点
-s 算法
-g DR模式
-r rel server
# ipvsadm -A -t 虚拟IP:80 -s wrr
# ipvsadm -a -t 虚拟IP:80 -r 10.10.10.12:80 -g -w 1
# ipvsadm -a -t 虚拟IP:80 -r 10.10.10.13:80 -g -w 2

#lvs服务配置的规则如下
ipvsadm -A -t 10.10.10.100:80 -s wrr
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.12:80 -g -w 1
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.13:80 -g -w 2

[root@localhost network-scripts]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.10.100:80 wrr
  -> 10.10.10.12:80               Route   1      0          0
  -> 10.10.10.13:80               Route   2      0          0

LVS扩展命令

保存规则
  ipvsadm -Sn > /etc/sysconfig/ipvsadm
  
  # ipvsadm -C    #清除集群规则
  
  #修改完规则重新导入
  # ipvsadm-restore < /etc/sysconfig/ipvsadm
  
  #开机自启动
  # systemctl enable ipvsadm
  
  #查看lvs的负载和路由情况
[root@192 ~]# ipvsadm -Ln -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:57  TIME_WAIT   192.168.1.5:54297  192.168.1.11:80    10.10.10.24:80
TCP 01:05  TIME_WAIT   192.168.1.5:54284  192.168.1.11:80    10.10.10.24:80
TCP 01:56  TIME_WAIT   192.168.1.5:54296  192.168.1.11:80    10.10.10.25:80

测试访问:

➜  ~ curl http://10.10.10.100:80
10.10.10.12
➜  ~ curl http://10.10.10.100:80
10.10.10.13
➜  ~ curl http://10.10.10.100:80
10.10.10.12
➜  ~ curl http://10.10.10.100:80
10.10.10.13
➜  ~ curl http://10.10.10.100:80
10.10.10.12

查看ipvs的数据包,出站都是空的

说明:DR模式回数据包是后端服务器直接会给用户的,不经过LVS。

[root@localhost ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  10.10.10.100:80                     2       12        0      800        0
  -> 10.10.10.12:80                      1        6        0      400        0
  -> 10.10.10.13:80                      1        6        0      400        0

LVS DR部署_lvs_05