首页 电脑 电脑学堂 查看内容

squid做loadbalance并支持按源ip做会话保持保持

2009-5-4 11:14 644 0

摘要: from:mosquito.cublog.cn今天有时间研究squid的负载均衡,目前已经有了一定的进展,下面就把我的心得总结出来和大家分享一下我的目标:1,使用squid进行负载均衡 &n...
关键词: nbsp 0.055556 1.000000 squid 域名 内容 loadbalance 一个 文件 二台

from:mosquito.cublog.cn今天有时间研究squid的负载均衡,目前已经有了一定的进展,下面就把我的心得总结出来和大家分享一下我的目标:1,使用squid进行负载均衡         2,做到会话保持我使用的squid版本,SQUID 3.0.STABLE8 注:只有squid3.0stable8可以实现(SQUID 2.6.STABLE21也可以实现,2.7目前可以实现负载均衡,但无法实现会话保持)实现使用参数cache_peer,其中的options :sourcehash,这个参数是stable8新加入的,是按client的ip来进行loadbalance,配置参数如下 acl no_direct_domain dstdomain a.b.c          定义不被转发的域名always_direct allow !no_direct_domain         除了定义的域名都可以被转发include /path/to/a.b.c.conf前两行的作用,如果你想cache_peer和/etc/hosts同时使用,就需要添加上面的两行,具体实现功能我后面会详细介绍,下面说下a.b.c.conf中的内容 cache_peer 192.168.213.130 parent 80 0 no-query originserver name=www1 sourcehash no-digest 定义第一台RScache_peer 192.168.213.133 parent 80 0 no-query originserver name=www2 sourcehash no-digest 定义第二台RScache_peer_domain www1 a.b.c      a.b.c域名投递到第一台RScache_peer_domain www2 a.b.c      a.b.c域名投递到第二台RS到此,负载均衡的配置就完成了,接下来修改/etc/hosts文件添加另外一个域名 192.168.213.133 b.c.d在 RS213.133这台server上建立两个vhost,一个域名a.b.c,默认页面index.html内容a.b.c,另一个域名b.c.d,默 认页面index.html,内容b.c.d。另外为了区分loadbalance成功,130这台RS我用的是nginx,这样默认页面内容就是 Welcome to nginx!,下面开始测试为了防止squid机器上dns对域名解析的干扰,我去掉了squid上的dns,启动squid使用-ND参数,启动RS1的nginx,启动RS2的apache,修改我自己windows的hosts文件,内容如下 192.168.213.129 a.b.c b.c.d这 样这两个域名的解析都知道squid上了,现在访问http://a.b.c,开始显示130的内容,使用ctrl+F5刷新,第二次就是a.b.c的内 容,当刷新多次以后,就会始终停留在停留在其中的一个页面了,之所以用ctrl+F5我是忽略squid缓存,由此证明会话保持成功,之前看到两个页面切 换说明loadbalance成功,接下来是另一个测试访问http://b.c.d,结果浏览器显示b.c.d内容,说明域名可以通过hosts文件解析首先说明一点:为了防止公网使用我的squid当代理服务器上网,所以我去掉了dns,这样所有域名我都会通过hosts文件解析1,如果配置文件中加上always_direct allow all,将会出现a.b.c域名因为找不到对应的ip而无法访问,但b.c.d可以正常访问2,如果注释掉always_direct allow all,则相反,a.b.c可以正常访问,b.c.d会提示squid无法转发请求由此我就想到了用第一个实现的办法来同时工作,需要走loadbalance的就用cache_peer,不需要loadbalance的就用hosts文件转发squid的loadbalance支持健康检测,如果后端RS服务停了,squid会自动判断,并不再把请求发给后方以上配置已经在我的一台生产线环境的squid上应用,目前稳定性,性能还处于观察中通过squidclient -p 80 mgr:sourcehash命令查看hash情况,每台机器上还都是有请求的(这个是我生产线上squid上看到的内容) Hostname Hash Multiplier Factor Actual                     www1 38830f16 1.000000 0.055556 0.000704                     www2 654f5979 1.000000 0.055556 0.014789                     www3 921ba3dc 1.000000 0.055556 0.092254                     www4 bec7ee3f 1.000000 0.055556 0.000704                     www5 eb9438a2 1.000000 0.055556 0.029577                     www6 18408306 1.000000 0.055556 0.010563                     www7 450ccd69 1.000000 0.055556 0.164789                     www8 71d917cc 1.000000 0.055556 0.410563                     www9 9e85622f 1.000000 0.055556 0.000704                    www10 2ce0260 1.000000 0.055556 0.001408                    www11 2f9a4cc3 1.000000 0.055556 0.011268                    www12 5c469726 1.000000 0.055556 0.079577                    www13 8912e189 1.000000 0.055556 0.009859                    www14 b5df2bec 1.000000 0.055556 0.020423                    www15 e28b764f 1.000000 0.055556 0.103521                    www16 f57c0b3 1.000000 0.055556 0.004225                    www17 3c040b16 1.000000 0.055556 0.000704                    www18 68d05579 1.000000 0.055556 0.012676不过以上基于client的ip做的会话保持,我发现了一个问题,就是我不知道在哪里设置会话保持的过期时间,如果谁找到了,还望告知,以上描述性的话语过多,如有不明白的地方,我们一起交流
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部