varnish是一款高性能、开源的反向代理服务器和缓存服务器。它可以通过将常用的合适的内容缓存到内存,以减少响应时间和网络宽带的消耗。
一、varnish实现CDN加速(缓存)
实验环境:
客户端
varnish端(缓存端)
服务器端
实验步骤:
varnish端:
1、下载安装varnish软件
yum install varnish-3.0.5-1.el6.x86_64.rpm -y
yum install varnish-libs-3.0.5-1.el6.x86_64.rpm -y
2、修改varnish监听端口为80
vim /etc/sysconfig/varnish
66行:VARNISH_LISTEN_PORT=80
3、查看内核允许打开文件的最大数
sysctl -a | grep file
增大内存可以打开的最大数
将server1的memory改为2048
4、修改vernish的安全配置文件
vim /etc/security/limits.con
在最后添加如下图:
5、修改varnish默认文件,配置单个后端服务器
vim /etc/varnish/default.vcl #为varnish默认文件
backend default {
.host = "172.25.64.2"; #要访问的服务器IP
.port = "80"; #80端口
}
6、重启varnish服务
/etc/init.d/varnish restart
在服务器端的配置
1、安装httpd
yum install httpd -y
2、在默认发布目录发布内容
cd /var/www/html
vim index.html
添加内容:
<h1>server2.varnish</h1>
3、启动httpd
/etc/init.d/httpd start
在客户端测试
curl 172.25.60.1
清除缓存
varnsh的有缓存,为了清楚的看到效果,我们做一些设置
####在varnish主机上
vim /etc/varnish/default.vcl
添加函数如下:
体现出数据从哪里来的
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "--->varnish";
}
else {
set resp.http.X-Cache = "--->http";
}
return (deliver);
}
####客户端测试:
在varnish上先清除缓存
varnishadm ban.url .*$ #清除所有缓存
varnishadm ban.url /index.html #清除网页的缓存
第一次
之后:
二、varnish实现cdn负载均衡
实验环境:
varnish端
客户端
服务器端
服务器端
在varnish端:
1、添加服务器
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.60.2";
.port = "80";
}
backend web2 {
.host = "172.25.60.3";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?server2.com") {
set req.http.host = "www.server2.com";
#如果域名是www.server2.com,访问web1
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.server3.com") {
#如果域名是bbs.server3.com
set req.backend = web2; #访问web2
} else {error 404 "server cache"; #其他404报错
}
}
sub vcl_deliver {
/etc/init.d/varnish reload #重新加载
配置server2
1、下载httpd
yum install httpd -y
2、发布默认文件
vim /var/www/html/index.html
添加内容:
<h1>server2.varnish</h1>
3、启动httpd
/etc/init.d/httpd start
配置server3
1、下载httpd
yum install httpd -y
2、发布默认文件
vim /var/www/html/index.html
添加内容:
<h1>我是server3</h1>
3、启动httpd
/etc/init.d/httpd start
客户端测试
1、编写本地解析
因为是本地实验,域名是自己编的,电脑不认识,我们就手动让它认识!
vim /etc/hosts
172.25.60.1 www.server2.com
172.25.60.1 bbs.server3.com
2、通过域名访问varnish代理机
实现负载均衡
在server1上
vim /etc/varnish/default.vcl
在里面添加轮巡函数:
director lb round-robin { ##轮询 添加进去
{ .backend = web1; }
{ .backend = web2; }
}
修改:
sub vcl_recv {
if (req.http.host ~ "^(www.)?server2.com") {
set req.http.host = "www.server2.com";
set req.backend = lb;
启用轮询,当域名为www.server2.com时
return (pass); ##为了方便测试,此处不做缓存
/etc/init.d/varnish reload
在客户端测试:(发现可以轮巡)
三、配置一个主机提供多个域名服务
在server3上
vim /etc/httpd/conf/httpd.conf
在大概1000行: NameVirtualHost *:80
添加:
<VirtualHost *:80>
DocumentRoot /www
ServerName www.westos.org
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /bbs 发布目录
ServerName bbs.westos.org #域名
</VirtualHost>
mkdir /www
mkdir /bbs
vim /bbs/index.html
添加发布的内容
vim /www/index.html
添加发布的内容
/etc/init.d/httpd restart
在主机上:
编写本地域名解析
vim /etc/hosts
172.25.60.3 www.westos.org
172.25.60.3 bbs.westos.org
访问域名: