lvs dr nat模型问题

主要实现WEB负载均衡,采用LVS/DR keepalived 实现高可用负载均衡,测试中发现的问题希望和大家讨论解决。
由 asheleylee 在 周二,
13:41 提交
大家好,希望大家能一起帮我解决问题,谢谢。(目前都是在虚拟机上进行试验)
lvs_dr1:192.166.5.175协调服务器
lvs_dr2:192.166.5.202 备份服务器
VIP:192.166.5.250
lvs_real1:192.166.5.200 应用服务器1
lvs_real2:192.166.5.201
前已经安装了 ipvs 和keepalived
在应用服务器上也配置了脚本
也可以实现负载均衡
在lvs_dr1上keepalived.conf 的配置如下:
global_defs {
notification_email {
notification_email_from sns-
smtp_server 127.0.0.1
# smtp_connect_timeout 30
router_id LVS_DEVEL
written by aa
vrrp_instance VI_1 {
state MASTER
#备份服务器上将MASTER改为BACKUP
interface eth0
virtual_router_id 51
priority 100
# 备份服务上将100改为99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
virtual_ipaddress {
192.166.5.250
virtual_server 192.166.5.250 80 {
delay_loop 6
#(每隔10秒查询realserver状态)
lb_algo wlc
#(lvs 算法)
lb_kind DR
#(Direct Route)
persistence_timeout 60
#(同一IP的连接60秒内被分配到同一台realserver)
protocol TCP
#(用TCP协议检查realserver状态)
real_server 192.166.5.200 80 {
TCP_CHECK {
connect_timeout 10
#(10秒无响应超时)
nb_get_retry 3
delay_before_retry 3
connect_port 80
real_server 192.166.5.201 80 {
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
在备份服务器上lvs_dr2
keepalived。conf主要做以上两点修改即可
应用服务器上的脚本配置如下:
SNS_VIP=192.166.5.250
/etc/rc.d/init.d/functions
case "$1" in
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast 192.166.5.254
/sbin/route add -host $SNS_VIP dev lo:0
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
echo "RealServer Start OK"
ifconfig lo:0 down
echo "0" &/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" &/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" &/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" &/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
echo "Usage: $0 {start|stop}"
以上就是我所作的热备份负载均衡。
现在的存在的问题是:
1.如果应用到WEB上,是否这5个IP都要换为公网IP且在一个物理网段上(采用LVS/DR)
2.在测试的时候,当我在地址栏上输入:http://192.166.5.250(VIP)时,出现的页面是 显示该页无法刷新 那个页面。再刷新一次,就可以到应用服务器上。为什么会出现 该页无法刷新的页面,是我配置哪里错误了吗?
3.目前采用wlc算法,权值分别为3(应用服务器1)和1(应用服务器2 )。我输入http://192.166.5.250(VIP)时,首先进入的都是权值为1的应用服务器上,为什么呢?(我也删除了COOKIES)
4.在测试的时候,有的时候会出现 在lvs_dr上 输入:ipvsadm -l 时 里面的值都是0 不变的,但是输入VIP,可以在两台应用服务器上实现轮调,为什么有的时候值都是0 还有情况是 值的变化 不随我刷新的页面的次数变?
5.在输入ipvsadm -l -c 时 为什么 显示FIN_WAIT和NONE很多,但ESTABLISH很少?还搞不清楚FIN_WAIT是什么意思?
6.关于负载均衡的算法,在keepalive.conf里面 有写,但是我不清楚 这个都是根据自己的需要来修改吗? 如果是这样的话,那权值也都是手动来修改吗?(我看有资料说,权值是可以自动修改的,我在测试时没发现)
7.如果把这个应用的话,我怎么可以在真实环境下进行测试,这个在网上搜索到的关于压力测试方面的资料很少,请指点一下。
谢谢,希望大家一起讨论,解决这些困扰我的问题
| 8391 次阅读
我按您的方式也在虚拟机上配置,所有配置和您的一样
但是就是不能访问WEB服务器,只有在WEB服务器本身的机器上可以 访问 http://192.166.5.250
结果也是该服务器上的测试页,
在其他的机器上均无法看到WEB测试页/
不知还有什么地方是我配置没加么???往
我来尝试回答您的这些问题,仅供参考:
1.如果应用到WEB上,是否这5个IP都要换为公网IP且在一个物理网段上(采用LVS/DR)
答:是的,需要保证是同一子网的。要想省IP,可以用NAT模式,对于100M的应该不存在问题。
2.在测试的时候,当我在地址栏上输入:http://192.166.5.250(VIP)时,出现的页面是 显示该页无法刷新 那个页面。再刷新一次,就可以到应用服务器上。为什么会出现 该页无法刷新的页面,是我配置哪里错误了吗?
答:配置应该没有错误,可能是后端其中的一个服务器出了问题。您可以先确保多次直接访问真实子机没有问题后再走VIP访问。
3.目前采用wlc算法,权值分别为3(应用服务器1)和1(应用服务器2 )。我输入http://192.166.5.250(VIP)时,首先进入的都是权值为1的应用服务器上,为什么呢?(我也删除了COOKIES)
答:或许3和1这样的权值差异不大吧。初始时访问大家的连接数都是0。等您做压力测试时,有比较多的并发连接数时可以再观察看看。主要是要观察真实子机上的连接数,不要看LVS的输出信息,那个有时候做不得数。
4.在测试的时候,有的时候会出现 在lvs_dr上 输入:ipvsadm -l 时 里面的值都是0 不变的,但是输入VIP,可以在两台应用服务器上实现轮调,为什么有的时候值都是0 还有情况是 值的变化 不随我刷新的页面的次数变?
答:请在真实子机上看当前的连接数,有时候LVS的输出信息不一定对。您的访问页面很容易完成的话,也有可能不连接了,所以连接数就归零了。我的建议是,您可以做高并发连接数测试时进行观察,主要是观察真实子机上的并发,顺带也看看LVS上的。
5.在输入ipvsadm -l -c 时 为什么 显示FIN_WAIT和NONE很多,但ESTABLISH很少?还搞不清楚FIN_WAIT是什么意思?
答:FIN_WAIT的意思可以去查一下TCP/IP协议相关文档。至于在Director上显示的信息,我建议是转到真实子机上看看。
6.关于负载均衡的算法,在keepalive.conf里面 有写,但是我不清楚 这个都是根据自己的需要来修改吗? 如果是这样的话,那权值也都是手动来修改吗?(我看有资料说,权值是可以自动修改的,我在测试时没发现)
答:对于keepalived来说,算法和权值一般是硬编码在keepalived.conf里边的。不修改keepalived.conf的话,可以直接用ipvsadm来修改,但是下次keepalived重启仍然会从keepalived.conf里边读取。
7.如果把这个应用的话,我怎么可以在真实环境下进行测试,这个在网上搜索到的关于压力测试方面的资料很少,请指点一下。
答:apache ab、httperf、siege、jmeter、autobench等等这些都可以拿来做测试工具。性能表现你可以在真实服务器上看。按照两种场景来测试:1、直接压真实机器,就是直接指定访问真实服务器RIP;2、通过LVS压真实机器,即直接访问VIP。
3.目前采用wlc算法,权值分别为3(应用服务器1)和1(应用服务器2 )。我输入http://192.166.5.250(VIP)时,首先进入的都是权值为1的应用服务器上,为什么呢?(我也删除了COOKIES)
答:或许3和1这样的权值差异不大吧。初始时访问大家的连接数都是0。等您做压力测试时,有比较多的并发连接数时可以再观察看看。主要是要观察真实子机上的连接数,不要看LVS的输出信息,那个有时候做不得数。
更正:首先理解一下什么叫WLC算法
wlc 加权最少链接(Weighted Least Connections)
在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能, 具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
请注意,“具有较高权值的服务器将承受较大比例的活动连接负载” 这一句。然后,当算法是rr的时候,权重没有作用。
但是当算法是wlc和wrr的时候, 必须设置权重,可以根据服务器的性能和配置,来确定权重的大小,当权重大的时候,调度的服务也就多,同时权重高的服务器先收到链接。当小的时候,调度的比较少。
当权重为0的时候,表示服务器不可用
现在LZ明白为什么都是分配到权重为3的那台服务器了吧,与清不清什么缓冲关系不大。
楼主原话:“……首先进入的都是权值为1的应用服务器上,为什么呢?……”
楼主疑惑的正是为什么访问请求不分配到权重3而是权重为1的那台,这明显是违背算法初始意愿的。
您的回答:“……现在LZ明白为什么都是分配到权重为3的那台服务器了吧……”
人家想知道的是为什么不是权重为3的那台,而您回答的是到权重为3的理由,根本不能解决楼主的疑惑啊。LVS负载均衡群集之NAT模型&&DR模型_服务器应用_Linux公社-Linux系统门户网站
你好,游客
LVS负载均衡群集之NAT模型&&DR模型
来源:Linux社区&
作者:贾亮
LVS 是linux virtual server 的简写,即linux的虚拟服务器,是一个虚拟的服务器集群系统。ip负载均衡技术是在负载调度器的实现技术中效率最高的,在已有的ip负载均衡技术中,主要通过网络地址转换(即VS/NAT 技术)、由于使用nat技术会使分派器成为瓶颈,所以提出了通过ip隧道实现虚拟服务器(即VS/TUN)和通过直接路由实现虚拟服务器的方法即VS/DR。 VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
LVS采用ip负载均衡技术和基于内容的请求分发技术。调度器具有很好的吞吐率,将请求均衡的转移到不同的服务器上执行,且调度器自动屏蔽故障的服务器,从而将一组服务器构成了一个高性能、高可用的虚拟服务器 。整个服务器对客户完全透明,而且无需修改客户端和服务器端的程序,所以有透明性、可伸缩性、高可用性和易管理性优点。
采用三层结构:
A:负载调度器director
它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B:服务器池
是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
C:共享的存储
它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
如图所示:外网用户直接访问Director上的VIP地址,在Director 上做DNAT,将请求分派给给real server服务器中的其中一台,请求可以是http、mail、dns或ftp。然后real server将请求结果通过Director的Dip发送给请求者。由于请求和回复都要经过Director,容易使Director成为瓶颈,最多可以有10个节点
如下图所,外网用户直接访问Director上的VIP地址,Director将请求分派给real server 进行处理,当realserver处理后不再经过Director,而是直接送至客户端,绕开了Director,使Director不再成为瓶颈。可以有大量的节点,最多可以有100个节点
LVS调度算法:
当Director收到请求后,需要将请求发送给Real server 进行处理,但是发送哪一台服务器就要按照算法进行分派。
共有十总调度算法:
固定算法4个:按照设置的算法执行,不考虑现实状况
RR:Round-robin 轮循调度算法
WRR:Weighted round-robin 加权的轮循调度算法,权值越大越优先
DH:Destination hashing 目标hash 同一个ip用户的请求都发送给其中的一台固定的realserver
SH:Source hashing 来源hash 当director的前端同时连接有两台或多台路由器或防火墙时,用户通过通过其中一台路由器(或防火墙)将请求发送给director,realserver处理完后将仍然从进入的路由器(或防火墙)的接口出去
动态算法:根据Director中的跟踪表,查看每个服务器的active 和inactive 个数进行调整
LC:least-connection :最小连接 查看每个节点的active 和inactive数量,根据active* 256+inactive,哪个结果小,就将请求发送给该服务器
WLC:weighted least-connection 加权的最小连接,计算方法:(active* 256+inactive)/权值。,哪个结果小,就将请求发送给该服务器
SED:最少的期望权值 只考虑active激活的连接,不考虑inactive连接。计算方法:(active+1)*256
NQ:永不排队 若果某个节点未处于活动连接,就将下一个请求发送给该节点进行处理
LBLC:当director和服务器之间有squid或varnish缓存服务器时,需要在director上设置,使请求分别到两台缓存服务器上
LBLCR:在LBLC的基础上,若其中一部分人不在访问网站,则下面一台缓存服务器将不会有页面缓存,这时候该缓存服务器将会空闲下来。该算法使下面一台缓存服务器自动复制上面一台缓存服务器的网页,用于提供缓存。
相关资讯 & & &
& & & & & &
& (03月21日)
& (02月11日)
& (05月14日)
& (03月04日)
& (02月04日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款LVS+Tomcat负载均衡集群搭建(dr模型)
LVS+Tomcat负载均衡集群搭建(dr模型)
  开发团队要测试云存储,要求搭建一个tomcat的负载均衡集群,首先考虑使用lvs实现负载,技术实现成本低,做云存储就是为了节约存储硬件设备的成本。因为考虑是测试环境暂时没有对lvs的director做高可用配置,我会考虑在空闲时间做一个
  测试环境:rhel4.8&& 64位系统
  集群设备:3台测试机,2台做tomcat单点web应用,1做director(web请求分发器)(3台测试机都在同一交换机、同一网段)
  director :inet addr:192.168.2.107& Bcast:192.168.7.255& Mask:255.255.248.0
  realserver:inet addr:192.168.3.57& Bcast:192.168.7.255& Mask:255.255.248.0
  inet addr:192.168.2.51& Bcast:192.168.7.255& Mask:255.255.248.0
  VIP:192.168.2.111
  1、环境搭建前的准备,因为系统是4.8的,首先我查看了一下内核是否支持lvs,2.4.23以后版本的内核源代码支持lvs(uname -a查看系统信息),下载ipvsadm地址; 我用的是ipvsadm-1.24.tar.gz
  安装ipvsadm
  #mv& ipvsadm-1.24.tar.gz& /usr/local
  #cd& /usr/local
  #tar zxvf ipvsadm-1.24.tar.gz
  #cd ipvsadm-1.24(可以阅读一下README文件)
  #make &&make install(make时可能会报错,需要做一个软连接,
  ln -s /usr/src/kernels/2.6.9-89.EL-smp-x86_64 /usr/src/linux)
  2、配置2台realserver的4个内核参数,vip等
  ssh连上一台realserver服务器,执行下列命令(另一台服务器也要做相同设置)
  #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&&&& #ifconfig lo:0 192.168.2.111 broadcast 192.168.2.111 netmask 255.255.255.255 up&&&& #route add -host 192.168.2.111 dev lo:0&&&&&&&&&&&&&&&&&&&&&&&
  //注释:
  arp_announce&&& &限制级别0& 1& 2值。默认是0&0),所有地址全部告诉&1),尽可能不告诉不在同一网络的地址&2),只告诉最佳网络地址arp_ignore&0),&1),在哪个网卡收到回复哪个,其他地址不予响应&2),接收到的要与发送方在同一网络才相应,否则不通信
  3、配置director&#ifconfig eth0:1 192.168.2.111 broadcast 192.168.2.111 netmask 255.255.255.255 up& //设置vip&#route add -host 182.168.2.111 dev eth0:1&&& //添加路由&#echo 1 & /proc/sys/net/ipv4/ip_forward&&&& //开启路由功能&#ipvsadm -A -t 192.168.2.111:8080 -s wlc&&&&&&&& //设置新的转发服务&#ipvsadm -a -t 192.168.2.111:8080 -r 192.168.2.51 -g -w 20&&&&&& //转发规则&#ipvsadm -a -t 192.168.2.111:8080 -r 192.168.3.57 -g -w 10&&&&&& //
  //注释:-A添加新的转发服务 ;-s指定dr模型的算法; -rweb应用的真实ip地址;-g指定使用lvs的dr模型 ; -w是web服务器的权重(因为开发没有对持久连接和https服务等作出要求,所以这里就简单地配置一下)  4、安装jdk与tomcat
  tomcat解析java程序需要java的开发环境,这里jdk版本有一台32位的realserver用的自身的1.4的版本的,有一台上面跑的是resin用的1.5的jdk,因此只给出过程:
  jdk下载后
  #chmod +x jdk-6u14-dlj-linux-i586.bin
  #./jdk-6u14-dlj-linux-i586.bin
  输入yes回车
  mv& jdk-*&& jdk
  设置java的环境变量
  vi& /root/.bash_profile
  export JAVA_HOME=/usr/local/jdk
  export PATH=$JAVA_HOME/bin:$PATH&&&& export CLASSPATH=JAVA_HOME/lib/dt.jar&&& export TOMCAT_HOME=/usr/local/tomcat&&&&& export LANG=zh_CN.GBK&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //这个主要看开发人员用的什么字符集再设置,
  保存退出
  测试java
  #java -version&& //能正确显示java版本就正常了
  安装tomcat
  去官网下载tomcat,这里使用apache-tomcat-6.0.35.tar.gz
  #tar zxvf apache-tomcat-6.0.35.tar.gz
  #mv apache-tomcat-6.0.35& /usr/local/tomcat&& //要与刚才设置的环境变量一致
  两台realserver上面相同安装配置,然后修改web文件
  #vi& /usrlocal/tomcat/webapps/ROOT/l&&& //可以先备份一份&
  (或者echo 本机真实IP & l&&&&&&&&&&&&&&&&&&&&&&&& //为了测试能否转发请求)
  清空原有内容只输入本机真实IP测试用
  启动tomcat
  /usr/local/tomcat/bin/startup.sh
  查看8080端口是否开启
  netstat& -tnlp | grep 8080
  用浏览器访问虚拟IP192.168.2.111:8080
  在director上查看分发连接状态
  #watch -n 1 'ipvsadm -L -n'
  压力测试
  #ab Cc 10 Cn 5000
  我搭建完成后用ie浏览器访问总是无法连接,偶尔会有一次连接上了,很是着急,做了一遍又一遍也没发现什么地方有问题,后来去同事电脑上浏览器一访问竟然可以,伤心啊,我又在自己电脑上换了个浏览器终于好使了,真是伤不起的ie。由于tomcat可能本身就有持久连接的配置,因此一个浏览器页面F5狂刷新只显示一个IP地址,(连接上后,要等10秒左右再刷新,会连接并显示另一台realserver)但是做ab压力测试会正常分发!
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-

我要回帖

更多关于 lvs dr arp 的文章

 

随机推荐