调度器中vip的作用:
DR模式的特点:
ARP协议:
网络层协议,将IP地址解析为物理MAC地址
ARP协议核心:
1、由于调度器和后端真实服务器都有相同地VIP地址,导致响应冲突,ARP通信紊乱
解决方法:
对真实服务器进行处理,真实服务器不响应针对VIP的ARP请求
vip地址使用LO的虚拟地址:arp_ignore=1
此时后端真实服务器只响应目的ip为本地ip,也就是rip,后端服务器真正ip地址,ens33网卡提供的地址的arp请求
2、返回报文使用的源地址还是VIP地址,调度器也是VIP,如何将响应返回到客户端不经过调度器
解决方法:
对后端服务器做一个内核参数的优化
arp_announce=2
系统不使用ip数据包的源地址来设置ARP的请求,而是使用真实的物理网卡的地址
- 实验配置:
- 20.0.0.10:调度器
- 20.0.0.20:nfs共享存储
- 20.0.0.61:web集群1
- 20.0.0.62:web集群2
- 20.0.0.100:vip地址
- [root@pup1 ~]# modprobe ip_vs
- [root@pup1 ~]# yum -y install ipvsadm
- [root@pup1 ~]# ifconfig ens33:0 20.0.0.100/24
- [root@pup1 ~]# vim /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.ens33.send_redirects = 0
- -------------------------------------------------------------------------------------------
- net.ipv4.ip_forward = 0
- #关闭服务器作为网关的转发功能
- net.ipv4.conf.all.send_redirects = 0
- #控制是否发送ICMP的重定向消息,禁止重定向
- net.ipv4.conf.default.send_redirects = 0
- #禁止默认网络接口,就是调度器的网卡,发送icmp的重定向消息
- net.ipv4.conf.ens33.send_redirects = 0
- #指明网卡设备,ens33不发送重定向消息
- -------------------------------------------------------------------------------------------
- [root@pup1 ~]# sysctl -p
- [root@pup1 ~]# ipvsadm -A -t 20.0.0.100:80 -s rr
- [root@pup1 ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.61:80 -g
- [root@pup1 ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.62:80 -g
- [root@pup1 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
- [root@pup1 ~]# systemctl restart ipvsadm

配置完成
注:若是有bug显示为下图


- [root@pup2 ~]# cd /opt
- [root@pup2 opt]# mkdir pup benet
- [root@pup2 opt]# vim /etc/exports
- --添加--
- /opt/pup 20.0.0.0/24(rw,sync)
- /opt/benet 20.0.0.0/24(rw,sync)
-
- [root@pup2 opt]# chmod 777 /opt/pup/ /opt/benet/
- [root@pup2 opt]# systemctl restart rpcbind
- [root@pup2 opt]# systemctl restart nfs
- [root@pup2 opt]# exportfs -rv
- exporting 20.0.0.0/24:/opt/benet
- exporting 20.0.0.0/24:/opt/pup
- [root@pup2 opt]# showmount -e
- Export list for pup2:
- /opt/benet 20.0.0.0/24
- /opt/pup 20.0.0.0/24
- [root@pup2 opt]# echo "this is pup" > pup/index.html
- [root@pup2 opt]# echo "this is benet" > benet/index.html
- 61:
- [root@nginx1 ~]# systemctl restart nginx
- [root@nginx1 ~]# systemctl restart rpcbind
- [root@nginx1 ~]# systemctl restart nfs
- [root@nginx1 ~]# showmount -e 20.0.0.20
- Export list for 20.0.0.20:
- /opt/benet 20.0.0.0/24
- /opt/pup 20.0.0.0/24
- [root@nginx1 ~]# mount 20.0.0.20:/opt/pup /usr/local/nginx/html/
- 62:
- [root@nginx2 ~]# systemctl restart nginx
- [root@nginx2 ~]# systemctl restart rpcbind
- [root@nginx2 ~]# systemctl restart nfs
- [root@nginx2 ~]# showmount -e 20.0.0.20
- Export list for 20.0.0.20:
- /opt/benet 20.0.0.0/24
- /opt/pup 20.0.0.0/24
- [root@nginx2 ~]# mount 20.0.0.20:/opt/benet /usr/local/nginx/html/


- 61、62相同操作:
- [root@nginx1 ~]# cd /etc/sysconfig/network-scripts/
- [root@nginx1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
- [root@nginx1 network-scripts]# vim ifcfg-lo:0
- --删除原内容并加入--
- DEVICE=lo:0
- ONBOOT=yes
- IPADDR=20.0.0.100
- NETMASK=255.255.255.255
-
- [root@nginx1 network-scripts]# ifup ifcfg-lo:0

- 61、62相同操作:
- [root@nginx1 network-scripts]# route add -host 20.0.0.100 dev lo:0
- #把vip的地址绑定到lo:0,作为LVS的vip,起到标识的作用,告诉调度器进行转发请求的ip地址寻址
- [root@nginx1 network-scripts]# vim /etc/sysctl.conf
- --加入--
- net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
- net.ipv4.conf.all.arp_ignore = 1
- net.ipv4.conf.all.arp_announce = 2
- -------------------------------------------------------------------------------------------
- 内核优化:
- net.ipv4.conf.lo.arp_ignore = 1
- #设置lo接口忽略来自任何接口的arp请求
- net.ipv4.conf.lo.arp_announce = 2
- #设置lo接口仅会响应本地的ip地址,其他的接口arp请求全部忽略
- net.ipv4.conf.all.arp_ignore = 1
- #所有接口忽略来自任何接口的arp请求
- net.ipv4.conf.all.arp_announce = 2
- #所有接口仅会响应本地的ip地址的arp请求,其他接口的arp请求全部忽略
- -------------------------------------------------------------------------------------------
- [root@nginx1 network-scripts]# sysctl -p

[root@pup1 ~]# ipvsadm -ln

- [root@pup1 ~]# ipvsadm -E -t 20.0.0.100:80 -s wrr
- [root@pup1 ~]# ipvsadm -ln

- [root@pup1 ~]# ipvsadm -e -t 20.0.0.100:80 -r 20.0.0.61:80 -w 3
- [root@pup1 ~]# ipvsadm -e -t 20.0.0.100:80 -r 20.0.0.62:80 -w 4

修改后先保存
- [root@pup1 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
- [root@pup1 ~]# systemctl restart ipvsadm
[root@pup1 ~]# ipvsadm -E -t 20.0.0.100:80 -s dh

NAT:
优点:配置简单
缺点:性能瓶颈
真实服务器:ANY
支持的网络模式:私网
后端服务器数量:low(10-20)
DR:(最常用)
优点:性能最好
缺点:调度服务器和后端真实服务器不能跨网段
真实服务器:NO-ARP,(ARP请求只能到真实服务器)
支持的网络模式:后端服务器既可以是内网,也可以是公网
真实服务器数量:100