1
,有两种模式:
1)
Nginx(
负载
)+varish(
缓存
)+WEB
2)
Varish
(缓存和负载)
+web
Varish
的负载我没有试过,但是感觉用第一种模式可以取得更好的扩展性和高可用性。
Nginx
轮询转发到后台三台
varish
后连接三个
WEB
连接数据库
2
,
varish
是以内存作为共享容器的,内存的大小决定了它的缓存容量。相对于主要以硬盘为存储的
squid
来说要高效的多。它适合一些经常查询且变化不大的静态内容缓存。
Nginx
图片和静态文本给
varish
后端是
WEB
的
8080
端口
动态内容给后端
WEB
后端是
WEB
的
8080
端口
这个架构要看服务器和存储内容,如果
nginx
不用做反向代理以支持后台诸多应用的话,那么单就
nginx
来说,利用
proxy_cache
模块也可以支持本地缓存。它缓存在硬盘上,性能和
squid
相差不大,但是稳定性和易用性要好的多。
3
,安装
varish
1
)
创建用户和组,赋予权限
groupadd www
useradd -g www www
mkdir -p /car/vcache
chown -R www:www /var/vcache
2
)创建
varnish
日志目录并授权
mkdir -p /var/log/varnish
chmod +w /var/log/varnish
chown -R www:www /var/log/varnish
3
)
编译安装
varnish
tar zxvf varnish- 1.1.2 .tar.gz
cd varnish- 1.1.2
./configure --prefix=/usr/local/varnish
make && make install
4
)
创建并修改配置文件
vi /usr/local/varnish/vcl/conf
backend default { #
通过反向代理请求后端
IP
为
192.168.0.5
,
80
端口的
WEB
服务器
,
可以是本机
,
也可以是后台
.host = "192.168.0.151";
.port = "81";
}
acl purge { #
允许这三个来源的
IP
通过
PURGE
方法清除缓存
"localhost";
"127.0.0.1";
"192.168.1.0"/24;
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed."; #405
错误显示
}
return(lookup);
}
if (req.http.host ~ "^blog.s135.com") {
set req.backend = default;
if (req.request !=
"GET" && req.request != "HEAD") {
return(pipe);
}
else {
return (lookup);
}
}
else {
error 404 "Not in cache"; #404
错误显示
return(lookup);
}
}
sub vcl_hit {
if (req.request == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache.";
}
}
sub vcl_fetch {
if (req.request == "GET" && req.url ~ "\.(txt|js)$") {
set obj.ttl = 3600s; #
对于
txt
和
js
缓存一个小时
}
else {
set obj.ttl = 30d; #
其余的缓存一天
}
}
Varnish
对
HTTP
协议中的
GET
、
HEAD
请求进行缓存
,
对
POST
请求透过
,
让其直接访问后端
Web
服务器。之所以这样配置,是因为
POST
请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存;
5
)启动
ulimit -SHn 51200
/usr/local/varnish/sbin/varnishd -a :80 -b 192.168.0.151:81 -p thread_pool_max=1500 -p thread_pools=5 -p listen_depth=512 -w 1,10000,120
6
)
将访问日志写入访问文件
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/log/varnish/varnish.log &
7
)查看状态
8
)测试
我们用
varish
监听
80
端口,同时将数据来源转向到监听
81
端口的
Apache
访问主页
本文出自 “西瓜皮” 博客,谢绝转载!