Linux项目_CDN_varnish轮寻

Linux项目_CDN_varnish轮寻

一.介绍

1.CDN

       内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。

2.VARNISH

       Varnish是一款高性能的开源HTTP加速器,用于CDN加速。

二.准备

实验环境:
三台服务器,一台作为 director,两台作为 real server。
director 内网ip(172.25.3.1),
两个 real server 上只有内网 ip (172.25.3.2) 和 (172.25.3.3),
并且需要把两个 real server 的内网网关设置为 director 的内网 ip(172.25.3.1)

三.Varnish

1.准备

[server1]安装
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm

yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y

[server2,server3]安装

yum install httpd -y
/etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 172.25.0.2 for ServerName [ OK ]
默认发布目录建立默认发布文件,作为区别
cd /var/www/html/
echo server2 > index.html

2.主配置文件

[server1]

主配置文件:
vim /etc/sysconfig/varnish

修改varnish默认端口
这里写图片描述

配置文件:
vim /etc/varnish/default.vcl

修改后端服务器IP:
这里写图片描述

重启Varnish服务:
这里写图片描述

sysctl -a | grep file-max ##显示内核最大支持的缓存文件数371487
这里写图片描述

检测80端口是否为varnish
netstat -antlp

这里写图片描述

[检测]
在物理机上

配置文件的默认后端IP为172.25.0.2
curl 172.25.0.1
查看链接的服务
curl -I 172.25.0.1

这里写图片描述

显示的主机名为server2
链接的服务为Apache,版本号为2.2.15,链接时间为34

3.最大线程设置

ulimit
-a 查看所有内容
-n 限制最大连接数
-l 内存
-u 线程数

这里写图片描述

查看最大线程数
sysctl -a | grep file

这里写图片描述

修改系统重varnish最大线程数
vim /etc/security/limits.conf

这里写图片描述

修改主配置文件中varnish最大线程数
vim /etc/sysconfig/varnish

这里写图片描述

4.查看缓存命中

编辑varnish主配置文件
vim /etc/varnish/default.vcl
/etc/init.d/varnish reload

这里写图片描述

[测试]
物理机中:
curl 172.25.66.1
当缓存命中时,执行HIT from westos cache
当缓存不命中时,执行MISS from westos cache

使用 varnishadm ban.url .* 用来清空所有的缓存
使用 varnishadm ban.url .*$
使用 varnishadm ban.url /index.html 用来清空html 缓存

这里写图片描述

5.域名访问

[server1]
安装httpd服务
避免httpd默认的80端口与varnish冲突,将端口改为8080
重启httpd服务
这里写图片描述

修改主配置文件
vim /etc/varnish/default.vcl
/etc/init.d/reload

这里写图片描述

!!!
if (req.http.host ~ “^(www.)?westos.org”) {
此处用于当前面不管是什么域名当后面为westos.org 时,都会缓存到同
一个www.westos.org的目录
} else {error 404 “westos cache”;
此处不能显示为IP地址访问,因为其匹配的是域名,而不是IP地址

[物理机]
修改解析文件
vim /etc/hosts
这里写图片描述

测试:
添加本地解析
curl www.westos.org
curl westos.org
curl bbs.westos.org

6.定义负载均衡(轮寻)

(1)定义健康检查

主配置文件 vim /etc/varnish/default.vcl
.url = “/index.html”; #哪个 url 需要 varnish 请求
.interval = 5s; #检查的间隔时间
.timeout = 1s; #等待多长时间探针超时
.window = 5; #维持 5 个 sliding window 的结果
.threshold = 3; #至少有三次 window 是成功的,就宣告 bachend 健康

这里写图片描述

如若需要可添加本地网络默认文件
这里写图片描述

测试:
curl www.westos.org
curl bbs.westos.org

7.Cdn推送平台

安装php
yum install httpd -y
/etc/init.d/httpd restart

安装unzip插件
yum install -y unzip

将 bansys.zip解压到apache默认发布目录中unzip bansys.zip -d /var/www/html/ 把解压后目录中的所有文件移动到html下

解压 unzip bansys.zip
mv /mnt/bansys /var/www/html/
mv bansys/* .

这里写图片描述

-

  • bansys 有两种工作模式,分别是:telnet 和 http 模式。

  • telnet 模式需要关闭 varnish服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S ${VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。如果是 http 模式需要对 varnish
    做以下设置:

PHP主配置文件
vim config.php

这里写图片描述

varnish主配置文件
vim /etc/varnish/default.vcl

这里写图片描述
这里写图片描述

重启服务
/etc/init.d/varnish reload
测试:
访问172.25.0.1:8080

这里写图片描述

8.cdn_varnish工作原理

这里写图片描述

这里写图片描述

处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。

猜你喜欢

转载自blog.csdn.net/zwhzwh0228/article/details/80066341