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

[经验分享] varnish来实现缓存服务器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-8 09:46:10 | 显示全部楼层 |阅读模式
缓存服务器varnish,squid,

sandow的博客新地址http://gsandow.com/
varnish squid 简单介绍

Varnish是一款高性能、开源的反向代理服务器和缓存服务器.其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish采用全新的软件体系结构,和现在的硬件体系配合比较紧密。Varnish采用VCL的配置,而且具有强大的管理功能,如top、stat、admin、lis,管理方式比较灵活。Varnish的状态机设计不仅巧妙,结构也很清晰,利用二叉堆管理缓存文件,即可达到随时删除的目的。。目前Varnish3.0版本解决了服务器重启后Varnish缓存消失的问题,性能优化上有了更大的提升。

Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。
varnish主页

squid
补充

Varnish和Squid的对比

    Varnish和Squid在完成相同负载的工作时,Squid服务器发生故障的几率要高于Varnish,因此Squid需要经常重启。

    Varnish访问速度更快,Varnish采用了 Visual Page Cache技术,所有缓存的数据都直接从内存读取,而Squid从硬盘读取缓存的数据,Varnish在访问速度方面会更快一些。

    Varnish可以支持更多的并发连接,因为Varnish的TCP连接与释放比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。

    Varnish可以通过管理端口来管理缓存,使用正则表达式就可以批量清除部分缓存,而Squid做不到这一点。
     

安装与部署varnish

主机环境:

$ uname -r
2.6.32-573.el6.x86_64
$ cat /etc/redhat-release
CentOS release 6.7 (Final)

varnish官网

    安装varnish

    $ rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el6.rpm
    $ yum install varnish

    对于是Ubuntu系统,可以执行以下命令来安装:
    curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -echo “debhttp://repo.varnish-cache.org/ubuntu/ precise varnish-3.0” | sudo tee -a /etc/apt/sources.listsudo apt-get updatesudo apt-get install varnish

    把文件备份

    $ cp /etc/varnish/default.vcl /etc/varnish/default.vcl.backup
    $ cp /etc/sysconfig/varnish /etc/sysconfig/varnish.backup

    开启varnish

/etc/init.d/varnish start
[iyunv@varnish ~]# netstat -tanp|grep varnish
tcp        0      0 0.0.0.0:6081                0.0.0.0:*                   LISTEN      1640/varnishd      
tcp        0      0 127.0.0.1:6082              0.0.0.0:*                   LISTEN      1639/varnishd      
tcp        0      0 :::6081                     :::*                        LISTEN      1640/varnishd  

这里要注意一下,有可能会报错

[iyunv@nginx01 varnish]# /etc/init.d/varnish start
Starting Varnish Cache:                                    [FAILED]

那么就查看下日志吧

[iyunv@nginx01 lib]# varnishlog
Can't open VSM file (Cannot open /var/lib/varnish/nginx01/_.vsm: No such file or directory
)

什么情况,为什么没有这个目录,既然没有那么就手动创建一个呗然后再启动,发现还是不行,我擦
这是什么情况,好吧,那么手动执行一下试试。。。

[iyunv@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
Message from VCC-compiler:
Unused acl purge, defined:
('input' Line 20 Pos 5)
acl purge {
----#####--

Running VCC-compiler failed, exited with 2

VCL compilation failed
[iyunv@nginx01 varnish]# vim /etc/varnish/default.vcl
[iyunv@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
Platform: Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
200 280     
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
varnish-4.0.3 revision b8c4a34

Type 'help' for command list.
Type 'quit' to close CLI session.
Type 'start' to launch worker process.

我快崩溃不这是为什么呢。。。找了半天原因,原来是selinux没有半,我擦,看来不关的确会出很多问题啊,关闭后就没有出此问题啦。完美解决。
varnish 在github rackspace cookbook
selinux cookbook

    接下来要做的,就是修改apache的监听端口,将varnish监听端口指向80,将apache监听端口指向一个其他端口,再将varnish出口端口指向apache指向的端口。这样,client–>端口80–>varinsh检测cache–>apache->client

$ vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80

$ vim /etc/varnish/default.vcl
backend default {
.host = "127.0.0.1";
.port = "8880";
}

$ vim /etc/httpd/conf/httpd.conf
Listen *:8880
<VirtualHost *:8880>
ServerAdmin gsandow.com
DocumentRoot /data/www/html/
ErrorLog logs/sample-error.log
CustomLog logs/sampleaccess_log common
</VirtualHost>

介绍下varnish配置信息:

查看varnish的各种命令

[iyunv@apache01 blog]# ll /usr/bin/varnish*
-rwxr-xr-x 1 root root  23656 Feb 18  2015 /usr/bin/varnishadm
-rwxr-xr-x 1 root root  29824 Feb 18  2015 /usr/bin/varnishhist
-rwxr-xr-x 1 root root  32576 Feb 18  2015 /usr/bin/varnishlog
-rwxr-xr-x 1 root root  45344 Feb 18  2015 /usr/bin/varnishncsa
-rwxr-xr-x 1 root root  32224 Feb 18  2015 /usr/bin/varnishstat
-rwxr-xr-x 1 root root 132544 Feb 18  2015 /usr/bin/varnishtest
-rwxr-xr-x 1 root root  41632 Feb 18  2015 /usr/bin/varnishtop

varnish命令:

    varnishadm 管理Varnish后端的工具 telnet也可以(下面详细介绍)

    varnishhist 查看Varnish命中的工具 运行可以看到一张柱状描绘图,|表示缓存命中,#表示未命中,横向代表时间。 【非常有用】

    varnishlog 实时显示varnish的请求日志

    varnishncsa 以Apache标准的格式combined输出日志

    varnishstat 查看状态、参数等,具体查阅百度。【非常有用】

    varnishtop 类似top工具,查看varnish相关进程的资源、运行等状况。

文件位置:

    /etc/varnish/ 存放varnish VCL配置文件

    /etc/sysconfig/varnish 【CentOS】 存放varnish服务器运行的参数

    /etc/default/varnish 【Ubuntu】 存放varnish服务器运行的参数

    /usr/sbin/varnishd varnish服务器执行文件

    /etc/init.d/varnish 运行程序

运维网声明 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.iyunv.com/thread-148306-1-1.html 上篇帖子: Linux终端:用cat命令查看不可见字符 下篇帖子: umount 时出现的 “Device is busy” 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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