设为首页 收藏本站
查看: 1618|回复: 0

[经验分享] 浅谈Squid在图片存储架构中的应用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-12-28 09:49:06 | 显示全部楼层 |阅读模式
  从我的独立博客中同步过来的,一起探讨
  将近快一个月没写文章了,太懒散了,今天振作了一下,写了篇关于Squid的文章,Squid作为分布式代理缓存服务器真的非常的棒,希望本文对你有帮助。
  版权声明:非商业自由转载,保留原文内容完整性,并署名作者王国峰和原文链接
  前言
  上一篇我表明了自己对缓存的立场:缓存一切可以缓存的资源。并讨论了如何利用IIS自身的缓存功能来轻松满足中小规模的图片缓存需求。关于IIS的客户端缓存和服务器端缓存的介绍大家可以回顾这篇文章。自从上一篇文章发表后,有不少朋友向我反馈:用IIS自身的缓存功能负载有限,建议使用Varnish或Squid。是的,我非常同意,所以我今天就和大家来探讨一下分布式代理缓存服务器Squid在图片存储架构中的应用,文中的一些观点,如有错误,敬请指出,谢谢。
  Squid简介
  Squid是一款高性能分布式代理缓存服务器,它一般用来做前置Web Cache,加快用户访问Web的速度。为了说明其运行过程,我将仍旧沿用我前一篇的YD风格,再一次请出人见人爱、花见花开、车见爆胎的空空老师,请读者自觉送出掌声:
Squid君是时下最受欢迎的空空作品代理人,为了让所有空空迷能更快捷地欣赏到高质量的空空作品,Squid君天天加班加点,整理和保存空空的最新作品,并对其作进一步的优化处理,比如去码。  有一天,我无聊至极,便打电话给Squid君,向他要最新的空空写真图(向Squid发出下载请求);
  Squid君仔细辨别了一下我的声音,发现是老朋友,于是便答应了我的请求(Squid中的ACL访问控制,只接受合法的请求);
  Squid君对我说他手头刚好有一周前的空空写真,问我看过没有,我说发过来看看呗,于是他很快发给了我(Squid缓存命中,下载极快,哦耶!);
  我收到写真图,发现是两天前已经看过了的,于是告诉Squid君要最新的,Squid君看了看库存,发现手头没有最新的了,于是就说让我等一会儿,他去问问其他的代理兄弟有没有,我说好的,谢谢(Squid支持分布式集群方式,各个父子节点、兄弟节点之间的缓存数据可以互相同步);
  结果空欢喜一场,他回来和我说其他兄弟也没有,当我非常失落的时候,他突然说空空今天来杭州,他可以直接向空空要写真,我一开心就对他说,快去快去(当Squid缓存不命中时,只能从源服务器获取数据);
  过了好久,Squid君回来了,他说见空空的人实在太多了,排了好久的队才拿到她最新的写真图呢,我谢过之后他就把写真很快地发给了我。之后他说他一定要把这个写真保存起来,以便提供给其他空空迷和其他兄弟代理(Squid会把从源服务器获取的数据保存到自己的缓存中,如果下一个用户提出同样的下载请求,Squid直接把缓存中的数据给用户,当然也可以把数据奉送给其他兄弟代理,独乐乐不如众乐乐)。
  到这里,我相信你已经大概明白Squid的工作过程了吧,下面我就对Squid特点做一下简要概括:

  •   开源,基于GNU通用公共许可证,意味着你可以在同等开源协议下使用和修改Squid。
  •   支持多种协议,目前支持http、ftp、gopher、wais、ssl等网络协议。
  •   支持分布式集群,Squid使用TCP(HTTP)和UDP(ICP/HTCP)通讯来确定邻居cache的状态。
  •   支持访问控制,通过设置ACL和ARL来限制某些访问。
  Squid官方网站:http://www.squid-cache.org/
  你可以在官网上下载Squid以及阅读相关文档,当然接下来我也会用Chinese向大家介绍Squid的用法。
  Squid配置详细说明
  下面是一份详细的Squid的配置清单及其说明:

  •   #http_port指令告诉squid在哪个端口侦听HTTP请求。默认端口是3128,除下面的形式外,也可以是http_port 192.168.63.50:3128
  •   http_port 3128
  •   icp_port 3130

  •   #缓存目录的设置,可以设置多个缓存目录,语法为:     
  •   cache_dir ufs /var/spool/squid 1000 64 1024

  •   #下面是关于日志文件的放置目录与文件名!
  •   cache_access_log /var/log/squid/access.log
  •   cache_log /var/log/squid/cache.log
  •   cache_store_log /var/log/squid/store.log
  •   pid_filename /var/run/squid.pid

  •   #关闭认证机制,有些版本的 squid 会自动的加入代理认证机制,而普通情况下是不需要的,故找到包括auth_param的行,给它们加上注释
  •   #auth_param basic children 5
  •   #auth_param basic realm Squid proxy-caching web server
  •   #auth_param basic credentialsttl 2 hours

  •   #设置squid用户及用户组、管理员账号
  •   cache_effective_user squid
  •   cache_effective_group squid
  •   cache_mgr youraccount@your.e.mail

  •   # 与内存有关的配置:因为我的系统内存很小,所以只给 8 MB!如果您的物理内存很大的情况下,例如 512 MB,可以考虑加大到 64 或 128 MB。
  •   cache_mem 128 MB

  •   # 与磁盘容量有关的配置(注:下列的 90 与 95 是百分比 ),如果您的 cache_dir 所在磁盘很大时,可以考虑将 4096 改成 32768 KB
  •   cache_swap_low 90
  •   cache_swap_high 95
  •   maximum_object_size 4096 KB

  •   # 与内存保存资料有关的配置
  •   maximum_object_size_in_memory 8 KB

  •   #定义acl(访问控制列表), 语法为:acl   
  •   #黑体为用户自定义部分

  •   acl All src 0/0
  •   acl Manager proto cache_object
  •   acl Localhost src 127.0.0.1/32
  •   acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 1025-65535
  •   acl SSL_ports 443 563
  •   acl CONNECT method CONNECT
  •   acl MyNetwork src 192.168.0.0/16

  •   #利用前面定义的acl,定义访问控制规则
  •   http_access allow Manager Localhost
  •   http_access deny Manager
  •   http_access deny !Safe_ports
  •   http_access deny CONNECT !SSL_ports
  •   http_access allow MyNetwork
  •   http_access deny All

  •   #定义与其它代理服务器的关系,语法:      
  •   cache_peer 192.168.60.6 parent 4480 7 no-query default

  •   #设置与其它代理服务器的关系:
  •   #   
  •   #cache_peer_access 192.168.60.6 allow aclxxx
  •   #cache_peer_access 192.168.60.6 deny !aclxxx

  •   coredump_dir /var/spool/squid
  注意:以上的配置说明来自这里。
  配置好以后,我们就可以启动squid了,启动的步骤如下:
  1). 我们可以运行下面的命令来检查配置文件的正确性:

  •   # squid -k parse
  只有这一步正确你才可以进行下一步的操作
  2). 初始化cache目录.即建立缓存目录的存储格式
  只需在第一次启动squid服务之前执行(在初次运行squid之前,或者无论何时你增加了新的cache_dir,你必须初始化cache目录。)

  •   # squid -z
  cache目录初始化可能花费一些时间,依赖于cache目录的大小和数量,以及磁盘驱动器的速度。假如你想观察这个过程,请使用-X选项:

  •   # squid -zX
  3). 启动squid服务

  •   # service squid start
  假定squid安装在/usr/local/squid目录下,也可以

  •   # /usr/local/squid/sbin/squid -sD
  最后,我推荐你去看看Squid权威指南,并希望你可以利用Squid成功搭建一个分布式图片缓存系统,Squid真的很棒!
  为了你和你家人的健康,转载请注明原文出处:http://www.itivy.com/ivy/archive/2012/3/10/squid-usage.html
  另外,我觉得你可能还会对下面架构相关的文章感兴趣:
  优酷网架构学习笔记
  百万级访问量网站的技术准备工作
  Facebook图片存储架构的学习
  facebook图片存储架构技术全解析
  全文完,谢谢阅读!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656744-1-1.html 上篇帖子: 减少Linux下Squid服务器的TIME_WAIT 下篇帖子: Squid中的日志出现TCP_CLIENT_REFRESH_MISS的问题排除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表