怎么在工商网站做实名认证,wordpress建站 产品详情页,牛牛网站建设,重庆市工程建设信息网官网新域名CDN介绍#xff1a;
1 . 对cdn的理解#xff1a; CDN的全称是#xff08;Content Delivery Network#xff09;#xff0c;即内容分发网络#xff1b;加速器#xff0c;反向代理缓存。CDN系统能够实时的根据网络流量和各节点的连接#xff0c;负载状况以及到用户的举例…CDN介绍
1 . 对cdn的理解 CDN的全称是Content Delivery Network即内容分发网络加速器反向代理缓存。CDN系统能够实时的根据网络流量和各节点的连接负载状况以及到用户的举例和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上其目的是使用户可以就近取得所需内容解决Internet网络拥挤的状况提高用户访问网站的响应速度。
2. 基本原理 CDN的基本原理是广泛采用各种缓存服务器将这些缓存服务器分布到用户访问相对集中的地区或网络中在用户访问网站时利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上由缓存服务器直接响应用户请求。
3 . 服务模式 简单地说内容分发网络(CDN)是一个经策略性部署的整体系统包括分布式存储、负载均衡、网络请求的重定向和内容管理 4个要件 内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断CDN确保内容以一种极为高效的方式为用户的请求提供服务 。
内容服务基于缓存服务器也称作代理缓存(Surrogate) 它位于网络的边缘距用户仅有一跳(Single Hop)之遥。同时代理缓存是内容提供商源服务器通常位于CDN服务提供商的数据中心的一个透明镜像。这样的架构使得CDN服务提供商能够代表他们客户即内容供应商向最终用户提供尽可能好的体验而这些用户是不能容忍请求响应时间有任何延迟的。
varnish介绍
1 . varnish 是一款具有高性能的开源http加速器具有反向代理、缓存功能。 Varnish的功能与Squid服务器相似都可以用来做HTTP缓存。Squid是从硬盘读取缓存的数据而Varnish把数据存放在内存中直接从读取内存避免了频繁在内存、磁盘中交换文件所以Varnish要相对更高效但也有缺点内存中的缓存在服务器重启后会丢失。 2 . varnish 如何工作 varnish主要存在两个进程manage进程及child进程 manage 进程更新配置vcl 文件编译varnish 监控初始化 varnish 及提供 varnish 管理接口。 child 进程主要进行请求任务的处理接受请求等。 child 进程中各线程的处理任务 accept 线程: 监听端口接受连接接受连接后组成 session 结构查看是否有空闲线程若有则分配给其处理若无则检查等待队列 overflow 的大小若过大则抛弃请求否则加入 overflow 队列。 work 线程 从 overflow 队列中获取任务, 走 Varnish 状态机流程处理任务完成后通过 pipe 的线程通信传递给 epoll 线程等待下一个事件触发。 epoll 线程将事件发送时对应的 session , 放入 overflow 队列以供 work 线程从中取出继续处理。当然在等待事件发送时会检查该 session 是否过期。 expire 线程对以二叉树形式组织的缓存对象进行过期检查对过期的对象进行处理更新或者弃用。
cdn加速的实现:
实验环境 三台主机为了实验方便全部关闭防火墙selinux设置为disabled 代理服务器varnish服务器172.25.5.111 后端资源服务器172.25.5.112 客户端物理主机172.25.5.250 1 . 代理服务端安装 varnish-4.0.5-1.el7.x86_64.rpm varnish-libs-4.0.5-1.el7.x86_64.rpm jemalloc-3.6.0-1.el7.x86_64.rpm rpm -qc 软件包 查看生成的文件2查看varnish的服务文件
vim /usr/lib/systemd/system/varnish.serviceVarnish打开的最大文件数限制为131072 Varnish锁定的共享内存大小为82M
3查看本机系统最大文件访问数量
sysctl -a | grep file发现满足Varnish打开的最大文件数限制
4全局临时更改共享内存及最大文件数 ulimit -n 131072 ##临时更改更改最大文件数ulimit -l 82 ##临时更改更改最大共享内存ulimit -a ##查看用户限制5编辑varnish用户的限制文件
vim /etc/security/limits.conf ##将最大文件访问数以及锁定的内存大小写入文件最后6修改varnish服务端口
vim /etc/varnish/varnish.params 更改端口为807varnish主配置文件中指定后端服务器
vim /etc/varnish/default.vcl 指定后端服务和端口最后重启vanish服务
2 . 设置后端服务器 yum install httpd -ycd /var/www/html/vim index.htmlsystemctl start httpd3 . 测试使用物理主机直接访问代理服务器可以得到资源服务器中的内容
Varnish缓存命中情况
作为varnish代理端在配置文件中添加了后端服务器的ip及端口在访问代理端的时候实际是在访问后端服务器则第一次访问会产生缓存下一次访问的时侯则由缓存服务器直接响应客户端需求减少延时。
修改配置文件在缓存数据时发送信息给客户端查看缓存命中情况根据数据是来自后端服务器还是来自缓存的内容返回不同的消息给客户端主机。
vim /etc/varnish/default.vcl 在缓存数据将要发送到客户端时调用的子进程。 在代理服务器上对varnish缓存进行清理 varnishadm ban req.url ~ / # 清理所有的缓存varnishadm ban req.url ~ /index.html # 对指定文件的缓存进行清理先对varnish服务器的缓存进行清理
varnishadm ban req.url ~ / 使用客户主机进行测试缓存命中情况 第一次访问的时候不存在缓存内容数据由后端服务器获取 再次访问的时候已经有了缓存数据命中缓存。
定义不同域名站点的后端服务器:
在使用不同的域名访问同一台代理服务器的时候可以进行设置将请求由发送到不同的后端服务器。
需要在代理服务器的varnish配置文件中设置多个后端服务器并在vcl_recv 子程序中设置对不同的域名请求发送到不同的后端服务器。
vim /etc/varnish/default.vcl 在varnish端添加sub vcl_recv {
if (req.http.host ~ ^(www.)?westos.org) { ##如果请求的域名为www.westos.org或者 westos.orgset req.http.host www.westos.org; ##当将其赋值为 www.westos.orgset req.backend_hint web1; ##让后将请求发送给为web1 后端服务器
}elsif (req.http.host ~ ^bbs.westos.org) { ##如果请求域名为bbs.westos.orgset req.backend_hint web2; ##就将请求发送给web2
}else {return (synth(405)); ##其他的域名返回一个405错误
}
} 写好之后重启varnish服务
在客户端写好解析 解析好之后进行测试
轮询机制实现后端服务器负载均衡:
当某台后端服务器的访问压力过大的时候可以设置多台后端服务器提供相同的内容服务将客户请求分配给多台服务器减缓一台服务器的压力。
可以把多台 backends 聚合成一个组,这些组被叫做 directors。这样可以增强性能和弹力.
import directors from /usr/lib64/varnish/vmods/libvmod_directors.so; ##导入模块
backend web1 {.host 172.25.5.112; 定义第一个后端服务器.port 80;
}
backend web2 {.host 172.25.5.113; 定义第二个后端服务器.port 80;
}sub vcl_init {new lb directors.round_robin(); 新建一个组lb.add_backend(web1); 将web1 添加到这个组lb.add_backend(web2); 将web2 添加到这个组
}sub vcl_recv {
if (req.http.host ~ ^(www.)?westos.org) {set req.http.host www.westos.org;set req.backend_hint lb.backend(); 发送请求循环组让组中的后端服务器轮流处理请求return(pass); 设置直接将请求发送到后端服务器并且不缓存返回的内容
}elsif (req.http.host ~ ^bbs.westos.org) {set req.backend_hint web2;
}else {return (synth(405));
}
} round_robin()这个 director 是一个循环的 director。它的含义就是 director 使用循环的方式把backends 分给请求。
测试
推送管理平台:
为了更加快捷方便及时对代理服务器中缓存内容进行清理更新。可以在代理服务器上设置网络推送页面直接在网页上推送平台对代理服务器缓存进行修改。
1 代理服务器上安装php 以及http 由于推送平台使用的是php进行编写需要安装php插件识别php脚本内容。
yum install php httpd -y
vim /etc/httpd/conf/httpd.conf 更改http端口为808080默认端口已经被varnish占用
systemctl restart httpd 重启http服务2 解压平台安装包到httpd公共目录里
unzip bansys.zip -d /var/www/html 没有unzip的可以先yum install unzip
cd /var/www/html
mv bansys/* /var/www/html # 将解压出目录中的文件全部放到公共目录中
vim config.php 修改推送平台配置文件如下3 . 修改varnish配置文件
vim /etc/varnish/default.vcl重启varnish服务
4 . 客户端进行测试 http://172.25.5.111:8080