LVS单机测试不负载

1、困惑

当我们在个人PC上搭建虚拟机(Vmware)做LVS负载实验的时候,我们不论是在个人浏览器或者其他虚拟机上访问LVS的VIP都会出现上时间刷新都出现同一个页面的情况。

那么这种情况是我们的配置错误还是虚拟机的原因呢。

2、环境

下面简单交待下虚拟的环境:

服务器名称

IP以及内容

LB02

10.0.0.6 VIP:10.0.0.3

WEB01

10.0.0.8 VIP:10.0.0.3

页面内容 yangliheng

WEB01

10.0.0.9 VIP:10.0.0.3

页面内容 yyyy

LVS的配置以及WEB的配置的常规配置我们就省略了。

重点说下抑制ARP的配置;

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

这些配置的作用就是在与确保上端路由设备去访问VIP的时候能得到唯一的MAC地址。

arp_ignore = 1即不回应不是目标IP是物理网络IP的ARP请求。确保了客户端请求VIP的时候只会得到LB的MAC地址。

arp_announce = 2即RS在回复客户端的时候,发送的ARP请求不以自己的VIP的为源IP,确保了不会更新上端路由的ARP缓存,从而保证以后客户端请求VIP的时候读取路由器ARP缓存会得到LB的MAC地址。

3、初步测试

当我们在另一台虚拟机上测试LVS的负载均衡的时候

[root@lb01 ~]# curl 10.0.0.3

yangliheng

[root@lb01 ~]# curl 10.0.0.3

yangliheng

[root@lb01 ~]# curl 10.0.0.3

yangliheng

[root@lb01 ~]# curl 10.0.0.3

yangliheng

[root@lb01 ~]# curl 10.0.0.3

yangliheng

[root@lb01 ~]# curl 10.0.0.3

yangliheng

可以看到不论刷新多少次都是这个内容(WEB01的)

我们在这个虚拟机上

[root@lb01 ~]# arp -n

Address                  HWtype  HWaddress           Flags Mask            Iface

10.0.0.3                 ether   00:0c:29:f4:80:e8   C                     eth0

这是查看10.0.0.3对应的MAC地址,正常来说10.0.0.3应该对应LB02上的MAC地址但是我们分别查看LB02和WEB01的MAC地址

[root@lb02 ~]# ifconfig

eth0Link encap:Ethernet  HWaddr 00:0C:29:3E:C2:E0

inet addr:10.0.0.6Bcast:10.0.0.255Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe3e:c2e0/64 Scope:Link

UP BROADCAST RUNNING MULTICASTMTU:1500  Metric:1

RX packets:46221 errors:0 dropped:0 overruns:0 frame:0

TX packets:16725 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:9061863 (8.6 MiB)  TX bytes:1574822 (1.5 MiB)

eth0:0Link encap:Ethernet  HWaddr 00:0C:29:3E:C2:E0

inet addr:10.0.0.3Bcast:0.0.0.0  Mask:255.255.255.0

[root@web01 ~]# ifconfig

eth0Link encap:Ethernet  HWaddr 00:0C:29:F4:80:E8

inet addr:10.0.0.8Bcast:10.0.0.255Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fef4:80e8/64 Scope:Link

UP BROADCAST RUNNING MULTICASTMTU:1500  Metric:1

RX packets:12579 errors:0 dropped:0 overruns:0 frame:0

TX packets:9604 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1727749 (1.6 MiB)  TX bytes:1840750 (1.7 MiB)

eth0:0Link encap:Ethernet  HWaddr 00:0C:29:F4:80:E8

inet addr:10.0.0.3Bcast:0.0.0.0Mask:255.255.255.255

UP BROADCAST RUNNING MULTICASTMTU:1500  Metric:1

发现10.0.0.3对应的是WEB01上的MAC地址,即下次访问10.0.0.3的时候不会经过负载而是直接去访问WEB01,所以就不会有负载均衡的效果了。

上述是在LINUX客户端的测试,那么我们在我们的PC浏览器上测试的时候也会出现这个问题

多次访问都是同一个内容。

那么我们怀疑也有可能是ARP缓存的问题,我们来验证一下。

首先清空电脑的ARP缓存 arp –d

然后在浏览器访问10.0.0.3。

得到的是

然后在CMD查看ARP缓存

发现了10.0.0.3对应的MAC地址,我们在虚拟机上查看发现这个MAC地址是WEB02的MAC地址,所以他以后访问VIP的时候都是直接访问WEB02。

4、正确测试

那么如何正确测试

1、在LINUX客户端上

测试前先情况ARP缓存。

[root@lb01 ~]# arp -d 10.0.0.3 ; curl 10.0.0.3

yyyy

[root@lb01 ~]# arp -d 10.0.0.3 ; curl 10.0.0.3

yangliheng

[root@lb01 ~]# arp -d 10.0.0.3 ; curl 10.0.0.3

yangliheng

[root@lb01 ~]# arp -d 10.0.0.3 ; curl 10.0.0.3

yyyy

[root@lb01 ~]# arp -d 10.0.0.3 ; curl 10.0.0.3

yyyy

[root@lb01 ~]# arp -d 10.0.0.3 ; curl 10.0.0.3

yangliheng

2、在浏览器上

同理,刷新浏览器页面前现在CMD中清空ARP缓存。

5、为什么

那么为什么会出现这种情况,会影响到我们的生产环境吗?

答案是不会,在生产环境中。

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

这些参数已经足够保证我们的局域网内的ARP正常

(包括2个方面:不响应ARP请求,RS的ARP请求不会让上端路由器更新),

那么由于我们是在个人的电脑上去模拟这个LVS的环境,所以有些参数不会生效,比如arp_announce,所以还是会更新ARP缓存,从而得不到负载的效果。

这个原因可能是因为不论是LINUX客户端还是PC 上虚拟出来的路由,并不是真实的路由器,所以不支持这个参数吧。

LVS单机测试不负载的更多相关文章

  1. 测试LVS+Keepalived高可用负载均衡集群

    测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...

  2. 配置LVS + Keepalived高可用负载均衡集群之图文教程

    负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性.  重点:每个节点时间都同步哈! C++代码 [r ...

  3. Heartbeat+LVS构建高可用负载均衡集群

    1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...

  4. 使用LVS+keepalived实现mysql负载均衡的实践和总结

    前言 经过一段时间的积累,数据库的架构就需要根据项目不断的进行变化. 从单台数据库,到了两台数据库的主从,再到读写分离,再到双主,现在进一步需要更多的数据库服务器去支撑更加可怕的访问量. 那么经过那么 ...

  5. LVS+Keepalived高可用负载均衡集群架构实验-01

    一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...

  6. LVS集群的负载调度

    LVS集群的负载调度 章文嵩 (wensong@linux-vs.org) 转自LVS官方资料 2002 年 5 月 本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法. ...

  7. LVS : Linux Virtual Server 负载均衡,集群,高并发,robust

    1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...

  8. redis实现主从复制-单机测试

    一.redis实现主从复制-单机测试1.安装redis tar -zxvf redis-2.8.4.tar.gzcd redis-2.8.4make && make install2. ...

  9. 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡

    preface Mysql+drbd+heart能够实现Mysql的高可用了,master出现故障的时候能够快速切换.在现在的业务情况下,读操作多,写操作少的情况下,一台DB server明显扛不住, ...

随机推荐

  1. javascript检测属性

    javascript 对象可以看做属性的集合.我们可以通过三种方式来判断某个属性是否存在于某个对象中. 1.in操作符 var o={x:1} "x" in o //True :x ...

  2. Kbuild文件

    3 Kbuild文件 大部分内核中的Makefile都是使用Kbuild组织结构的Kbuild Makefile.这章将介绍Kbuild Makefile的语法. 对于Kbuild文件名来讲,Kbui ...

  3. Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)

    1.动手实战和调试Spark文件操作 这里,我以指定executor-memory参数的方式,启动spark-shell. 启动hadoop集群 spark@SparkSingleNode:/usr/ ...

  4. 第十一章、认识与学习 BASH Bash Shell 的操作环境

    bash中的变量动不动就说环境变量,真是奇怪,bash只是一个c语言编写的程序而已,跟环境变量有什么关系?如果知道dos的历史的话就知道有个时代是只有命令行界面而没有图形用户界面,这只小小的程序就包揽 ...

  5. mysql 插入默认值的问题 sql-mode

    刚好碰到如果不给默认值mysql数据就插入不成功的问题,后来百度了很多,试了下结果 把my.ini里面的[mysqld]的sql-mode 换成下面的一行,如果没有则添加  sql-mode=&quo ...

  6. C#封装加密算法(MD5、SHA、HMAC、DES、RSA)的一个类

    using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Wen. ...

  7. KindEditor编辑器(初始化参数)

    width 编辑器的宽度,可以设置px或%,比textarea输入框样式表宽度优先度高. 数据类型: String 默认值: textarea输入框的宽度 示例: K.create('#id', {  ...

  8. 小物件之select单选下拉列表

    有时候在控制器中做了一个数组 然后需要在模板view中循环 同时还需要判断是否有选中的值,就会造成很多开始闭合标签 以前都是这样写 这样实在太繁琐了,不如封装一个小物件 封装函数如下: 代码如下: f ...

  9. php 燕十八 观察者模式代码例子

    <?php class user implements SplSubject { public $lognum; public $hobby; protected $observers=null ...

  10. 3proxy代理软件文档说明

    官方英文原版说明:http://www.3proxy.ru/howtoe.asp 配置文件的简要说明:如果你的英文理解力好,可以试着研究一下他的手册. 以实例说明吧 nscache 65536域名解析 ...