域名注册 网站建设 好做吗,二次元wordpress主题生成,设计工作室营业执照,做微课常用的网站一、LVS-DR工作原理
1、LVS-DR数据包流向分析
客户端发送请求到Director Server (负载均衡器)#xff0c;请求的数据报文#xff08;源IP是CIP#xff0c;目标IP是VIP#xff09;到达内核空间。Director Server 和Real Server 在同一个网络中#xff0c;数据通过二层数据…一、LVS-DR工作原理
1、LVS-DR数据包流向分析
客户端发送请求到Director Server (负载均衡器)请求的数据报文源IP是CIP目标IP是VIP到达内核空间。Director Server 和Real Server 在同一个网络中数据通过二层数据链路层来传输。 内核空间判断数据包的目标IP是本机VIP此时IPVSIP虛拟服务器比对数据包请求的服务是否是集群服务是集群服务就重新封装数据包修改源MAC地址为Director server 的MAC地址修改目标MAC地址为Real Server 的MAC 地址源IP 地址与目标IP地址没有改变然后将数据包发送给Real Server。 到达Real server 的请求报文的MAC地址是自身的MAC地址就接收此报文。数据包重新封装报文源IP地址为VIP目标IP为CIP将响应报文通过lo接口传送给物理网卡然后向外发出。 Real Server 直接将响应报文传送到客户端。客户端收到回复报文认为得到正常的服务而不会知道是哪一台服务器处理的。
2、DR模式的特点
Director Server调度器 和 Real Server节点服务器 必须在同一个物理网络中。Real Server可以使用私有地址也可以使用公网地址。如果使用公网地址可以通过互联网对RIP进行直接访问。Director Server作为群集的访问入口但不作为网关使用。所有的请求报文经由Director Server, 但回复响应报文不能经过Director Server。Real Server 的网关不允许指向Director Server IP 即Real Server发送的数据包不允许经过Director Server。RS的网关地址只能指定真实的路由器网关Real Server 上的 lo 接口配置VIP的IP地址。
二、LVS-DR中的ARP问题
1、VIP地址相同导致响应冲突
原因
在LVS-DR负载均衡集群中负载均衡器与节点服务器都要配置相同的VIP地址在局域网中具有相同的IP地 址势必会造成各服务器ARP通信的紊乱。
当ARP广播发送到LVS-DR集群时因为负载均衡器和节点服务器都是连接到相同的网络上它们都会收到ARP广播。
只有前端的负载均衡器进行响应其他节点服务器不应该响应ARP广播。
解决方案
对节点服务器进行处理使其不响应针对VIP的ARP请求。
使用虚接口lo:0承载VIP地址。
设置内核参数 arp_ ignore1系统只响应目的IP为本地IP物理网卡的地址而不是lo网卡的虚接口地址的ARP请求。
2、解决ARP问题的设置方法
修改/etc/sysctl.conf 文件调整内核的ARP响应参数。 vim /etc/sysctl.conf //添加以下四行参数net.ipv4.conf.lo.arp_ignore 1 net.ipv4.conf.lo.arp_announce 2net.ipv4.conf.all.arp_ignore 1net.ipv4.conf.all.arp_announce 2sysctl -p //刷新配置读取修改后的配置#arp_ignore1 使本机系统只响应目的IP为本地物理网卡IP的ARP请求。#arp_announce2使本机系统不使用即将返回的IP数据包的源地址来作为ARP请求报文的源地址而采用发送接口物理网卡的IP作为ARP请求报文源地址。
三、LVS-DR模式(直接路由)
直接路由Direct Routing简称 DR 模式采用半开放式的网络结构与 TUN模式的结构类似但各节点并不是分散在各地而是与调度器位于同一个物理网络。
负载调度器与各节点服务器通过本地网络连接不需要建立专用的 IP 隧道
直接路由LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部进行转发源MAC是DIP所在的接口的MAC目标MAC是某挑选出的RS的RIP所在接口的MAC地址源IP/PORT以及目标IP/PORT均保持不变 DR模式两种解决方法 绑定ARP绑定Ivs 代理服务器碰不到客户端一般不用 关闭ARP 广播 真实服务器一般采用它 LVS调度服务器也可以使用公网ip,也可以买公网ip DR模式的特点 Director调度器和各RS真实服务器都配置有VIP虚拟ip 确保前端路由器将目标IP为VIP的请求报文发往Director 在前端网关做静态绑定VIP和Director的MAC地址 在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
在RS上修改内核参数以限制arp通告及应答级别
/proc/sys/net/ipv4/conf/all/arp_ignore 忽略arp广播
/proc/sys/net/ipv4/conf/all/arp_announce 关闭无敌arp RS(真实服务器)的RIP真实ip可以使用私网地址也可以是公网地址RIP与DIP在同一IP网络RIP的网关不能指向DIP以确保响应报文不会经由Director RS和Director要在同一个物理网络 请求报文要经由Director但响应报文不经由Director而由RS直接发往Client 不支持端口映射端口不能修改 无需开启 ip_forward(路由转发) RS可使用大多数OS系统 操作系统(Operating System缩写为OS)是一种控制和管理计算机硬件与软件资源的计算机程序 回环网卡上配置虚拟ip,四台机器共用一个虚拟ip在Linux中回环网卡是指用于本地回环测试的虚拟网络接口通常被标识为lo 实验环境 调度服务器192.168.10.100后端服务器192.168.10.101后端服务器192.168.10.102客户端192.168.10.103vip虚拟回环192.168.10.188 ###先将4台机子的防火墙及核心防护全部关闭
[rootlocalhost ~]#systemctl stop firewalld
[rootlocalhost ~]#setenforce 0 7-0配置负载调度器 [rootlocalhost ~]#ifconfig ens33:0 192.168.10.188/32[rootlocalhost ~]#ip a[rootlocalhost ~]#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[rootlocalhost ~]#sysctl -p
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[rootlocalhost ~]#modprobe ip_vs
[rootlocalhost ~]#cat /proc/net/ip_vs[rootlocalhost ~]#yum install ipvsadm.x86_64 -y[rootlocalhost ~]#ipvsadm-save /etc/sysconfig/ipvsadm[rootlocalhost ~]#systemctl start ipvsadm.service [rootlocalhost ~]#systemctl status ipvsadm.service[rootlocalhost ~]#ipvsadm -A -t 192.168.10.188:80 -s rr[rootlocalhost ~]#ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.101:80 -g[rootlocalhost ~]#ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.102:80 -g[rootlocalhost ~]#ipvsadm -ln 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 #调整/proc响应参数 对于 DR 群集模式来说由于 LVS 负载调度器和各节点需要共用 VIP 地址应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器那么它不会发送重定向所以可以关闭该功能 7-1 真实服务器配置 [rootlocalhost ~]#rpm -q httpd[rootlocalhost ~]#yum install httpd -y[rootlocalhost ~]#systemctl start httpd[rootlocalhost ~]#ifconfig lo:0 192.168.10.188/32[rootlocalhost ~]#ip a[rootlocalhost ~]#cd /var/www/html/[rootlocalhost html]#echo welcome to 7-1 index.html[rootlocalhost html]#cat index.html
welcome to 7-1[rootlocalhost html]#sysctl -a |grep arp[rootlocalhost html]#vim /etc/sysctl.conf
###在最后行末添加
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 [rootlocalhost html]#sysctl -p ###刷新配置
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 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 7-2 真实服务器配置 [rootlocalhost ~]#rpm -q httpd[rootlocalhost ~]#yum install httpd -y[rootlocalhost ~]#systemctl start httpd[rootlocalhost ~]#ifconfig lo:0 192.168.10.188/32[rootlocalhost ~]#ip a[rootlocalhost ~]#cd /var/www/html/[rootlocalhost html]#echo welcome to 7-2 index.html[rootlocalhost html]#cat index.html
welcome to 7-1[rootlocalhost html]#sysctl -a |grep arp[rootlocalhost html]#vim /etc/sysctl.conf
###在最后行末添加
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 [rootlocalhost html]#sysctl -p ###刷新配置
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 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 7-3客户机检测 四、arp_announce arp_ignore vim /etc/sysctl.conf #添加系统只响应目的IP为本地IP的ARP请求 #系统不使用原地址来设置ARP请求的源地址而是物理mac地址上的IP 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 五、ARP协议
arp作用①把ip地址转化为mac地址 ② 检测地址是否冲突
arp中没有源ip和目的ip,是发送方ip和接受方ip arp中没有源ip和目的ip,是发送方ip和接收方ip