lvs的DR模式和keepalive的脑裂

DR模式:

lvs的三种模式 nat 地址转换

DR 直接路由模式

tun 隧道模式

调度器在整个lvs集群当中是最重要的,在nat模式下,即负责接受请求,同时根据负载均衡的算法转发流量,响应发送给客户端。

DR模式:调度器依然负责接受请求,同时也根据负载均衡算法转发流量到RS,响应直接由RS响应给客户端。

直接路由 Direct Routing 是一种二层转发模式。二层转发的是数据帧。根据源mac地址和目的mac地址进行转发。

不会修改数据包源ip和目的ip,根据数据包mac地址进行转发。

DR模式下,lvs也是维护一个虚拟的ip地址,所有的请求都是发送到这个vip,既然是走二层转发,当客户端的请求到达调度之后,根据负载均衡的算法选在一个RS,修改vip服务器的mac变成RS的mac地址,RS处理完请求之后,根据报文当中客户端的源mac地址直接把响应发送到客户端即可,不需要走调度器了。

1、调度器配置了vip,RS上也配置了vip地址。

vip地址冲突,调度器和RS都在同一网段,ARP通信的紊乱,因为是整个局域网广播,所有的设备都收到了。

怎么把lo这个回环的响应把它屏蔽掉,只有本机的物理ip地址响应。

修改内核参数:

arp_igrone=1

系统的物理ip地址才会响应请求。lo不会响应ARP请求。

2、返回报文时,vip地址还在,怎么样能让客户端来接收到响应。

arp_announce=2

系统不使用ip数据包的源地址来响应ARP请求,直接发送物理接口的ip地址。

节点服务器的配置:

DR模式的实现:

nginx1 RS1 192.168.233.100

nginx2 RS2 192.168.233.110

vip 192.168.233.200

test1 调度器 192.168.233.10

test2 客户端 192.168.233.20

route add -host 192.168.233.100 dev lo:0

设置ip地址为192.168.233.100的

关闭 调度器(test1),客户端(test2),rs1(nginx1),rs2(nginx2)的防火墙和防御机制

[root@test1 ~]# systemctl stop firewalld
[root@test1 ~]# setenforce 0

调度器加载内核 安装 ipvsadm 工具

[root@test1 ~]# modprobe ip_vs
[root@test1 ~]# yum -y install ipvsadm*

创建vip地址

[root@test1 ~]# cd /etc/sysconfig/network-scripts/
[root@test1 network-scripts]# vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=YES
IPADDR=192.168.233.200
NETMASK=255.255.255.255
[root@test1 network-scripts]# ifup ens33:0

修改调度器的响应参数

[root@test1 network-scripts]# vim /etc/sysctl.conf
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设备,禁止发送ICMP重定向消息

指定vip和负载均衡的算法

[root@test1 opt]# ipvsadm -C
[root@test1 opt]# ipvsadm -A -t 192.168.233.200:80 -s rr
#指定vip和负载均衡的算法

添加真实服务器指定模式和备份

[root@test1 opt]# ipvsadm -a -t 192.168.233.200:80 -r 192.168.233.100:80 -g
[root@test1 opt]# ipvsadm -a -t 192.168.233.200:80 -r 192.168.233.110:80 -g
[root@test1 opt]# ipvsadm-save /etc/sysconfig/ipvsadm
[root@test1 opt]# systemctl restart ipvsadm

配置2台真实服务器(nginx1 nginx2)

设置2台服务器的访问页面为nginx1和nginx2

[root@nginx1 ~]# vim /usr/local/nginx/html/index.html
                 nginx1
[root@nginx1 ~]# systemctl restart nginx
[root@nginx2 ~]# vim /usr/local/nginx/html/index.html
                 nginx2
[root@nginx2 ~]# systemctl restart nginx

自己访问自己测试一下 给2台服务器回环地址做一个回环接口

[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
IPADDR=192.168.233.200
NETMASK=255.255.255.255
ONBOOT=yes
[root@nginx1 network-scripts]# ifup lo:0

设置ip地址为192.168.233.100的值添加到回环接口,做为lvs的vip,通过路由的模式转发到RS,能让vip识别到真实的服务器

[root@nginx1 network-scripts]# route add -host 192.168.233.200 dev lo:0

调整真实服务器的内核响应

[root@nginx1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
#设置回环接口忽略来自任何接口的ARP请求
net.ipv4.conf.lo.arp_announce = 2
#设置回环地址仅仅公告本地的ip地址,但是不响应ARP请求
net.ipv4.conf.all.arp_ignore = 1
#设置所有接口忽略来自任何接口的ARP请求
net.ipv4.conf.all.arp_announce = 2
#设置所有接口仅仅公告本地的ip地址,但是不响应ARP请求

测试结果

lvs的三种工作模式:

NAT DR TUN

优点: 地址转换 性能最好 WAN,可以实现较远距离的数据包传送

配置简单 专用通道

缺点: 性能瓶颈 不支持跨网段 需要开通vpn(花钱)

RS的要求: 无限制 必须要禁止非物理接口的ARP响应 要支持隧道模式

RS的数量 10-20台 100台 100台

面试题:

简述lvs的三种模式和他们的区别

面试题:

keepalive的脑裂怎么解决?

lvs集群当中的高可用架构,只是针对调度器的高可用。

基于vrrp来实现调度器的主和备。

高可用的HA架构

主调度器和备调度器(多台)

在主调度器正常工作的时候,备完全出于冗余状态(待定)。不参与集群的运转,只有当主调度器出现故障时,备才会承担主调度器的工作,主调度器恢复功能之后,主继续成为集群的入口,备继续出于冗余状态(取决于优先级)

keeplive基于vrrp协议来实现lvs高可用的方案。

1、组播地址:

224.0.0.18根据组播地址来进行通信,主和备之间发送报文,确定对方是否存活。

2.根据优先级的大小来确定主和备的位置

3、故障切换,主挂了,备来继续工作,主恢复了,备继续等待。

4、主和备之间的切换是vip地址的切换

keepalive是专门为了lvs而出现的,但不是lvs专用的。

相关推荐
网络研究院21 分钟前
攻击者将恶意软件分解成小块并绕过您的安全网关
网络·网关·安全·攻击·技术·分块·分析
小哈里1 小时前
【云网络】软件定义网络SDN的概念与应用(以PVE8用户隔离,TLS证书介绍,自签证书等为例)
网络·https·云计算·虚拟化·sdn
拾光师1 小时前
linux之网络命令
linux·服务器·网络
没有名字的小羊2 小时前
Linux基础命令——账户简单管理
linux·运维·服务器·网络·数据库
沈艺强2 小时前
计算机网络nat 映射案列
网络·计算机网络
嘻嘻仙人3 小时前
【网络通信基础与实践第四讲】用户数据报协议UDP和传输控制协议TCP
网络·网络协议·udp·tcp·三次握手·流量控制·拥塞控制
DC_BLOG6 小时前
IPv6(四)
运维·服务器·网络·ip
明朝百晓生6 小时前
无线感知会议系列【3】【基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用-1】
网络·5g
城南云小白9 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络