为什么枚举要实现接口?
344
2022-11-03
LVS集群-DR模式
2.1 LVS-DR和IP TUN集群概述
2.1.1 服务概述:
2.1.2 Direct Routing(直接路由)
director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing由于采用物理层(修改MAC地址)技术,因此所有服务器都必须在一个网段中。
2.1.3 IP Tunneling(IP隧道)
director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的公网IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。
2.1.4 Direct Routing 和IP Tunneling 区别:
Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用数据链路层(修改MAC地址)技术,所有服务器都必须在一个物理网段。
2.1.5 DR模式实际拓扑图及工作DR方式工作流程图:
Lvs-dr的工作原理:Deiector收到请求,将请求转发给了我们的realserver,但是接下来的工作就是我们的realserver和我们的客户端进行通讯了,所以原理图如下
2.1.6 LVS DR模式工作原理:
MAC转换过程实例场景设备清单: director分发器,IP: 192.168.1.70, VIP : 192.168.1.63
① client基本信息: IP:192.168.1.101向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:
② Director分发器根据负载均衡算法选择一台active的realserver(假设是192.168.1.62),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:
③ realserver(192.168.1.62)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:
③ 如果client与VS同一网段,那么client(192.168.1.101)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。
归纳一下:1)接收client的请求,根据你设定的负载均衡算法选取一台realserver的ip;2)以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;3)在hash table中记录连接信息。数据包、数据帧的大致流向是这样的:client --> VS --> RS --> client以上就是对LVS/DR模式的原理介绍为什么需要DR? 因为NAT模式效率太低。DR方式特点?成本?都是公网地址
网络转发:基于2层的数据报文的转发, 要比基于3层的网络转发效率要高 lvs-DR 是基于2层的转发, 所以在LVS中所有的模式, 效率是最好的1):基于mac的数据报文转发, 是效率最好的, 但是是根据交换机的MAC地址表来实现的 MAC表主要告诉你, 到xxxx地方该走那个端口 如果交换不知道对方在哪儿, 这个时候, 他就要进行广播, 就问xxxx在哪儿, 如果对应的设备给了回应, 那么交换机也就更新了自己的MAC地址表 记录到xxxx需要走这个端口 2):2层设备不具有路由功能, 那么广播也就不具有跨路由的功能, 所有要实现mac地址广播, 必须在同一物理网段3):vlan具有隔离广播的功能, 所有要能处理mac地址广播, 就应该在同一个VLAN中因此: 如果要实现LVS-DR模式 1): 所有的设备应该在同一个物理网段 2): 所有的设备都应该在同一个广播域中
LVS-DR模式工作原理: 1), DR模式, 全程目标地址, 原地址不变, 因为DR模式工作于2层 2), 请求报文从客户端发出: 原地址: CIP 源MAC CMAC 目标地址: VIP 目标mac: xxx 3), 请求报文到达机房防火墙之后, 会在防火墙的内网口进行广播, 找到VIP在哪儿 然后把包丢出去 原地址: CIP 目标地址: VIP 源MAC: FMAC 目标MAC: VMAC 4), 报文到达director之后, 解包, 发现目标mac是自己, 开始解析这个报文 处理完成, 通过自定义的一个调度算法, 转发报文到达其中一台RS上 原地址: CIP 目标地址: VIP 源mac: DMAC 目标MAC: RMAC 5), 数据报文到达RS之后, 进行节封装, 发现目标mac是自己, 开始解析, 发现VIP也有,开始处理 6), 处理完成之后, 数据直接通过RS流向客户端
2.2 实战:配置LVS-DR集群
分发器IP配置从拓扑图看出我们的eth0有2个IP地址,所以我们需要配置eht0和eth0:1两个IPDIP===ens33===192.168.10.132 VIP===ens33:1===192.168.10.250
2.2.1 配置IP:
DIP: ens33 ip地址: 192.168.10.132VIP: ens33:1 ip地址: 192.168.10.250##清空之前的ipvsadm规则ipvsadm -C1、k8s02ens33:
2.2.2 配置LVS-DR规则:
安装略ipvsadm -A -t 192.168.10.250:80 -s rripvsadm -a -t 192.168.10.250:80 -r 192.168.10.133 -gipvsadm -a -t 192.168.10.250:80 -r 192.168.10.134 -g#注: -g 表示DR模式 , -m 表示IP tun 模式[root@k8s02 network-scripts]# ipvsadm -L -nIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.10.250:80 rr -> 192.168.10.133:80 Route 1 0 0 -> 192.168.10.134:80 Route 1 0 0 #注:三个LVS 模式中,只有NAT模式需要开启 路由转发功能。 DR和TUN模式不需要开启。
2.2.3 两台RealServer的IP配置:
k8s03: 配置IP:192.168.10.1331、检查ip ens33,桥接模式 ifconfig ens33 192.168.10.133/242、回环接口 [root@k8s03 ~]# ifconfig lo:1 192.168.10.250 netmask 255.255.255.255生成回环口配置文件:cd /etc/sysconfig/network-scriptscp ifcfg-lo ifcfg-lo:1[root@k8s03 network-scripts]# cat ifcfg-lo:1DEVICE=lo:1IPADDR=192.168.10.250NETMASK=255.255.255.255# 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)ONBOOT=yesNAME=loopback3、网关指向公网出口路由器IP:[root@k8s03 network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-ens33GATEWAY=192.168.10.24、启动80端口安装restart network
2.2.4 关闭ARP转发(在两台RS上都需要同样的操作)。
同一个广播域: 配置了多个相同的VIP 是不允许的, 要想实现,就必须让外面的网络, 无法发现这个VIP的存在因此 在Linux里面, 可以修改内核参数, 实现接口IP的广播不响应、不广播arp_ignore = 1 表示只回答目标IP是访问本地网络对应接口的arp请求arp_announce = 2 只宣告本机网卡直连网络所在的ip的arp广播echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce永久生效:(注意realserver的实际link ok的网卡是不是ens33)[root@k8s03 ~]# vim /etc/sysctl.conf #最后添加net.ipv4.conf.ens33.arp_ignore = 1net.ipv4.conf.ens33.arp_announce = 2或:net.ipv4.conf.ens33.arp_ignore = 1net.ipv4.conf.ens33.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2[root@k8s03 ~]# sysctl -p参数说明:arp_ignore 为:1 # - 只回答目标IP地址是访问本网络接口(eth0)的ARP查询请求。 自己的理解:在设置参数的时候将arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的网卡设备上面没有这个ip,就不做出响应,默认是0,只要这台机器上面任何一个网卡设备上面有这个ip,就响应arp请求,并发送mac地址。arp_announce (宣告) 为2 2 - 对查询目标使用最适当的本地地址。例如,如果在eth0接口上接受到了一个VIP的arp请求包。内核判断这个VIP地址是不是eth0接口上的IP一样。如果一样,则回复这个包。如果不一样,就丢弃不回应。
2.2.5 配置real server k8s04
配置IP: 192.168.1.641、检查ip ens33 ,桥接模式 ifconfig ens33 192.168.1.64/242、回环接口 [root@k8s04 ~]# ifconfig lo:1 192.168.10.250 netmask 255.255.255.255生成回环口配置文件:cd /etc/sysconfig/network-scriptscp ifcfg-lo ifcfg-lo:1[root@k8s03 network-scripts]# cat ifcfg-lo:1DEVICE=lo:1IPADDR=192.168.10.250NETMASK=255.255.255.255# 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)ONBOOT=yesNAME=loopback3、网关指向公网出口路由器IP:[root@k8s03 network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-ens33GATEWAY=192.168.10.24、启动80端口安装1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce永久生效:(注意realserver的实际link ok的网卡是不是eth0)[root@k8s04 ~]# vim /etc/sysctl.conf #最后添加net.ipv4.conf.ens33.arp_ignore = 1net.ipv4.conf.ens33.arp_announce = 2或:net.ipv4.conf.ens33.arp_ignore = 1net.ipv4.conf.ens33.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2[root@k8s04 ~]# sysctl -p6、重启网络systemctl restart network客户端测试访问vip: 先测试real server :network-scripts]# elinks 192.168.10.133 --dump 192.168.10.133[root@k8s02 network-scripts]# elinks 192.168.10.134 --dump 192.168.10.134#注: 测试时,不要在分发器上测试。那样测试是不行的#elinks 192.168.10.250 --dump会直接卡住,只能去浏览器测试才行[root@k8s02 network-scripts]# ipvsadm -L -n --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:PortTCP 192.168.10.250:80 6 61 0 14026 0 -> 192.168.10.133:80 3 11 0 1166 0 -> 192.168.10.134:80 3 50 0 12860 0
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~