LVS单机测试不负载
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单机测试不负载的更多相关文章
- 测试LVS+Keepalived高可用负载均衡集群
测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...
- 配置LVS + Keepalived高可用负载均衡集群之图文教程
负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性. 重点:每个节点时间都同步哈! C++代码 [r ...
- Heartbeat+LVS构建高可用负载均衡集群
1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...
- 使用LVS+keepalived实现mysql负载均衡的实践和总结
前言 经过一段时间的积累,数据库的架构就需要根据项目不断的进行变化. 从单台数据库,到了两台数据库的主从,再到读写分离,再到双主,现在进一步需要更多的数据库服务器去支撑更加可怕的访问量. 那么经过那么 ...
- LVS+Keepalived高可用负载均衡集群架构实验-01
一.为什么要使用负载均衡技术? 1.系统高可用性 2. 系统可扩展性 3. 负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...
- LVS集群的负载调度
LVS集群的负载调度 章文嵩 (wensong@linux-vs.org) 转自LVS官方资料 2002 年 5 月 本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法. ...
- LVS : Linux Virtual Server 负载均衡,集群,高并发,robust
1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...
- redis实现主从复制-单机测试
一.redis实现主从复制-单机测试1.安装redis tar -zxvf redis-2.8.4.tar.gzcd redis-2.8.4make && make install2. ...
- 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡
preface Mysql+drbd+heart能够实现Mysql的高可用了,master出现故障的时候能够快速切换.在现在的业务情况下,读操作多,写操作少的情况下,一台DB server明显扛不住, ...
随机推荐
- Rotating Scoreboard - POJ 3335(半面相交求多边形内核)
题目大意:RT 分析:所谓内核可以理解为在多边形内存在点可以在这个点上看到多边形内部所有的部分,当然怎么求出来就是问题的关键了.我们知道多边形的每条边都是边界值,边的左边和右边肯定是一部分属于多边形一 ...
- 《Effective C++》学习笔记条款13 以对象管理资源
条款 13 :以对象管理资源 例: voidf() { Investment *pInv = createInvestment(); ... ...
- Kerberos验证过程
参考文献: How the Kerberos Version 5 Authentication Protocol Works: Logon and Authentication SQL Kerbero ...
- Hadoop 2.4.0新特性介绍
在2014年4月7日,Apache公布了Hadoop 2.4.0 .相比于hadoop 2.3.0,这个版本号有了一定的改进,突出的变化能够总结为下列几点(官方文档说明): 1 支持HDFS訪问控制列 ...
- SQL2008和SQL2000可以跨服务器连接查询的测试实例
测试目的: SQL2008 和 SQL2000 是否可以跨服务器连接查询 -- 测试环境: --A 虚拟机 XP ( IP : .0.0.213 )安装 SQL2000 个人版,并安装 SP4 补丁. ...
- Qt OpenGL三维绘图
简介 OpenGL是为三维绘图提供的标准应用编程接口. OpenGL处理的仅仅是三维绘图方面,而很少或是根本不提供图形用户界面编程方面的支持.OpenGL*应用程序的用户界面必须由其它工具包创建,比 ...
- c语言输入输出
一 #include "stdio.h"int main(){ FILE *fp; int ninzu=0; char name[100]; double hsum=0.0; do ...
- Retrofit2源码分析(一)
本文将顺着构建请求对象→构建请求接口→发起同步/异步请求的流程,分析retrofit2是如何实现的. 组成部分 Retrofit2源码主要分为以下几个部分: retrofit retrofit-ada ...
- Ⅶ.AngularJS的点点滴滴-- 事件
事件(和js一样有冒泡和捕获) <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2 ...
- DEDE自带的采集功能,标题太短的解决方法
DEDE自带的采集功能,标题太短获取不全的解决方法搜索了好多之后,终于还是在dede的官方论坛找到了答案.增加采集标题长度:255 目的:原标题长度太小,影响文件采集⑴修改系统参数设置(文档标题最大 ...