Varnish
一、虚拟机的封装
1、先配置母盘rhel6.5
这里我选择Network insatll
1)现在真机上将6.5镜像挂载到/var/www/html下
2)安装dhcp,配置好dhcp
3)Network insatll安装路径http://172.25.77.250:rhel6.5,选择最小化安装
4)将母盘配置好网络;yum源;本地解析;删除/etc/udev/rules.d/70..文件;安装你需要的软件vim、openssh-clients、lftp等;关闭selinux和iptables;完成后选择poweroff关机
5)清理:virt-sysprep -d rhel6.5
2、进行虚拟机的封装:
1)cd /var/lib/libvirt/images/ 执行 qemu-img create -f qcow2 -b rhel6.5.qcow2 vm1 封装
2)查看信息:qemu-img info vm1
3)选择import existing disk image安装
4)进入后改主机名和ip
此时,主机环境配置完毕
实验主机:172.25.77.1(server1) varnish
172.25.77.2 (server2) apache
172.25.77.1 (server1) apache
Vainish配置
第一个步骤:
1)server1上安装varnish
2) server2上安装apche
3)server1配置一个后端服务器
vimi /etc/varnish/default.vcl
backend web1 {
.host = "172.25.77.2";
.port = "80";
}
4)配置 varnish 服务端口
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
5)真机curl 172.25.77.1测试查看访问内容是不是server2apache发布目录的内容
步骤二:查看缓存命中的情况
server1
1) /etc/security/limits.conf里最后加入varnishi nofile 65535
2) /etc/sysconfig/varnihsi 将第八行改为65535
3)/etc/varnihsi/default.vcl加入查看缓存命中的情况 之后reload读取
4))真机测试curl 172.25.77.1 第一次MINSS 第二次HIT 表示成功
5)清除缓存命令:varnishadm ban.url .*$
步骤三:定义多个不同域名站点的后端服务器
1)server1安装apche服务,即做varnish也作apache服务。也可以在封装一个server3
编辑 vim /etc/httpd/conf/httpd.conf端口改为8080 避免80端口varnish冲突
2)/etc/varnihsi/default.vcl加入个不同域名站点的后端服务器:
当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 web2 取数据,
访问其他页面报错。
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";
}
}
3)真机编写本地解析
4)真机测试查看
步骤四:把多个后端聚合为一个组,并检测后端健康状况
1)server1在/etc/varnihsi/default.vcl加入:
return(pass)表示不进行缓存
2)真机测试查看是否可以进行健康检查
步骤五:varnish cdn 推送平台
1)server1安装php服务
2)更改php配置文件;将其放到/var/www/html下
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1,
);表示对主机列表进行绑定
3)真机网页查:172.25.77.8080:/varnish查看
步骤六:设置acl访问控制
1)server1 /etc/varnish/default.vcl 设置
ub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ westos) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
}
2)重新打开ip不再acl列表的机器进行访问查看