这篇文章包括四个小节
1、后端服务器
2、启动
varnish
3、记录数据
4、使
varnish工作在
80端口
二、varnish指南
Varnish是一个
web加速器,被安装在
web应用程序前面,缓存
web应用程序,并响应用户请求,
varnish让您的
web应用程序运行的更快,并且
varnish灵活好用。
这个指南没有覆盖所有的
varnish函数和功能,它可以让您对
varnish有个全面的认识并且掌握如何运用它。
我们假设您有一个
web服务器和
web应用程序正在运行,而且您想使用
varnish给您的
web运行程序加速。
此外我们还假设您已经阅读了“
varnish安装”并且按照默认配置安装了
varnish。
●Backend servers(后端服务器)
varnish有一个概念叫做“后端服务器”或者叫“原点服务器”,一个后端服务器将提供
varnish加速的内容。
我们的第一个任务就是告诉
varnish在哪里可以找到他要的内容。使用您喜欢的文本编辑器打开
varnish默认的配置文件,如果您是源码安装的配置文件可能在
/usr/local/etc/varnish/default.vcl
,如果您是二进制包安装的配置文件可能在
/etc/varnish/default.vcl.
配置文件的最顶端如下:
# backend default {
# .host = "127.0.0.1";
# .port = "8080";
# }
我们取消前面的注释,并且把
8080端口改成
80端口。如下
backend default {
.host = "127.0.0.1";
.port = "80";
}
现在,这块配置定义了一个varnish默认访问的后端服务器,当varnish需要从后端服务器获取内容的时候,它就会访问自己(127.0.0.1)的80端口。
Varnish可以定义多个后端服务器而且您可以通过定义多个后端服务器达到负载均衡的目的。
现在我们完成了基本的varnish配置,我们可以在8080端口上启动varnish,并做一些基本的测试。
●Starting Varnish(启动varnish)
假设
varnishd在您的环境变量中,您可能需要运行
pkill varnishd
来确定
varnish没有运行。然后使用
root执行下面的命令。
varnishd -f /usr/local/etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:8080
我添加了一些选项,现在来详细分析他们:
-f /usr/local/etc/varnish/default.vcl
这个
–f 选项指定
varnishd使用哪个配置文件。
-s malloc
,
1G
这个
–s 选项用来确定
varnish使用的存储类型和存储容量,我使用的是
malloc类型(
malloc是一个
C函数,用于分配内存空间),
1G 定义多少内存被
malloced,
1G = 1gigabyte。
-T 127.0.0.1
:
2000
Varnish有一个基于文本的管理接口,启动它的话可以在不停止
varnish的情况下来管理
varnish。您可以指定管理软件监听哪个接口。当然您不能让全世界的人都能访问您的
varnish管理接口,因为他们可以很轻松的通过访问
varnish管理接口来获得您的
root访问权限。我推荐只让它监听本机端口。如果您的系统里有您不完全信任的用户,您可以通过防火墙规则来限制他访问
varnish的管理端口。
-a 0.0.0.0
:
8080
这一句的意思是制定
varnish监听所有
IP发给
8080端口的
http请求,如果在生产环境下,您应该让
varnish监听
80,这也是默认的。
现在您的varnish已经在运行了,现在我们来验证它是否工作正常,在留言其中输入http://192.168.2.2:8080/ ,您应该可以看见您的web程序在这里运行。
使用varnish后,web应用程序是否加速,取决于一些原因。如果您的程序的每个会话都使用cookies或者您每个程序都需要三次握手认证,这样varnish就不能缓存更多的数据,我们暂时忽略这个问题,等到“提高缓存命中率”这节的时候我们再继续讨论这个问题。
想要知道varnish对您的网站做了什么,请查看logs。
●Logging in varnish(记录数据)
Varnish一个真正的特点就是它如何记录数据的。使用内存段代替普通的日志文件,当内存段使用完以后,又从头开始,覆盖最旧的记录。这样就可以非常快的记录数据,,并且不需要磁盘空间。
缺点就是您没有把数据写到磁盘上,可能会消失。(
varnish也支持将数据写到硬盘的文件上,看您如何选择)
Varnishlog这个程序可以查看
varnish记录了哪些数据。
Varnishlog给您生成原始的日志,包括所有的事件。
我一会给您演示。
在运行了varnish的终端窗口上,运行varnishlog这个命令。
您可以看见如下显示
0 CLI - Rd ping
0 CLI - Wr 200 PONG 1277172542 1.0
这是检查varnish的主进程是否正常,如果看见这就说明一切OK
现在您去浏览器通过varnish重新访问您的web程序,您将看到如下信息:
11 SessionOpen c 127.0.0.1 58912 0.0.0.0:8080
11 ReqStart c 127.0.0.1 58912 595005213
11 RxRequest c GET
11 RxURL c /
11 RxProtocol c HTTP/1.1
11 RxHeader c Host: localhost:8080
11 RxHeader c Connection: keep-alive
第一列是任意的数,它用来定义请求,相同的号码代表相同的HTTP传输。
第二列是信息标记,所有的日志都带有一个标记(tag),标记对应相对的操作。Rx表示varnish收到数据,Tx表示varnish发送数据。
第三列代表数据是从哪里传出或者传入的,是从c(client)还是b(backend)。
第四列是被记录的数据。
现在,您可以过滤掉相当多的varnishlog,这些基本的选项,您需要知道:
-b \\只显示
varnish和
backend server之间的日志,当您想要优化命中率的时候可以使用这个参数。
-c \\和
-b差不多,不过它代表的是
varnish和
client端的通信。
-i tag \\只显示某个
tag,比如“
varnishlog –i SessionOpen”将只显示新会话,注意,这个地方的
tag名字是不区分大小写的。
-I \\通过正则表达式过滤数据,比如“
varnishlog -c -i RxHeader -I Cookie”将显示所有接到到来自客户端的包含
Cookie单词的头信息。
-o \\聚合日志请求
ID
如果
varnish一切运行
OK,我们就可以把它调整到
80端口上。
●PutVarnish on port 80(使varnish工作在80端口上)
如果您的程序正常运行,没有问题,我们就可以把
varnish调整到
80端口运行。先关闭
vernish
pkill varnishd
然后停止您的
web服务器,修改
web服务器配置,把
web服务器修改成监听
8080端口,然后修改
varnish的
default.vcl和改变默认的后端服务器端口为
8080.
先启动您的
web服务器,然后在启动
varnish:
varnishd -f /usr/local/etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000
我们取消了
-a 选项,这样
varnish将监控默认端口,启动后,检查您的
web程序是否正常。
|