Linux下的企业级CDN的加速实现一——Varnish(单个后端服务器的部署+查看命中情况+手动清除缓存)

一.实验环境(rhel6.5版本)

主机环境:rhel6.5 selinux 和iptables 都必须是disabled状态

各主机信息

主机名 IP 服务
server1 172.25.83.1 varnish
server2 172.25.83.2 apache

二.Varnish实现CDN加速(单个后端服务器)的部署

配置server1:

1.从官网下载varnish-3.0.5-1.el6.x86_64.rpm 和 varnish-libs-3.0.5-1.el6.x86_64.rpm两个软件包

2.安装这两个软件包

[root@server1 ~]# yum   install   varnish-*   -y

3.修改Varnish的主配置文件:

[root@server1 ~]# rpm  -qc  varnish-3.0.5-1.el6.x86_64

[root@server1 ~]# vim   /etc/sysconfig/varnish

<1>:查看varnish服务允许打开文件的最大数量

此时需要查看系统的参数,看是否满足条件

[root@server1 ~]# sysctl   -a  |  grep  file

很明显:系统允许打开的文件的最大数量为98866,显然不能满足varnish服务的需求(131072)。所以需要修改内存的大小,来增加系统允许打开的文件的最大数量。

修改内存大小之后,再次查看系统允许打开的文件的最大数量(为188466),显然满足要求。

<2>:查看varnish服务的锁定内存

此时需要查看系统的参数,看是否满足条件

[root@server1 ~]# ulimit    -l       #此命令看到的结果并不准确。

varnish服务的锁定内存无法更改,只能通过修改系统的参数(下面2所讲解的内容),来使其达到要求。

<3>:修改varnish 把监听端口改为80

4.修改varnish用户安全配置文件

vim /etc/security/limits.conf 在最后写入如下内容

注意:因为varnish这个程序运行在varnish这个用户的私有空间内,内核对普通用户限制的最大文件数为1024.对 varnish用户限制的最大文件数为131072,我们需要满足131072这个最大值。所以在之前我们要将server1的memory改为2048

5.修改varnish默认文件,配置单个后端服务器

vim /etc/varnish/default.vcl

6.修改完配置文件后/etc/init.d/varnish restart开启varnish服务即可

7.开启后 ,cat   /etc/passwd查看是否多了一个varnish用户,ps aux | grep varnish 查看进程是否在运行

服务启动之后,可以看到增加了一个varnish用户(其实varnish服务安装完成之后,就已经增加了一个varnish用户);会有相应的varnish服务的主进程和子进程。

<1>新增加了一个varnish用户

<2>多了两个进程(主进程和子进程)

可以看到主进程开启的进程只有一个;而子进程开启的进程有109个

配置server2

1.下载http服务

在这里插入图片描述

2.进到http默认发布目录下编写文件

在这里插入图片描述

3.编写完后/etc/init.d/httpd start 开启服务即可


在这里插入图片描述

4.测试,是否共享成功:

测试端:物理机——IP为172.25.83.83

<1>可以在命令行测试:在真机上curl 172.25.83.1,访问的是server2主机http服务默认发布文件的内容

<2>也可以在浏览器查询;

三.查看缓存命中情况(在二的基础上)

配置server1:

1.修改varnish服务的默认配置文件

vim   /etc/varnish/default.vcl,写入如下内容(11-18行)

2.修改完配置文件后,/etc/init.d/varnish   reload,重新加载varnish服务即可

测试端:物理机——IP为172.25.83.83

第一次测试:未名中

第二次测试:命中

四.手动清除缓存(在三的基础上)

客户端测试:

<1>清除所有缓存

[root@server1 ~]# varnishadm   ban.url   .*$

在varnish服务的服务端清除所有缓存之前,测试端的测试结果:

在varnish服务的服务端清除所有缓存:

在varnish服务的服务端清除所有缓存之后:显示为MISS,则清除缓存成功

<2>清除index.html页面缓存

[root@server1 ~]# varnishadm   ban.url   /index.html

在varnish服务的服务端清除index.html页面缓存之前,测试端的测试结果:

在varnish服务的服务端清除index.html页面缓存:

在varnish服务的服务端清除index.html页面缓存之后:

 

实验六:如果是在实验五+实验二的基础上,值的注意的是要注释掉return  (pass)这句话。创建缓存递送平台(web界面清空缓存);

Varnish服务的服务端(vm1虚拟机——主机名为server1——IP为172.25.83.1)

1.安装http,编辑配置文件

[root@server1 ~]# yum   install   httpd   -y           #安装httpd服务

因为varnish占用80端口,所以需要把httpd服务的默认端口80修改为其他端口。

2.下载bansys.zip,并进行解压;

[root@server1 ~]# yum   install   unzip   -y           #因为 没有unzip命令,所以要安装unzip命令

[root@server1 ~]# unzip   bansys.zip   -d   /var/www/html/          #-d指定解压目录

3.安装php(使得httpd服务可以识别php格式的内容)

[root@server1 ~]# yum   install   php   -y

4.编辑发布内容(php格式),并重启httpd服务

[root@server1 ~]# cd /var/www/html/bansys/
[root@server1 bansys]# mv * ..
[root@server1 bansys]# cd ..
[root@server1 html]# ls
bansys  class_socket.php  config.php  index.php  purge_action.php  static
[root@server1 html]# vim config.php

[root@server1 html]# /etc/init.d/httpd   restart

5.修改varnish服务的默认配置文件,修改之后,重新加载varnish服务

[root@server1 ~]# vim   /etc/varnish/default.vcl

下面值的注意的是:17行的~前后都必须有空格

[root@server1 html]# /etc/init.d/varnish   reload

测试端:物理机——IP为172.25.83.83

在浏览器打开172.25.83.1:8080页面,进入php格式:

<1>清除所有缓存

在varnish服务的服务端清除所有缓存之前,测试端的测试结果:

在varnish服务的服务端清除所有缓存:

在varnish服务的服务端清除所有缓存之后:

<2>清除index.html页面缓存

在varnish服务的服务端清除index.html页面缓存之前,测试端的测试结果:

在varnish服务的服务端清除index.html页面缓存:

在varnish服务的服务端清除index.html页面缓存之后:

 


 

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/86633034