目录:

  • 网络环境
  • 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. javaIO——BufferedReader

    今天来学习一下 java.io.BufferedReader ,从命名可以看出,跟前面学习的 StringReader 和 CharArrayReader 有些不一样,这些都是按照数据源类型命名,Bu ...

  2. [转载]sklearn多分类模型

    [转载]sklearn多分类模型 这篇文章很好地说明了利用sklearn解决多分类问题时的implement层面的内容:https://www.jianshu.com/p/b2c95f13a9ae.我 ...

  3. Arcgis for js加载百度地图

    看转:https://blog.csdn.net/qq_41046162/article/details/80248281 通过学习了一段时间的arcgis for js,让我来讲一下如何在arcgi ...

  4. 如何使用JDBC连接数据库

    1 JDBC:java database connectivity,是java程序与数据库系统通信的标准api 2 下载mysql JDBC驱动,解压缩找到mysql-connector-java-5 ...

  5. 四款免费好用的Bootstrap ui编辑器

    Bootstrap带来了设计革命,本文介绍的四种免费Bootstrap在线设计工具,可视化所见所得设计网页,然后输出Html/CSS代码,其中有些甚至可以实现拖曳,也有可以设定自己的主题模板Theme ...

  6. 使用JS和PHP导出table表格

    把table表格的内容导出成excel 或者word等格式(简单容易不需要太多php) 导出需注意 1. 样式都在行间,导出excel表格会继承样式包括colspan.rowspan,非表格元素,样式 ...

  7. Django框架orm

    一.django目录 二.登录注册 三.三件套 四.orm简介 五.基于orm的用户登录 一.django目录 -settings -urls -views -强调:setting中的'django. ...

  8. 面试题——SSM面试题

      树木丛生红火火 树木丛生红火火 微信公众号:Java全栈开发大联盟 原文地址:https://note.youdao.com/ynoteshare1/index.html?id=3f81baea7 ...

  9. find 命令和sed命令练习

    1.查找/var目录下属主为root,且属组为mail的所有文件 find /var/ -user root -group mail 2.查找/var目录下不属于root.lp.gdm的所有文件 fi ...

  10. bind支持mysql

    最近打算将bind的记录信息存入到数据库中去,网上找了下,原来早有老外写好了mysql-bind的补丁,重新编译bind即可实现bind支持mysql存储.(http://mysql-bind.sou ...