先简单介绍一下情况,拓扑图是这样的
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的负载均衡方式。
阅读(1801) | 评论(0) | 转发(0) |