目录:

  • 网络环境
  • 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. 泛型约束:接口约束、new()构造函数约束、组合约束(即多种约束合并)

    泛型 接口约束: using System; namespace ConsoleApp1 { /* * * 接口约束:where T:interfaceName * T是类型形参的名称,interfa ...

  2. [JZOJ4307]喝喝喝--枚举

    [JZOJ4307]喝喝喝--枚举 题目链接 自行搜索 分析 我们需要找到所有不包含\((a_x,a_y),a_x \equiv k \mod a_y (x<y)\)这样的连续数对,转化一下变成 ...

  3. 【php设计模式】桥接模式

    定义: 将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度. 角色: 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现 ...

  4. CSS精灵技术(sprite)

    CSS技术的使用场景:有效的减少了服务器接收和发送请求的次数,css精灵是一种出来网页背景图像的方式,将一个页面设计到的所有零星背景图集中到一张大图中去,然后将大图应用于网页 .通过backgroun ...

  5. 如何对Linux内核参数进行优化?

    打开配置文件 vi /etc/sysctl.conf 输入配置,如下是内核优化的参数 # TCP三次握手建立阶段接收SYN请求队列的最大长度,默认为1024(将其设置得大一些可以使出现Nginx繁忙来 ...

  6. python3使用pytesseract进行验证码识别

    pytesseract介绍 1.Python-tesseract是一个基于google's Tesseract-OCR的独立封装包: 2.Python-tesseract功能是识别图片文件中文字,并作 ...

  7. list 列表 函数的引用

    方法 意义 L.index(v [, begin[, end]]) 返回对应元素的索引下标, begin为开始索引,end为结束索引,当 value 不存在时触发ValueError错误 L.inse ...

  8. 【2】Kafka概念及原理

    1.Kafka背景 1.1.Kafka概要  Apache Kafka是一个开源的.轻量级的.分布式的.可分区的.可复制备份的.基于zookeeper协调管理的分布式流式消息系统.由Scala写成,支 ...

  9. mount -t proc none /proc

    linux initrd里的init脚本中的第一句为: mount -t proc /proc /proc 作用是把proc这个虚拟文件系统挂载到/proc目录.这说明initrd需要用到/proc, ...

  10. Dart的List比较特殊的几个API

    List里面常用的属性和方法: 常用属性: length 长度 reversed 翻转 isEmpty 是否为空 isNotEmpty 是否不为空 常用方法: add 增加 addAll 拼接数组 i ...