LNMP架构Varnish搭建CDN内容分发网络

CDN

CDN的全称是Content Delivery Network,称为内容发布网络。
CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容发布、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
CDN的关键技术有内容存储和分发技术。

Varnish

Varnish作用是访问web速度的web加速器,被安装在web服务器之前,从而缓存web服务器的应用程序和数据,最后相应客户的请求。 功能与Squid服务器相似,都可以用来做HTTP缓存。与Squid不同之处在于,Squid是从硬盘读取缓存的数据,而Varnish把数据存放在内存中,直接从读取内存,避免了频繁在内存、磁盘中交换文件,所以Varnish要相对更高效,但也有缺点,内存中的缓存在服务器重启后会丢失。

安装Varnish

配置阿里云epel镜像源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
yum install varnish -y

配置后端服务
vim /etc/varnish/default.vcl

 16 backend default {
 17     .host = "127.0.0.1";
 18     .port = "80";
 19 }

在这里插入图片描述
在这里插入图片描述
修改参数限制
在这里插入图片描述
修改/etc/security/limits.conf 在最后添加:
在这里插入图片描述

配置varnish

更改端口/etc/varnish/varnish.params
在这里插入图片描述
添加cache命中信息
在这里插入图片描述
在这里插入图片描述

配置访问acl

vim /etc/varnish/default.vcl

 16 backend web1 {
 17     .host = "172.25.254.102";
 18     .port = "80";
 19 }
 20 
 21 backend web2 {
 22     .host = "172.25.254.103";
 23     .port = "80";
 24 }
 25 sub vcl_recv {
 26         if (req.http.host ~ "^(www.)?westos.org") {
 27                 set req.http.host = "www.westos.org";
 28                 set req.backend_hint = web1;
 29                 #return(pass);
 30         }
 31         elseif (req.http.host ~ "^bbs.westos.org") {
 32                 set req.backend_hint = web2;
 33                 #return(pass);
 34         }
 35         else {
 36                 return(synth(404,"Not in cache"));
 37         }
 38 }

重启varnish
在这里插入图片描述

负载均衡和健康检查

vim /etc/varnish/default.vcl

 13 vcl 4.0;
 14 import directors;
 15 # Default backend definition. Set this to point to your content server.
 16 
 17 backend web1 {
 18     .host = "172.25.254.102";
 19     .port = "80";
 20 }
 21 
 22 backend web2 {
 23     .host = "172.25.254.103";
 24     .port = "80";
 25 }
 26 sub vcl_init {
 27         new web_cluster = directors.round_robin();
 28         web_cluster.add_backend(web1);
 29         web_cluster.add_backend(web2);
 30 }
 31 sub vcl_recv {
 32         if (req.http.host ~ "^(www.)?westos.org") {
 33                 set req.http.host = "www.westos.org";
 34                 set req.backend_hint = web_cluster.backend();
 35                 return(pass);
 36         }
 37         elseif (req.http.host ~ "^bbs.westos.org") {
 38                 set req.backend_hint = web2;
 39                 #return(pass);
 40         }
 41         else {  
 42                 return(synth(404,"Not in cache"));
 43         }

在这里插入图片描述
当关掉server3 nginx时
在这里插入图片描述
加入健康检查

 17 probe backend_healthcheck {
 18     .url = "/test.html";
 19     .window = 3;
 20     .threshold = 2;
 21     .interval = 3s;
 22 }
 23 backend web1 {
 24     .host = "172.25.254.102";
 25     .port = "80";
 26     .probe = backend_healthcheck;
 27 }
 28 
 29 backend web2 {
 30     .host = "172.25.254.103";
 31     .port = "80";
 32     .probe = backend_healthcheck;
 33 }

在这里插入图片描述
一开始关掉server3 nginx 后面开启nginx之后加入 cluster

透过代理解析源IP

在具有CDN加proxy代理的情况下 后端服务器不能获得client IP
环境 :client -> CDN -> server2 proxy -> server3
在这里插入图片描述
在这里插入图片描述
server3 不能获得client IP
在这里插入图片描述
在server3 加入/usr/local/lnmp/nginx/conf/nginx.conf
在这里插入图片描述
确保nginx编译时拥有–with-http_realip_module
效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值