Chinaunix首页 | 论坛 | 博客
  • 博客访问: 321242
  • 博文数量: 50
  • 博客积分: 3052
  • 博客等级: 中校
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-03 12:13
文章分类
文章存档

2009年(10)

2008年(40)

我的朋友

分类:

2008-09-03 17:53:02

先简单介绍一下情况,拓扑图是这样的
        ip-class-1                                 ip-class-2
(192.168.21.0、24~25.0、24)                (192.168.31.0~35.0、24)
                   |                               |
                     |                           |
                       |                      | 
                             squid-3.0
                           (192.168.1.1)
                             |        |
                           |            |
                         |                 |
                 web-class-1            web-class-3

大概拓扑是这个样子的,可能实际情况比这个更加的负载
我为了实现这样一个拓扑,使用的环境
vmvare6.0,起3个虚拟机,ip分别211.128(squid),211.129(nginx),211.130(apache)
其中两台web又做服务端,又做client
squid的关键配置
                

acl a src 192.168.211.129/32
acl b src 192.168.211.130/32
cache_peer 192.168.211.130 parent 80 0 no-query originserver name=www1 round-robin
cache_peer 192.168.211.129 parent 80 0 no-query originserver name=www2 round-robin
cache_peer_domain www1 a.b.c
cache_peer_domain www2 a.b.c
cache_peer_access www1 allow a
cache_peer_access www2 allow b

第1,2行定义两个client,真实环境请自行更改
第3,4行定义后端的两台RS,并做了round-robin,如果RS很多请自行添加,如果需要做会话保持,请使用sourcehash替换round-robin
第5,6行定义域名走哪个RS,示例中的a.b.c域名使用rr方式投递到两台RS上
第7行定义a过来的请求都投递到www1的RS上
第8行定义b过来的请求都投递到www2的RS上

配置好了后启动squid和web,接下来进行测试
模拟client的两台机器我都用的是wget这个参数,由于我没有仔细研究wget的参数,所以不知道哪个参数包含no-cache头,所以每次wget前我都会用squidclient+purge参数清除缓存,以达到测试的准确性

现在a上进行,wget -S --spider ,返回的结果是头中包含apache的版本号,而且每次都是apache的版本号,说明,从a ip过来的请求都投递到了www1的RS上
再在b上进行,使用相同的wget命令,返回结果的头中包含nginx的版本号,而且每次都是,说明,从b ip过来的请求都投递到www2的RS上了

如此,如果真实环境,你可以把a的请求或b的请求投递到一组RS上按不同的需求,使用RR或者sourcehash的负载均衡方式。

阅读(2124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~