一.用varnish实现cdn加速概念

CDN的全称是Content Delivery Network,即内容奋发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
严格意义上说,Varnish是一个高性能的反向代理软件,只不过与其出色的缓存功能相比,企业更愿意使用其搭建缓存服务器。同时,由于其工作在Web Server的前端,有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一。

二.用varnish实现cdn加速过程

1.准备环境
参考上一篇linux运维企业篇——环境配置 虚拟机封装
建立3个子虚拟机
在真机中用ssh命令连接三个虚拟机
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
server1中:
检查server1中的selinux和防火墙状态是否关闭
linux运维企业篇——网站加速器:varnish实现cdn加速

2.安装varnish服务
下载好安装包并安装

varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm
linux运维企业篇——网站加速器:varnish实现cdn加速

yum install -y varnish-*

linux运维企业篇——网站加速器:varnish实现cdn加速
查看varnish的配置文件
linux运维企业篇——网站加速器:varnish实现cdn加速

vim /etc/sysconfig/varnish

linux运维企业篇——网站加速器:varnish实现cdn加速
图中显示了程序运行的限制信息

NFILES=131072
MEMLOCK=82000 # 锁定共享内存大小
NPROCS=‘’unlimited‘’ #最大线程数为不限制

linux运维企业篇——网站加速器:varnish实现cdn加速
3.查看内核允许打开文件的最大数
查看系统能打开的文件数和上图相差甚远,增大内存可以增加打开文件最大数
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
重新连接vm1快照并查看可打开的最大文件数
linux运维企业篇——网站加速器:varnish实现cdn加速
4.查看server1锁定共享内存大小
锁定共享内存大小为64,和varnish文件中的相差甚远
linux运维企业篇——网站加速器:varnish实现cdn加速

5.修改varnish监听端口为80
linux运维企业篇——网站加速器:varnish实现cdn加速
66行
linux运维企业篇——网站加速器:varnish实现cdn加速
6.更改主机安全限制

cd  /etc/security/
vim limits.conf

linux运维企业篇——网站加速器:varnish实现cdn加速
在文件最后加上

varnish		-	nofile		131072
varnish		-	memlock		82000
varnish		-	nproc		unlimited

linux运维企业篇——网站加速器:varnish实现cdn加速
7.设置varnish 默认文件
修改varnish监听的网络服务器的ip

cd /etc/varnish/
vim default.vcl

linux运维企业篇——网站加速器:varnish实现cdn加速
更改反向代理 .host=“172.25.6.2”

linux运维企业篇——网站加速器:varnish实现cdn加速
开启varnish服务

/etc/init.d/varnish start  

linux运维企业篇——网站加速器:varnish实现cdn加速

ps aux # 查看进程,找出varnish的两个进程,一个是root还有一个是varnish

linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速

ps -ax | grep varnish   ##也可以查看varnish开启的进程

linux运维企业篇——网站加速器:varnish实现cdn加速
一个root进程 监听子进程当子进程产生错误关闭时 root进程再fork一个
cat /proc/1027/status ##查看进程信息

linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速

netstat -tnlp  #查看端口是否打开(80端口)

linux运维企业篇——网站加速器:varnish实现cdn加速
补充:安装varnish后会自动建立一个varnish用户
linux运维企业篇——网站加速器:varnish实现cdn加速
8.在server2中
下载httpd
linux运维企业篇——网站加速器:varnish实现cdn加速
设置主页

linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
开启httpd服务
linux运维企业篇——网站加速器:varnish实现cdn加速
测试:
linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速

9.在server1中
编辑varnish的默认文件
linux运维企业篇——网站加速器:varnish实现cdn加速

backend default {
  .host = "172.25.6.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);
}

linux运维企业篇——网站加速器:varnish实现cdn加速
重新加载varnish配置

/etc/init.d/varnish reload

linux运维企业篇——网站加速器:varnish实现cdn加速
10.在真机中测试

curl -I 172.25.6.1 #Age表示第一次访问的时间开始以秒计数,默认是120秒刷新一次缓存

linux运维企业篇——网站加速器:varnish实现cdn加速
手动清除缓存:

varnishadm ban.url .*$  #手动清除全部缓存

linux运维企业篇——网站加速器:varnish实现cdn加速
可以看出缓存是MISS
linux运维企业篇——网站加速器:varnish实现cdn加速
访问index.html文件

curl -I 172.25.6.1/index.html

linux运维企业篇——网站加速器:varnish实现cdn加速

varnishadm ban.url /index.html #手动清除index.html的缓存

linux运维企业篇——网站加速器:varnish实现cdn加速
可以看出缓存是MISS
linux运维企业篇——网站加速器:varnish实现cdn加速
11.多个web服务器 配置网络服务 群组
在server3中下载安装httpd
linux运维企业篇——网站加速器:varnish实现cdn加速
设置server3的默认界面
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
开启httpd服务
linux运维企业篇——网站加速器:varnish实现cdn加速
在server1中配置varnish默认文件
linux运维企业篇——网站加速器:varnish实现cdn加速

backend web1 {
  .host = "172.25.6.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.6.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";
}
}

linux运维企业篇——网站加速器:varnish实现cdn加速

重新加载varnish配置

/etc/init.d/varnish reload

linux运维企业篇——网站加速器:varnish实现cdn加速在真机中添加本地解析

vim /etc/hosts

172.25.6.1 server1 www.westos.org bbs.westos.org

linux运维企业篇——网站加速器:varnish实现cdn加速

在真机中测试:

curl -I www.westos.org
curl -I bbs.westos.org

linux运维企业篇——网站加速器:varnish实现cdn加速

12.负载均衡设置轮循
在seerver1中设置varnish默认文件
vim /etc/varnish/default.vcl

backend web1 {
  .host = "172.25.6.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.6.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";
}
}

linux运维企业篇——网站加速器:varnish实现cdn加速

重新加载varnish配置

/etc/init.d/varnish reload

linux运维企业篇——网站加速器:varnish实现cdn加速
在server3中设定虚拟主机 使bbs.westos.org访问另一个页面

vim /etc/httpd/conf/httpd.conf

linux运维企业篇——网站加速器:varnish实现cdn加速

<VirtualHost *:80>
    DocumentRoot /www
    ServerName www.westos.org
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /bbs
    ServerName bbs.westos.org
</VirtualHost>

linux运维企业篇——网站加速器:varnish实现cdn加速
建立两个目录/www和/bbs
linux运维企业篇——网站加速器:varnish实现cdn加速
分别设置两个index.html界面

linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速
重启httpd服务

/etc/init.d/httpd restart

linux运维企业篇——网站加速器:varnish实现cdn加速
在真机中测试:

curl www.westos.org

linux运维企业篇——网站加速器:varnish实现cdn加速

curl bbs.westos.org

linux运维企业篇——网站加速器:varnish实现cdn加速

三.使用bansys.zip进行批量推送清除缓存

在server1中安装 httpd,php,unzip

yum install httpd -y

linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
下载bansys.zip并移动到/var/www/html/解压

linux运维企业篇——网站加速器:varnish实现cdn加速

将解压后bansys里的文件移动到/var/www/html中
linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速
编辑config.php文件

vim config.php

linux运维企业篇——网站加速器:varnish实现cdn加速

<?php

 //varnish主机列表
 //可定义多个主机列表
 $var_group1 = array(
                        'host' => array('172.25.6.1'),
                                                'port' => '8080',                
                    );

 //varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         'www.westos.org' => $var_group1,
                     );

 //varnish版本
 //2.x和3.x推送命令不一样
 $VAR_VERSION = "3";

?>

linux运维企业篇——网站加速器:varnish实现cdn加速
将http的端口改为8080 (因为varnish已占用80端口)

vim /etc/httpd/conf/httpd.conf

linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速
重启httpd服务
linux运维企业篇——网站加速器:varnish实现cdn加速
查看端口
linux运维企业篇——网站加速器:varnish实现cdn加速
在真机浏览器中
linux运维企业篇——网站加速器:varnish实现cdn加速
回到server1:
编辑varnish的default.vcl文件

vim /etc/varnish/default.vcl

acl westos {
"127.0.0.1";
"172.25.6.0"/24;                    ##设置允许哪些用户修改
}

backend web1 {
  .host = "172.25.6.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.6.3";
  .port = "80";
}

linux运维企业篇——网站加速器:varnish实现cdn加速

sub vcl_recv {
if (req.request == “BAN”) {
if (!client.ip ~ westos) {
error 405 “Not allowed.”;
}
ban("req.url ~ " + req.url);
error 200 “ban added”;
}
}
linux运维企业篇——网站加速器:varnish实现cdn加速
注释41行
linux运维企业篇——网站加速器:varnish实现cdn加速

重新加载varnish配置
linux运维企业篇——网站加速器:varnish实现cdn加速

在真机中测试:
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速

linux运维企业篇——网站加速器:varnish实现cdn加速
linux运维企业篇——网站加速器:varnish实现cdn加速

相关文章: