配置varnish
(1)在server1中安装varnish
varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
yum install varnish-*
(2)修改varnish监听端口为80
vim /etc/sysconfig/varnish
(3)查看内核允许打开文件的最大数
sysctl -a | grep file
查看varnish能打开的最大文件数
增大内存可以增加打开文件最大数
4)设置主机安全限制
cd /etc/security/
vim limits.conf
##在最后添加
varnish - nofile 131072
varnish - memlock 82000 ##default log size
varnish - nproc unlimited ##maximum number of threads
5)设置varnish 默认文件 ##修改varnish监听的网络服务器的ip
cd /etc/varnish/
vim default.vcl
反向代理172.25.38.2
/etc/init.d/varnish start ##开启服务
pa -ax | grep varnish ##查看varnish开启的进程
一个root进程 监听子进程当子进程产生错误关闭时 root进程再fork一个
cat /proc/1111/status ##查看进程信息
6)在 172.25.38.2中安装apache ##server2作为网络服务器
设置主页
vim /var/www/html/index.html
/etc/init.d/httpd start ##开启服务
7)在页面中访问172.25.38.1
实验 查看缓存命中情况
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.38.2";
.port = "80";
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
重新加载varnish
/etc/init.d/varnish reload
客户端测试
添加本地解析
172.25.38.1 server1 www.westos.org bbs.westos.org
curl -I www.westos.org
curl -I www.westos.org
##在服务端
varnishadm ban.url .*$ ###手动清除全部缓存
varnishadm ban.url /index.html
实验 定义多个不同域名站点的后段服务器
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.38.2";
.port = "80";
}
backend web2 {
.host = "172.25.38.3";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}
/etc/init.d/varnish reload
server2:配置网络服务器
server3:配置网络服务器
测试主机:添加本地解析
curl www.westos.org
curl bbs.westos.org
实验 负载均衡设置轮播
server1:
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.38.2";
.port = "80";
}
backend web2 {
.host = "172.25.38.3";
.port = "80";
}
director lb round-robin {
{.backend = web1;}
{.backend = web2;}
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb; ##使用lb
return(pass); ##一般不会设置,只为看轮播效果
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}
server2:
vim /var/www/html/index.html
server3:设定虚拟主机 使bbs.westos.org访问另一个页面
vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www
ServerName www.westos.org
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org
</VirtualHost>
mkdir /www /bbs
vim /www/index.html
vim /bbs/index.html
/etc/init.d/httpd restart
测试主机:设置域名解析
curl www.westos.org
curl www.westos.org
curl bbs.westos.org
##使用bansys.zip进行批量推送清除缓存
server1:
yum install httpd,php,unzip
unzip bansys.zip -d /var/www/html
cd /var/www/html
mv * ../
cd ..
rm -rf bansys
vim config.php
<?php
//varnish主机列表
//可定义多个主机列表
$var_group1 = array(
'host' => array('172.25.38.1'),
'port' => '8080',
);
//varnish群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1,
);
//varnish版本
//2.x和3.x推送命令不一样
$VAR_VERSION = "3";
?>
vim /etc/http/conf/http.conf
Listen 8080 ##防止与varnish设置的80端口冲突
vim /etc/varnish/default.vcl
acl westos {
"127.0.0.1";
"172.25.38.0"/24; ##设置允许哪些用户修改
}
backend web1 {
.host = "172.25.38.2";
.port = "80";
}
backend web2 {
.host = "172.25.38.3";
.port = "80";
}
sub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ westos) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
}
/etc/init.d/httpd restart
/etc/init.d/varnish reload
在浏览器中输入
172.25.38.1:8080