四层和七层传输的区别
四层:
1.主要做目标地址转换
2.从头到尾只建立了一次完整连接
七层:
1.总共建立2次连接
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主机操作
关闭防火墙
关闭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 服务器网卡配置
重启网卡
# /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