Linux之squid服务部署(正向代理、反向代理、CDN集群与负载均衡)
一、squid概念
Squid是一个高性能的代理缓存服务器。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
二、squid服务部署
(一)正向代理
- 正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
- 服务搭建
(1)实验准备
两台主机,分别为服务器(172.25.254.131)和客户端(172.25.254.231),其中服务器需要可以上网
需要在解析文件/etc/resolv.conf中,写入提供解析服务的主机,如114.114.114.114,关闭防火墙,查看网络是否能够ping通。
(2)服务器端安装squid软件
yum install squid -y
(3)开启服务,正向代理服务部署
服务器:
netstat -antlupe | grep squid ##可以查看到squid服务默认端口为3128
vim /etc/squid/squid.conf ##编辑配置文件
http_access allow all
cache_dir ufs /var/spool/squid 100 16 256 ##缓存大小为100M 有16个一级目录和256个子文件
systemctl restart squid
(4)客户端测试
route -n ##查看网关
ping www.baidu.com
首先,我们需要确认该客户端不能上网
在浏览器中对网络进行设置,在设置之前我们的浏览器是不能上网的。
在网络设置中添加代理ip(172.25.254.131),该代理是我们安装squid服务的主机ip,填写该服务打卡的端口。
添加完毕,我们在浏览器中可以上网,但在命令行中ping网址ping不通。
(二) 反向代理
- 反向代理:在计算机网络中,反向代理是代理服务器的一种。服务器根据客户端的请求,从其关联的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。
- 代理服务搭建
(1)实验准备
需要三台主机,其中两台是服务器,另一台是用于测试的客户端。
- 服务器1:安装squid服务(172.25.254.131)
- 服务器2:安装Apache服务(172.25.254.231)
- 客户端:172.25.254.165
(2)服务器2设置
安装httpd服务
yum install httpd -y
开启服务在,默认发布目录中创建默认发布文件,默认发布文件名称为index.html,为了实验方便使用他的默认名称,如果需要修改可以参考之前的文章。同时关闭防火墙,避免数据包被阻塞。
systemctl start httpd
cd /var/www/html
vim index.html
<h1><font color=#336633>this is apache's server</font></h1>
systemctl stop firewalld
(3)服务器1设置
由于上一个实验已将安装了squid服务,我们直接在配置文件中进行设定。在该主机中未安装Apache服务,但是我们需要使它具有apache的功能,可以在配置文件中设定http_port为虚拟主机,具有虚拟端口80
vim /etc/squid/squid.conf
http_port 80 vhost vport 开启端口80,使用虚拟主机和虚拟端口,在主机上并没有安装httpd服务
cache_peer 172.25.254.231 parent 80 0 proxy-only
父集 端口 只用于代理
systemctl restart squid
(4)客户端测试
编辑本地解析文件,访问网页可直接输入解析文件中的域名。
vim /etc/hosts
172.25.254.131 www.westos.com
(三)正向代理和反向代理的区别
与前向代理不同,前向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如Web服务器)只知道代理的IP地址而不知道客户端的IP地址;而反向代理是作为服务器端(如Web服务器)的代理使用,而不是客户端。客户端借由前向代理可以间接访问很多不同互联网服务器(簇)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。
三、CDN集群与负载均衡
-
CDN概念
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN集群:Web集群是由多个同时运行同一个web应用的服务器组成,在外界看来就像一个服务器一样,多台服务器共同来为客户提供更高性能的服务
集群更标准的定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理,此单一系统为客户工作站提供高可靠性的服务。 -
负载均衡
负载均衡负责多个服务器之间(集群内)实现合理的任务分配,使这些服务器(集群)不会出现因某一台超负荷,而其他的服务器却没有充分发挥处理能力的情况。 -
CDN集群与负载均衡服务部署
(1)实验准备
四台主机,其中三台是服务器,另一台是客户端
服务器1:安装squid服务(172.25.254.131)
服务器2:安装Apache服务(172.25.254.231)
服务器3:安装Apache服务(172.25.254.165)
客户端:172.25.254.65
(2)服务器1设置
vim /etc/squid/squid.conf
http_access allow all
http_port 80 vhost vport
cache_peer 172.25.254.231 parent 80 0 proxy-only no-query round-robin originserver name=web1
cache_peer 172.25.254.31 parent 80 0 proxy-only no-query round-robin originserver name=web2 weight=2(权重)
cache_peer_domain web1 web2 www.westos.com
cache_dir ufs /var/spool/squid 100 16 256
其中,name=web1别名,originserver 说明web1为westos域名服务,round-robin采用轮询方式,weight=2轮询次数(权重)
注意,为了是负载均衡实验的显示效果更明显,在web服务器2和3上,我们在默认发布文件中写了不同的内容。当然在实际生活中这两个后端服务器内容是完全一致的,这里只是为了实验效果。
(3)服务器2
yum install httpd -y
systemctl start httpd
systemctl stop firewalld
cd /var/www/html
vim index.html
<h1><font color=#660033>balance of squid</font></h1>
(3)服务器3
yum install httpd -y
systemctl start httpd
systemctl stop firewalld
cd /var/www/html
vim index.html
<h1><font color=#000033>other squid balace</font></h1>
(4)客户端测试
vim /etc/resolv.conf
172.25.254.131 www.westos.com
输入本地解析中填写的域名,刷新查看效果。
注意:由于设置轮询次数(权重)后,实验效果不明显,这里不进行实验了。