Squid集群做CDN全网加速配置分享
主服务器群,然后在利用squid逆向缓存web80端口来加速自己的网站.各大门户网站象163,sina,chinaitlab之类基本都是使用的这种技术,好处是大大的有.比如加速了网络和可以防黑客(因为他们见到的都是cdn的主机)
这是利用squid逆向集群模式做的一种应用
网络环境:
主服务器群:源web服务器群 位于公网ip:220.xxx.xxx.x port:80(后台才是web的服务器)
注: 要保证tcp80,udp3130在防火墙上是开的(供icp_port通讯使用,多台squid集群才会用到)
全国各地分服务器:a服务器公网ip111.xxx.xxx.x
b服务器公网ip112.xxx.xxx.x
注: 要保证tcp80,udp3130在防火墙上是开的(供icp_port通讯使用,多台squid集群才会用到)
……………………
需要解决的问题:
全国的所有用户,无论是电信,还是网通,都能速度很好的打开网站
实施
1、分别在主服务器群和全国各地分服务器的三台服务器安装squid,不会安装的请直接关闭本网页.
2、分别配置squid,这里只重点叙述squid集群配置要点.
主服务器群squid的配置:
http_port 220.xxx.xxx.x:80 vhost vport #让squid监听本机ip的80端口
icp_port 3130 #多台squid通信使用
cache_peer “内网web服务器的地址” parent 80 0 no-query originserver no-digest name=cache0 #设置源web服务器群的ip和端口
cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache1 #让远程的squid连接本地squid工作在sibling模式并指定其端口
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache2 #a服务器
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3 #b服务器
cache_peer_domain cache0 www.php-oa.com #配置本机squid允许接受访问的域名
acl safe_ports port 80
acl safe_ports port 3130 #允许以上端口的代理
全国各地分服务器squid的配置:
a服务器:
http_port 111.xxx.xxx.x:80 vhost vport
icp_port 3130
cache_peer 220.xxx.xxx.x parent 81 0 no-query originserver no-digest name=cache0 #设置主服务器群web服务器为源服务器
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache1
cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3
cache_peer_domain cache0 www.php-oa.com
acl safe_ports port 80
acl safe_ports port 3130
b服务器:
http_port 112.xxx.xxx.x:80 vhost vport
icp_port 3130
cache_peer 220.xxx.xxx.x parent 80 0 no-query originserver no-digest name=cache0
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache1
cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache3
cache_peer_domain cache0 www.php-oa.com
acl safe_ports port 80
acl safe_ports port 3130
虽然配置好了但是如何让电信和网通的用户能有选择的访问两个不同镜像呢?这个请各位自己查相关的资料,要不到https://www.dnspod.com申请双线,电信网通的转发服务
注:下面看看cache_peer的参数
通过squid.conf配置文件中的cache_peer选项来配置代理服务器阵
列,通过其他的选项来控制选择代理伙伴的方法.cache_peer的使用格式如下:
cache_peer hostname type http_port icp_port
共有5个选项可以配置:
1. hostname:指被请求的同级子代理服务器或父代理服务器.可以用主机名或ip地址表示;
2. type:指明hostname的类型,是同级子代理服务器还是父代理服务器,也即parent(父) 还是 sibling(子);
3. http_port:hostname的监听端口;
4. icp_port:hostname上的icp监听端口,对于不支持icp协议的可指定7;
5. options:可以包含一个或多个关键字.
options可能的关键字有:
1. proxy-only:指明从peer得到的数据在本地不进行缓存,缺省地,squid是要缓存这部分数据的;
2. weight=n:用于你有多个peer的情况,这时如果多于一个以上的peer拥有你请求的数据时,squid通过计算每个peer的icp响应时间来 决定其weight的值,然后squid向其中拥有最大weight的peer发出icp请求.也即weight值越大,其优先级越高.当然你也可以手工 指定其weight值;
3. no-query:不向该peer发送icp请求.如果该peer不可用时,可以使用该选项;
4. default:有点象路由表中的缺省路由,该peer将被用作最后的尝试手段.当你只有一个父代理服务器并且其不支持icp协议时,可以使用default和
no-query选项让所有请求都发送到该父代理服务器;
5.login=user:password:当你的父代理服务器要求用户认证时可以使用该选项来进行认证.
curl -i http://www.xxx.com