cpu密集型服务:工作时对cpu的需求较大,例如MySQL、Apache、Nginx等。
1、Squid概述
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
2、Squid的工作位置
Squid再此集群中充当缓存服务器,主要缓存静态资源(长期不会改变),Nginx配置文件中的Sendfile选项的性能远高于read和write,在传输静态资源是可以有效的提高数据的传输效率,同时Nginx也可以通过压缩数据的方式提高集群的并发量。
Squid主要应用在CDN环境下,以减轻主服务器的访问压力为目的(减轻集群访问的压力,提高集群的并发能力)
3、CND服务器
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
3.1、构建原理
3.1.1、DNS智能解析
DNS服务器下bind软件(9.0以后的版本)的配置文件中的view标签实现此功能。
见人说人话,见鬼说过话

3.1.2、缓存服务器
Squid
特点:诞生较早,功能全面,并发能力相对较大,主要以Squid为主。
varnish
特点:诞生较晚,使用C语言编写,采用内存分页技术进行数据存储,还支持正则表达的方案删除缓存,使用前提:传输的数据文件较小时有明显的性能提升,但静态资源都相对比较大。
Nginx
特点:可以通过第三方软件事项各种功能,稳定性和可靠性有待考察,专业的反向代理服务器。
4、Squid服务器
一款缓存服务器的守护进程。
4.1、数据存储方案:
磁盘、分区、目录、object
分区时会使用UFS(Unix File System)进行格式化
hash tables (散列表)
digest tables (摘要表)
4.2、原理

①、Client访问静态数据时直接访问Squid服务器,Squid缓存服务器中有数据,数据请求的顺序是①–②--③–④;若Squid缓存服务器中没有数据,数据请求的顺序①–⑤--⑥–④;然后将数据保存在其缓存中,两次不同的TCP连接,在一个缓存周期中,其他Client端访问该数据时,数据请求顺序为①–②--③–④。
支持协议:HTTP协议、FTP协议、SSL协议
4.3、工作方式
4.3.1、传统代理

适用于Internet,需明确指定服务端
特点:服务器端配置简单,但每个用户端都需要配置。
①、Client通过Squid代理服务器访问外网时,访问相同的数据时,只需要第一次访问需要连接公网,其他Client访问该数据时只需要访问Squid代理服务器即可,减少了服务器的访问压力。
②、通过ACL可以限制访问外网下载的文件的大小。
缺点:每个客户机都需要配置外网访问代理选项(代理服务器地址及端口)
4.3.2、透明代理

适用于共享上网网关,不需指定服务端
特点:服务器端的配置稍微复杂,但可以通过防火墙规则实现用户端不做配置即可使用代理。
解决了传统代理的弊端,通过防火墙规则直接在Squid代理服务器端进行代理信息的修改。
4.3.3、反向代理

位于网站前端,代理web接受客户端的请求
特点:支持RR算法(round-rubin)、支持同类型服务器的相互数据同步
CDN服务器中常用的模式,用户为公网,服务器为局域网,成为反向代理。
传统代理及透明代理针对内网用户提供缓存
反向代理针对公网用户提供缓存
5、Squid软件介绍
5.1、基本信息
软件包:squid-3.xxxx (3.0以后进行了C语言重构)
系统服务:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf(源码和rpm包差别不大)
默认监听端口:TCP 3128
默认访问日志:/var/log/squid/access.log
5.2、常见配置
# 默认模式为传统模式
http_port 3128
# 访问日志及属组
access_log /var/log/squid/access.log squid
# Squid进程使用的内存大小
cache_mem 64 MB
# 当前缓存目录 文件系统 存放位置 当前目录可以适应的空间为100MB 第一级目录的数量为16个 第二级目录的数量为256个
第一个为hash tables, 第二个为digest tables
cache_dir ufs /var/spool/squid 100 16 256
# 指定当前的可用的主机名
visible_hostname proxy.benet.com
# squid服务测试是否能连接外网的选项
dns_testnames www.google.com www.163.com
# 最大缓存对象的大小限制(大的数据包不在squid中缓存)
maximum_object_size 4096 KB
# 访问外网代理的最大值(大于该值不予代理)
reply_body_max_size 10 MB
5.3、Squid传统模式实验
5.3.1、实验环境

5.3.2、实验代码
①、公网 web 端
yum -y install httpd
service httpd start
chkconfig httpd on
echo "www.hx.com" >> /var/www/html/index.html
curl localhost
②、Squid 服务器端
yum -y install squid
vim /etc/squid/squid.conf
# 添加主机名
visible_hostname www.hx.com line:4
# 取消注释
cache_dir ufs /var/spool/squid 100 16 256 line:65
service squid start
chkconfig squid on
# 开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
③、Client端
echo "GATEWAY=192.168.66.12" >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
route -n
5.3.2、实验验证
①、Client访问外网
curl 10.10.10.13
验证结果:不能访问到,客户端没有配置代理服务器的IP及端口。配置代理即可,
②、验证squid的缓存
关闭公网的httpd服务(10.10.10.13)
service httpd stop
客户端访问(192.168.66.11)
curl 10.10.10.13
验证结果:仍然可以访问到网页信息,验证squid服务器有缓存功能。
③、elinks访问外网无需配置Client
# Client 端
vim /etc/profile
HTTP_PROXY=HTTP://192.168.66.12:3128
export HTTP_PROXY
source /etc/profile
yum -y install elinks
elinks 10.10.10.13
验证结果:可以访问10.10.10.13,关闭公网的web服务后仍然可以访问,验证squid的缓存原理。
Squid缓存服务器详解:原理与应用
本文介绍了Squid作为一个高性能的代理缓存服务器,其在CDN环境中的作用,以及Squid的三种工作方式:传统代理、透明代理和反向代理。Squid通过缓存静态资源,减少服务器访问压力,提高数据传输效率。同时,文章提供了Squid的基本信息、配置和实验,展示了如何设置Squid作为传统代理进行实验验证。
718

被折叠的 条评论
为什么被折叠?



