目录:

  • 网络环境
  • LVS服务器网络配置
  • LVS服务器添加ipvs规则
  • RS服务器配置
  • 访问验证
  • 抓包分析
  • 注意事项

【网络环境】

网络拓扑结构如下表:

服务器
类型
网卡
IP
MAC
说明
v_mechine2
client
ens32
192.168.237.132
00:0c:29:ff:f9:ca
客户端ip
v_mechine1
lvs_vip
lvs_dip
ens35
ens32
192.168.237.141
192.168.237.131
00:0c:29:33:72:59
00:0c:29:33:72:45
对外vip
对内dip
v_mechine3
rs1_vip
rs1_rip
lo:0
ens33
192.168.237.141
192.168.237.171
 
00:0c:29:4e:33:cb
虚拟网口vip,无mac
内部rip
v_mechine4
rs2_vip
rs2_rip
lo:0
ens33
192.168.237.141
192.168.237.172
 
00:0c:29:ae:a1:bb
虚拟网口vip,无mac
内部rip

【LVS服务器网络配置】

配置双网卡,均在同一网段上:

[root@v_machine1 ~]# ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
inet6 ::/ scope host
valid_lft forever preferred_lft forever
: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether 00:0c:29:33:72:45 brd ff:ff:ff:ff:ff:ff
inet 192.168.237.131/ brd 192.168.237.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe33:/ scope link
valid_lft forever preferred_lft forever
: ens34: <BROADCAST,MULTICAST> mtu qdisc pfifo_fast state DOWN qlen
link/ether :0c::::4f brd ff:ff:ff:ff:ff:ff
: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether 00:0c:29:33:72:59 brd ff:ff:ff:ff:ff:ff
inet 192.168.237.141/ brd 192.168.237.255 scope global ens35
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe33:/ scope link
valid_lft forever preferred_lft forever

路由设置如下:

[root@v_machine1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.237.2 0.0.0.0 UG ens32
169.254.0.0 0.0.0.0 255.255.0.0 U ens32
169.254.0.0 0.0.0.0 255.255.0.0 U ens35
192.168.237.0 0.0.0.0 255.255.255.0 U ens32
192.168.237.0 0.0.0.0 255.255.255.0 U ens35

开启路由转发:

临时开启路由转发:
# echo > /proc/sys/net/ipv4/ip_forward
或使用
# sysctl -w net.ipv4.ip_forward=
永久开启路由转发:
修改/etc/systcl.conf参数如下
# cat /etc/sysctl.conf | 'net.ipv4.ip_forward'
net.ipv4.ip_forward=
配置生效命令
# sysctl -p
tips:0关闭,1开启

【LVS服务器添加ipvs规则】

添加服务和规则

[root@v_machine1 ~]# ipvsadm -A -t 192.168.237.141: -s wrr
[root@v_machine1 ~]# ipvsadm -a -t 192.168.237.141: -r 192.168.237.171: -g -w
[root@v_machine1 ~]# ipvsadm -a -t 192.168.237.141: -r 192.168.237.172: -g -w

查看ipvs规则,已添加成功

[root@v_machine1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.237.141: wrr
-> 192.168.237.171: Route
-> 192.168.237.172: Route

【RS服务器配置】

两台RS服务器均添加虚拟网卡lo:0(也可使用其它虚拟网口,如ens33:0)

[root@v_machine3 network-scripts]# ifconfig lo: 192.168.237.141 netmask 255.255.255.255 up
[root@v_machine3 segments_dr]# ifconfig
ens33: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.237.171 netmask 255.255.255.0 broadcast 192.168.237.255
inet6 fe80::20c:29ff:fe4e:33cb prefixlen scopeid 0x20<link>
ether 00:0c:29:4e:33:cb txqueuelen (Ethernet)
RX packets bytes (571.6 KiB)
RX errors dropped overruns frame
TX packets bytes (362.4 KiB)
TX errors dropped overruns carrier collisions lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: prefixlen scopeid 0x10<host>
loop txqueuelen (Local Loopback)
RX packets bytes (3.7 KiB)
RX errors dropped overruns frame
TX packets bytes (3.7 KiB)
TX errors dropped overruns carrier collisions lo:0: flags=<UP,LOOPBACK,RUNNING> mtu
inet 192.168.237.141 netmask 255.255.255.255
loop txqueuelen (Local Loopback)

路由设置如下:

[root@v_machine3 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.237.2 0.0.0.0 UG ens33
169.254.0.0 0.0.0.0 255.255.0.0 U ens33
192.168.237.0 0.0.0.0 255.255.255.0 U ens33

【访问验证】

客户端上curl访问lvs服务器的vip

[root@v_machine2 ~]# curl 192.168.237.141 -w "对端ip:%{remote_ip}\n"
hello,192.168.237.171
对端ip:192.168.237.141
[root@v_machine2 ~]# curl 192.168.237.141 -w "对端ip:%{remote_ip}\n"
hello,192.168.237.172
对端ip:192.168.237.141
[root@v_machine2 ~]# curl 192.168.237.141 -w "对端ip:%{remote_ip}\n"
hello,192.168.237.172
对端ip:192.168.237.141

可见,lvs已按照加权轮询方式处理客户端访问请求

【抓包分析】

在客户机上对lvs的vip进行访问,然后分别在4台服务器上抓包
lvs服务器抓取数据包client2vip1st_vmachine1.pacp
http数据流:

arp数据流:

可见DS收到client的访问请求后直接将请求转给了后端RS

在RS2服务器上抓取数据包client2vip1st_vmachine4.pacp
http数据流,收包:

http数据流,回包:

从收包,可以看出RS收到的数据包,源ip为客户机ip,目的ip为vip;但是源mac地址是lvs的mac地址,可见该包是从lvs转发过来的;
从回包,可以看到RS将数据包直接回给cip,而不是dip;
 
在client服务器上抓取数据包client2vip1st_vmachine2.pacp

从client上的收包中,可以看到数据是直接从RS2返回给client的

由上述数据分析可以得出以下数据流程图:

数据包pcap文件:

链接:https://pan.baidu.com/s/1FnV3jL_p5ohbsrPpyek4JQ 
提取码:85oy

【注意事项】

在DR工作模式下,由于每台RS服务器均配置了vip。因此需要设置服务器拒绝arp广播的响应。

LVS之DR模式的更多相关文章

  1. LVS:DR模式(Direct Routing)部署实验

    本文介绍怎样在kvm的虚拟环境下,部署实验LVS的DR模式.包含网络结构图,怎样配置.以及使用tcpdump分析ip包. 网络结构图                               kvm ...

  2. LVS的DR模式

    DR模式: 请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS. DR模式下需要LVS和绑定同一个VIP(RS通过将VIP绑定在loopba ...

  3. LVS的DR模式负载均衡

    参考项目:http://www.cnblogs.com/along21/p/7833261.html#auto_id_3 LVS的DR模式实现负载均衡 1.环境 lvs-server :192.168 ...

  4. Lvs Keepalive DR模式高可用配置

    Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...

  5. lvs中dr模式配置脚本

    1 dr模式介绍 1.1 lvs的安装 安装具体解释:http://blog.csdn.net/CleverCode/article/details/50586957. 1.2 lvs模式 lvs有三 ...

  6. lvs部署-DR模式

    DR模式 角色 IP地址 备注 LVS负载均衡器 192.168.119.132 VIP:192.168.119.150    ipvsadm http_Real server 192.168.119 ...

  7. CentOS6.4 配置LVS(DR模式)

    DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上. IP分配 VIP:10.10.3.170 RIP1:10.10.3.140 RIP2:10.10.3.141 1.安装所需的依赖包 y ...

  8. LVS的DR模式测试案例<仅个人记录>

    初始概念 大家都知道LVS,是章文嵩博士创建的,所以首先推一下主站吧!http://zh.linuxvirtualserver.org/ LVS集群分为三层结构: 负载调度器(load balance ...

  9. LVS+keepalived DR模式配置高可用负载均衡集群

    实验环境 LVS-Master 10.0.100.201 VIP:10.0.100.203 LVS-Slave       10.0.100.204 WEB1-Tomcat 10.0.2.29 gat ...

  10. lvs 中DR模式负载均衡及keepalived

    lvs DR配置 LVS负载均衡:三种负载均衡模式:DR,TUN(ip隧道),NAT,这里我们介绍DR模式 server1: 首先,配置server机yum源 方便后期实验流畅vim /etc/yum ...

随机推荐

  1. Django中 auto_now_add 和 auto_now 的区别

    auto_now_add = True #创建时添加的时间 修改数据时,不会发生改变 auto_now = True #修改数据的时间,每次修改都会有变动 ........

  2. 用101000张图片实现图像识别(算法的实现和流程)-python-tensorflow框架

    一个月前,我将kaggle里面的food-101(101000张食物图片),数据包下载下来,想着实现图像识别,做了很长时间,然后自己电脑也带不动,不过好在是最后找各种方法实现出了识别,但是准确率真的非 ...

  3. spring利用xml配置定时任务

    在开发中会经常遇到做定时任务的需求,例如日志定时清理与处理,数据信息定时同步等需求. 1.在spring中利用xml配置定时任务,如下 <!-- ftpiptv信息同步接口定时任务配置--> ...

  4. 图片样式加hover特效

    之前有个尴尬的事情发生,我不知道如何将文字放在图片右边,我想了个麻烦且愚蠢的办法,后来才知道只需要将图片居左就可以达到效果.....不说了看下面 需要实现的效果: 很简单, <img src=& ...

  5. 第五章、前端之JQuery

    目录 第五章.前端之JQuery 一.选择器 二.基本筛选器 三.样式操作 四.位置操作 五.文本操作 六.属性操作 七.文档处理 八.事件 九.动画效果 十.补充 第五章.前端之JQuery 一.选 ...

  6. 3. Dictionaries and Sets

    1. Generic Mapping Types The collections.abc module provides the Mapping and MutableMapping ABCs to ...

  7. PAT Basic 1072 开学寄语 (20 分)

      下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过.读书.锻炼.明智. ...

  8. tensorflow模型的保存与恢复,以及ckpt到pb的转化

    转自 https://www.cnblogs.com/zerotoinfinity/p/10242849.html 一.模型的保存 使用tensorflow训练模型的过程中,需要适时对模型进行保存,以 ...

  9. 通过自动回复机器人学Mybatis---加强版

    第2章 接口式编程 介绍 Mybatis 的接口式编程,并说明为什么要采用这种形式,以及 Mybatis 是如何实现的

  10. bzoj1458: 士兵占领(最大流)

    题目描述 有一个M * N的棋盘,有的格子是障碍.现在你要选择一些格子来放置一些士兵,一个格子里最多可以放置一个士兵,障碍格里不能放置士兵.我们称这些士兵占领了整个棋盘当满足第i行至少放置了Li个士兵 ...