一、LVS-DR数据包流量分析(同一局域网)

1、客户端向目标VIP发送请求,负载均衡器接收
2、负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送
3、后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理这个报文。
4、随后重新封装报文,将响应报文通过 lo 接口传送给物理网卡然后向外发出客户端将收到回复报文。客户端认为得到正常的服务,而不会知道是哪一台服务器处理的如果跨网段,则报文通过路由器经由 internet 返回给用户

二、LVS-DR中的ARP问题

客户端访问服务的请求(访问VIP)经过路由器的时候,路由器查看ARP表,发现没有记录,则会进行ARP广播,由于LVS-DR模式,调度器与真实服务器都需要绑定相同的VIP,所以真实服务器也会对ARP广播进行响应,假设第一个响应ARP广播的是RealServer_01,此时路由器中ARP表中的记录为(VIP对应RealServer_01-MAC),所以下一次客户端在访问的时候就会跳过调度器直接访问后端的真实服务器(架空了调度器与RealServer_01,使之失效)
解决方法:1、真实服务器使用虚接口 lo:0 承载VIP地址,并设置路由禁锢,2、设置内核参数 arp_ignore=1:系统只响应目的IP为本地 IP 的ARP请求。
到目前为止解决了ARP响应的问题(此时路由器中ARP表记录 VIP 对应 LVS-MAC),那么数据包返回去的时候又有一个问题,服务器默认发送策略是谁接受谁发送,此时的报文信息是(源IP=VIP,目标IP=客户端IP,源MAC=RealServer_01-MAC,目标MAC=路由器MAC),在经过路由器的时候,发现ARP表中的记录 VIP 对应 LVS-MAC 这一条记录与返回来的ARP报文中的 VIP 是一样的,所以会更新ARP表为
VIP 对应 RealServer_01-MAC(此时又一次架空了调度器与RealServer_01,使之失效)
解决方法:对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

三、解决ARP的两个问题的设置方法

修改 /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

四、LVS-DR处理问题后的流量分析

① 客户端发送请求到Director server (负载均衡器),请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间。
② Director Server和Real server在同一个网络中,数据通过二层数据链路层来传输。
③ 内核空间判断数据包的目标IP是本机VIP,此时IPVS (IP虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源MAC地址为Director Server的MAC地址,修改目标MAC地址为Real Server的MAC地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server。
④到达Real server的请求报文的MAC地址是自身的MAC地址,就接收此报文。数据包重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过 lo 接口传送给物理网卡ens33然后向外发出。
⑤ Real Server 直接将响应报文传送到客户端。

五、LVS-DR 特性

① Director Server和Real Server必须在同一个物理网络中。
② Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问。
③ Director Server作为群集的访问入口,但不作为网关使用。所有的请求报文经由Director Server,但回复响应报文不能经过Director Server
④ Real Server的网关不允许指向Director Server IP,即Real Server发送的数据包不允许经过Director Server。
⑤ Real Server上的lo:0接口配置VIP的IP地址。

六、Keepalived

1、Keepalived 功能
支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)
判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当 master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点(优先级)。
2、Keepalived 实现原理剖析
keepalived采用VRRP热备份协议实现Linux 服务器的多机热备功能
VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。
由多台路由器组成一个热备份组,通过共用的虚拟IP地址对外提供服务
每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

LVS-DR模式+keepalived实验

实验环境:
LVS调度器(主):ens33=192.168.177.100 ens33:0=192.168.177.250 安装 ipvsadm + keepalived
LVS调度器(备):ens33=192.168.177.130 ens33:0=192.168.177.250 安装 ipvsadm + keepalived
WEB服务器:ens33=192.168.177.110 lo:0=192.168.177.250
WEB服务器:ens33=192.168.177.111 lo:0=192.168.177.250
实验步骤:
第一步:
所有节点ntp同步时钟

yum -y install ntp
ntpdate ntp.aliyun.com

第二步:
1、LVS调度器配置(lvs_01,lvs_02配置一样)
安装ipvsadm

yum -y install ipvsadm
modprobe ip_vs
cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn

2、配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
vim /opt/dr.sh
#!/bin/bash
ipvsadm -C
//这里指定的虚拟IP为ens33网卡ip,启动keepliaved后会自动绑定虚拟网卡
ipvsadm -A -t 192.168.177.250:80 -s rr
ipvsadm -a -t 192.168.177.250:80 -r 192.168.177.110:80 -g
ipvsadm -a -t 192.168.177.250:80 -r 192.168.177.111:80 -g
ipvsadm

3、调整proc响应参数
由于LVS负载均衡器和各节点需要共用vip地址,应该关闭linux内核的重定向响应参数,不充当路由器(转发、重定向)

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
sysctl -p

4、配置虚拟IP(lvs_01,lvs_02配置一样)

cd /etc/sysconfig/n=network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.177.250
NETMASK=255.255.255.255
ifup ens33:0 //由于同一个局域网下配置相同的IP地址会冲突,这里报错不用管,因为开启keepalived的时候会删除
ifconfig ens33:0
systemctl restart network

5、安装keepalived

yum -y install keepalived
cd /etc/keepalived
cp -p keepalived.conf keepalived.conf.bak
//修改keepalived.conf配置文件
vim keepalived.conf
global_defs {             #定义全局参数router_id lvs_01     #热备组内的设备名称不能一致:(主:LVS_01,备:LVS_02)
}
vrrp_instance vi_1 {      #定义VRRP热备实例参数state MASTER          #指定热备状态,主为master,备为backupinterface ens33       #指定承载vip地址的物理接口virtual_router_id 51  #指定虚拟路由器的ID号,每个热备组保持一致priority 110          #指定优先级,数值越大越优先(主:110,备100)advert_int 1authentication {   #加密认证auth_type PASSauth_pass 6666}virtual_ipaddress {   #指定集群VIP地址192.168.177.250}
}
#指定虚拟服务器地址vip,端口,定义虚拟服务器和web服务器池参数
virtual_server 192.168.177.250 80 { lb_algo rr                  #指定调度算法,轮询(rr)lb_kind DR                   #指定集群工作模式,直接路由DRpersistence_timeout 6        #健康检查的间隔时间protocol TCP              #应用服务采用的是TCP协议
#指定第一个web节点的地址,端口real_server 192.168.177.110 80 {weight 1                    #节点权重TCP_CHECK {connect_port 80         #添加检查的目标端口connect_timeout 3     #添加连接超时nb_get_retry 3           #添加重试次数delay_before_retry 3 #添加重试间隔}}
#指定第二个web节点的地址,端口real_server 192.168.177.111 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
systemclt start keepalived.service

第三步:
WEB服务器配置(两台WEB节点配置相同)
1、安装httpd

yum -y install httpd
vim /var/www/html/index.html
<h1>this is AAA PAGE</h1> //192.168.177.110:80节点页面
<h1>this is AAA PAGE</h1> //192.168.177.111:80节点页面
systemctl start httpd

2、配置虚拟IP地址
此地址仅用做发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)
因此使用虚接口 lo:0 来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱。

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.177.250
NETMASK=255.255.255.255
ifup lo:0
ifconfig lo:0

3、配置路由禁锢

route add -host 192.168.177.250 dev lo:0
route -n  //查看路由
[root@localhost network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.177.2   0.0.0.0         UG    0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.177.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.177.250 0.0.0.0         255.255.255.255 UH    0      0        0 lo

配置启动管理执行路由禁锢(永久生效)

vim /etc/rc.local
/sbin/route add -host 192.168.177.250 dev lo:0

4、调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免冲突

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
sysctl -p

客户端访问192.168.177.250验证

DR模式 + keepalived相关推荐

  1. LVS——DR模式+Keepalived(高可用)

    1.什么是keepalived keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障. Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作 ...

  2. LVS负载均衡DR模式+keepalived

    实验拓扑: 实验准备: CentOS6.5-x86-64 node1 10.0.0.11    软件:ipvsadm+keepalived    角色:Director1 node2 10.0.0.1 ...

  3. centos6.4下LVS+keepalived的高可用(LVS/DR模式)

    LVS负载均衡机制: LVS工作在网络层.相对于其它负载均衡的解决办法,比如DNS域名轮流解析.应用层负载的调度.客户端的调度等,它的效率是非常高的.LVS的通过控制IP来实现负载均衡.IPVS是其具 ...

  4. Linux集群架构(下)——DR模式、keepalived+LVS

    2019独角兽企业重金招聘Python工程师标准>>> Linux集群架构(下) 八.DR模式搭建 8.1 准备工作 试验需求三台机器: 分发器,也叫调度器(简写为dir) : 19 ...

  5. Lvs+keepalived   实现负载均衡、故障剔除(DR模式)

    系统都是6.3 32位 Vip:192.168.2.244 Lvs-master:192.168.2.80 Lvs-backup:192.168.2.6 Web1:192.168.2.93 Web2: ...

  6. ​十六周一次课(4月11日) 学习完成 18.11 LVS DR模式搭建 18.12 keepalived + LVS

    2019独角兽企业重金招聘Python工程师标准>>> 18.11 LVS DR模式搭建 准备工作:三台机器 分发器,也叫调度器(简写为dir) 192.134 rs1 192.13 ...

  7. LVS DR模式搭建,keepalived + LVS

    2019独角兽企业重金招聘Python工程师标准>>> LVS DR模式搭建 准备工作 三台机器,只需要有公网IP 分发器,也叫调度器(简写为dir)IP:192.168.133.1 ...

  8. LVS DR模式搭建、keepalived+LVS

    LVS DR 模式搭建 准备工作 三台机器,三台机器均有公网IP. 调度器(director) IP:192.168.159.131 real server 1 (real1) IP:192.168. ...

  9. Linux集群架构(LVS DR模式搭建、keepalived + LVS)

    为什么80%的码农都做不了架构师?>>>    LVS DR模式搭建 准备工作:三台机器 分发器,也叫调度器(简写为dir):192.168.248.128 rs1 :192.168 ...

  10. LVS DR模式搭建、keepalived + LVS

    一. LVS DR模式搭建 1).准备工作: 三台机器 分发器,也叫调度器(简写为dir) 1.31 rs1 1.12 rs2 1.29 vip 1.200 2). dir上编写脚本 vim /usr ...

最新文章

  1. 启动指定参数_SpringBoot的三种启动方式
  2. ubuntu常见问题
  3. C++ 调试配置的项目设置
  4. ThinkSNS Plus PHP开发概述
  5. IOCP中多次投递WSASend
  6. PDF文件分割电脑版怎么操作
  7. ECharts地图省市县在对应地图的中心位置
  8. Ember学习(1):Ember核心概念
  9. PDF加密如何批量解除
  10. C++:实现量化存在净额结算协议的交易对手风险下的利率互换估值公式测试实例
  11. android触屏对焦,Android相机对焦模式
  12. 浅谈市场降温后的区块链发展前景
  13. 子网划分以及网络号的计算
  14. 无光驱,硬盘安装XP完整原版
  15. 【LeetCode每日一题】【2021/12/8】689. 三个无重叠子数组的最大和
  16. 高逼格故宫介绍网页源码
  17. 2019ICPC南昌总结+今年总结
  18. 学习笔记——String类常用方法(字符、字节、比较、查找、替换、拆分、截取、结构、格式化、连接、入池、驱除空格、长度计算、大小写转换等)
  19. AD620-仪表放大器-快速上手使用
  20. 武侠:我在六扇门当差(二)

热门文章

  1. 李宏毅机器学习——深度学习卷积神经网络
  2. 《流畅的Python》读书笔记——符合Python风格的对象
  3. 《流畅的Python》读书笔记——Python文本和字节序列
  4. BPF 之巅:洞悉 Linux 系统和应用性能
  5. 数据分析 | 将业务问题转换为统计问题后,我看到了数字的真相
  6. Mycat 分布式事务的实现
  7. PyTorch:距离度量
  8. httpsession 是一样的吗_理解HTTP session原理及应用
  9. 安卓开发 登录用户信息缓存_Firefox 将向用户警告被泄露的登录信息
  10. break continue区别和用法_[分享]Python专题之流程控制(进阶用法2)