红联Linux门户
Linux帮助

Linux平台部署varnish高性能缓存服务器

发布时间:2016-03-15 10:54:33来源:linux网站作者:特里

一:varnish部署前准备:

1.1.相关软件以及系统,web服务

系统要求:Centos 6(以上) (64位)

相关中间件:varnish-4.0.2

1.2.相关系统依赖包安装检查准备

1.2.1.检查系统自带nginx是否安装

rpm -qa | grep varnish

如有安装,请使用以下命令卸载相关程序

yum remove varnish -y

1.2.2.安装编译nginx需要的依赖包

 yum install libtool ncurses-devel pcre-devel ibedit-devel pkgconfig python-docutils python-sphinx automake autoconf  -y

1.2.3.安装好相关web服务

安装Apache,nginx,tomcat等都行,本文档的web安装在本地,使用的nginx web 端口为:8080


二:varnish 部署安装

2.1.下载varnish安装包

如有所示为varnish的官网:https://www.varnish-cache.org/releases,选择对应的varnish版本,本文档用的版本是varnish4.0.2

Linux平台部署varnish高性能缓存服务器

cd /usr/local/src
wget https://repo.varnish-cache.org/source/varnish-4.0.2.tar.gz

2.2.编译安装varnish

cd /usr/local/src
tar zxvf varnish-4.0.2.tar.gz
./configure CPPFLAGS="-I$PATH_TO_LIBEDIT/include" LDFLAGS="-L$PATH_TO_LIBEDIT/lib" \
--prefix=/usr/local/varnish4.0.2
make && make install

2.3.配置varnish的启动脚本

echo "/usr/local/varnish4.0.2/sbin/varnishd -P /var/run/varnish.pid -f /usr/local/varnish4.0.2/etc/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:80" > /usr/local/varnish4.0.2/sbin/varnishd.sh

2.4.将varnish以开机服务的形式启动,并加入系统服务

2.4.1.编辑/etc/init.d/varnishd

vim /etc/init.d/varnishd

2.4.2.在/etc/init.d/varnishd添加以下内容

#!/bin/sh
#chkconfig:345 85 15
#description: varnish cache server
# varnish
# Copyright (C) 2001-2014 varnish cache
#
SERVICE="varnish server"
DAEMON=/usr/local/varnish4.0.2/sbin/varnishd.sh
PIDFILE=/var/run/varnish.pid

case $1 in
'start')
if [ -x ${DAEMON} ]
then
$DAEMON
# Error checking here would be good...
echo "${SERVICE} started success ! "
else
echo "Can't find file ${DAEMON}."
echo "${SERVICE} NOT started."
fi
;;
'stop')
if [ -s ${PIDFILE} ]
then
if kill `cat ${PIDFILE}` >/dev/null 2>&1
then
echo "${SERVICE} shutdown success !"
rm -f ${PIDFILE}
fi
fi
;;
'restart')
$0 stop
sleep 10
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
;;
esac

2.4.3.编辑/usr/local/varnish4.0.2/etc/default.vcl添加以下内容

vcl 4.0;
backend webserver {
.host = "127.0.0.1";
.port = "8080";         //等同于后端web server
.connect_timeout = 4s; 
.first_byte_timeout = 5s; 
.between_bytes_timeout = 20s; 
}

2.4.4.启动varnishd 服务

service varnishd start


三:varnish验证测试

启动web服务

service nginx start

使用系统自带的命令curl -I localhost 如下所示:

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 04 Jan 2016 07:50:09 GMT
Content-Type: text/html
Last-Modified: Mon, 31 Aug 2015 03:55:55 GMT
ETag: "55e3d04b-264"
X-Varnish: 112 131182
Age: 80
Via: 1.1 varnish-v4

Content-Length: 612
Connection: keep-alive

本文如上红色部分,当X-varnish 后面出现两组数据的时候,说明缓存成功,这时我们在关掉web服务,数据会从varnish缓存里读取,如下

关闭web服务

service nginx stop

重新curl -I localhost 如果命中缓存,则如下所示:

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 04 Jan 2016 07:53:47 GMT
Content-Type: text/html
Last-Modified: Mon, 31 Aug 2015 03:55:55 GMT
ETag: "55e3d04b-264"
X-Varnish: 110 131182
Age: 8
Via: 1.1 varnish-v4
Content-Length: 612
Connection: keep-alive

当没有从缓存里命中时,会出现以下提示(没有命中缓存,则X-varnish后面数字为单组数字):

HTTP/1.1 503 Backend fetch failed
Date: Mon, 04 Jan 2016 07:55:59 GMT
Server: Varnish
Content-Type: text/html; charset=utf-8
Retry-After: 5
X-Varnish: 98457
Age: 0
Via: 1.1 varnish-v4
Content-Length: 282
Connection: keep-alive


至此整个varnish的部署安装基本就OK了。


本文永久更新地址:http://www.linuxdiyf.com/linux/18945.html