目录:

一、LVS-DR数据包流向分析

二、DR 模式的特点

三、LVS-DR中的ARP问题

四、DR模式 LVS负载均衡群集部署

一、LVS-DR数据包流向分析

1、为方便进行原理分析,将client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4

2.、client 向目标VIP发出请求,Director(负载均衡器)接收
3.、Director根据负载均衡算法选择RealServer_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送
4.、RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealServer事先绑定 了VIP),于是处理这个报文。随后重新封装报文,发送到局域网
5.、Client将收到回复报文。Client认为得到正常的服务,而不会知道是哪一台服务器处理的
数据包流量分析总结

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

注意: 如果跨网段,则报文通过路由器经由Internet返回给用户

二、DR 模式的特点

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

三、LVS-DR中的ARP问题
问题一
1、在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址

2、在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱

  • 当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
  • 只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

解决方法

对节点服务器进行处理,使其不响应针对VIP的ARP请求

  • 使用虚接口lo:0承载VIP地址
  • 设置内核参数arp_ ignore=1: 系统只响应目的IP为本地IP的ARP请求

问题二

1、RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP) 作为ARP请求包的源IP地址,而不使用发送接口的IP地址

2、路由器收到ARP请求后,将更新ARP表项

3、原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址

所以,路由表根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效

解决方法:

对节点服务器进行处理,设置内核参数arp_ announce=2: 系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

四、DR模式 LVS负载均衡群集部署

环境准备

1 DR 服务器:192.168.91.5
2 Web 服务器1:192.168.91.10
3 Web 服务器2:192.168.91.15
4 nfs 服务器: 192.168.91.20
5 客户端:192.168.91.112
6 vip:192.168.91.100

1、配置负载调度器(192.168.91.5)

 1 systemctl stop firewalld.service
2 setenforce 0
3
4 modprobe ip_vs
5 cat /proc/net/ip_vs
6 yum -y install ipvsadm
7
8 (1)配置虚拟 IP 地址(VIP:192.168.91.100)
9 cd /etc/sysconfig/network-scripts/
10 cp ifcfg-ens33 ifcfg-ens33:0 #若隧道模式,复制为ifcfg-tunl0
11 vim ifcfg-ens33:0
12 DEVICE=ens33:0
13 ONBOOT=yes
14 IPADDR=192.168.91.100
15 NETMASK=255.255.255.255
16
17 ifup ens33:0
18 ifconfig ens33:0
19 route add -host 192.168.91.100 dev ens33:0
20
21 (2)调整 proc 响应参数
22 由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应。
23 vim /etc/sysctl.conf
24 net.ipv4.ip_forward = 0
25 net.ipv4.conf.all.send_redirects = 0
26 net.ipv4.conf.default.send_redirects = 0
27 net.ipv4.conf.ens33.send_redirects = 0
28
29 sysctl -p
30
31 (3)配置负载分配策略
32 ipvsadm-save > /etc/sysconfig/ipvsadm
33 systemctl start ipvsadm
34
35 ipvsadm -C
36 ipvsadm -A -t 192.168.91.100:80 -s rr
37 ipvsadm -a -t 192.168.91.100:80 -r 192.168.91.10:80 -g #若隧道模式,-g替换为-i
38 ipvsadm -a -t 192.168.91.100:80 -r 192.168.91.15:80 -g
39 ipvsadm
40
41 ipvsadm -ln #查看节点状态,Route代表 DR模式

2、部署共享存储(NFS服务器:192.168.91.20)

 1 systemctl stop firewalld.service
2 systemctl disable firewalld.service
3 setenforce 0
4
5 yum install nfs-utils rpcbind -y
6 systemctl start nfs.service
7 systemctl start rpcbind.service
8 systemctl enable nfs.service
9 systemctl enable rpcbind.service
10
11 mkdir /opt/accp /opt/benet
12 chmod 777 /opt/accp /opt/benet
13
14 vim /etc/exports
15 /usr/share *(ro,sync)
16 /opt/accp 192.168.91.0/24(rw,sync)
17 /opt/benet 192.168.91.0/24(rw,sync)
18
19 --发布共享---
20 exportfs -rv

3、配置节点服务器(192.168.91.10、192.168.91.15)

 1 systemctl stop firewalld.service
2 setenforce 0
3
4 (1)配置虚拟 IP 地址(VIP:192.168.91.100)
5 cd /etc/sysconfig/network-scripts/
6 cp ifcfg-ens33 ifcfg-lo:0
7 vim ifcfg-lo:0
8 DEVICE=lo:0
9 ONBOOT=yes
10 IPADDR=192.168.91.100
11 NETMASK=255.255.255.255 #注意:子网掩码必须全为 1
12
13 ifup lo:0
14 ifconfig lo:0
15 route add -host 192.168.91.100 dev lo:0 #添加VIP本地访问路由,将访问VIP的数据限制在本地,以避免通信紊乱
16
17 vim /etc/rc.local
18 /sbin/route add -host 192.168.91.100 dev lo:0
19
20 chmod +x /etc/rc.d/rc.local
21
22 (2)调整 proc 响应参数
23 vim /etc/sysctl.conf
24 ......
25 net.ipv4.conf.lo.arp_ignore = 1 #系统只响应目的IP为本地IP的ARP请求
26 net.ipv4.conf.lo.arp_announce = 2 #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
27 net.ipv4.conf.all.arp_ignore = 1
28 net.ipv4.conf.all.arp_announce = 2
29
30 sysctl -p
31 或者
32 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
33 echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
34 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
35 echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
36
37 sysctl -p
38
39 yum -y install nfs-utils rpcbind httpd
40 systemctl start rpcbind
41 systemctl start httpd
42
43 --192.168.91.10---
44 mount.nfs 192.168.91.20:/opt/accp /var/www/html
45
46 --192.168.91.15---
47 mount.nfs 192.168.91.20:/opt/benet /var/www/html

两个节点服务器的配置差不多,我这里就只展示一个节点服务器的配置

4、测试 LVS 群集

在客户端使用浏览器访问 http://192.168.91.100/

LVS负载均衡集群--DR模式部署的更多相关文章

  1. LVS负载均衡集群--NAT模式部署

    目录: 一.企业群集应用概述 二.负载均衡群集架构 三.负载均衡群集工作模式分析 四.关于LVS虚拟服务器 五.NAT模式 LVS负载均衡群集部署 一.企业群集应用概述 1.群集的含义 Cluster ...

  2. 构建LVS负载均衡集群——NAT模式(最简单方式)

    一.装备一台lvs调度器主机要求两个网卡一个为内部局域网ip,一个为公网ip #IP地址设置过程不再重复 [root@localhost ~]# ip a | grep eth0 #内网ip : et ...

  3. LVS负载均衡集群(DR)

    -----构建DR模式的LVS群集----- --client---------------------LVS------------------------WEB1----------------- ...

  4. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  5. 项目实战2—实现基于LVS负载均衡集群的电商网站架构

    负载均衡集群企业级应用实战-LVS 实现基于LVS负载均衡集群的电商网站架构 背景:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响 ...

  6. LVS之2---基于LVS负载均衡集群架构

    LVS之2---基于LVS负载均衡集群架构实现 目录 LVS之2---基于LVS负载均衡集群架构实现 ipvsadm software package Options 常用命令 保存及重载规则 内存映 ...

  7. 实现基于LVS负载均衡集群的电商网站架构

    背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...

  8. LVS负载均衡集群

    回顾-Nginx反向代理型负载 负载均衡(load balance)集群,提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...

  9. Linux 笔记 - 第十八章 Linux 集群之(二)LVS 负载均衡集群

    一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 ...

随机推荐

  1. 什么是 RFC 2544

    什么是 RFC 2544? 如果您从事网络工作,您可能听说过它,但 RFC 2544 究竟是什么呢? RFC 的全称是 Request for comment ,请求注解.是一系列收录了互联网国际标准 ...

  2. Nginx 解析漏洞

    目录 漏洞复现 漏洞成因 修复方案 参考链接 该漏洞与Nginx.php版本无关,属于用户配置不当造成的解析漏洞. 漏洞复现 访问http://172.17.0.1/uploadfiles/nginx ...

  3. JStorm:概念与编程模型

    1.集群架构 JStorm从设计的角度,就是一个典型的调度系统,简单集群的架构如下图所示,其中Nimbus可增加一个备节点,多个Supervisor节点组成任务执行集群. 1.1.Nimbus Nim ...

  4. MongoDB-01-基础

    mongodb逻辑结构 Mongodb 逻辑结构 MySQL逻辑结构 库 (database) 库 集合(collection) 表 文档(document) 数据行 安装部署 1 系统准备 1 这里 ...

  5. AQS源码分析看这一篇就够了

      好了,我们来开始今天的内容,首先我们来看下AQS是什么,全称是 AbstractQueuedSynchronizer 翻译过来就是[抽象队列同步]对吧.通过名字我们也能看出这是个抽象类 而且里面定 ...

  6. logmein逆向

    IDA打开整体先看看. 学个函数: strcpy:即字符串复制 v8=这么一大串字符串 我们让程序调到sub_4007F0(),就OK. 我们使用python来写, 主要迷惑的还是下面都是情深深雨蒙蒙 ...

  7. 题解—P2511 [HAOI2008]木棍分割

    这道题第一眼直接一个二分板子把第一问解决掉,然后主要是统计方案. 其实这个方程还不算难推,只要推出来朴素 \(dp\) ,之后的一步一步也很顺理成章,所以这种题主要看能不能静下心来慢慢做. solut ...

  8. Java社区——个人项目开发笔记(一)

    1.maven安装与测试 安装过程略,常用的maven命令行工具: mvn --version 查看maven版本 mvn compile 编译maven工程 mvn clean 删除编译文件 mvn ...

  9. 熟悉而陌生的新朋友——IAsyncDisposable

    本文作者--句幽 在.NET Core 3.0的版本更新中,官方我们带来了一个新的接口 IAsyncDisposable. 小伙伴一看肯定就知道,它和.NET中原有的IDisposable接口肯定有着 ...

  10. Linux 分区扩容(根分区扩容,SWAP 分区扩容,挂载新分区为目录)

    请访问原文链接:https://sysin.org/blog/linux-partition-expansion/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页: ...