企业级 ##Varnish构建CDN节点##

这里写图片描述

CDN网络简介:

CDN的全称是Content Delivery Network,即内容奋发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
这里写图片描述
搭建CDN系统,有3种主流方案可以选择:

(1)squid

(2)varnish

(3)Nginx+memcache

一.配置实验环境(封装虚拟机):

1.配置yum源:
镜像:rhel-server-6.5-x86_64-dvd.iso

[root@foundation48 ~]# mkdir /rhel6.5
[root@foundation48 ~]# mv /home/kiosk/Desktop/*.iso /iso
[root@foundation48 ~]# mount /iso/rhel-server-6.5-x86_64-dvd.iso  /rhel6.5
[root@foundation48 ~]# mkdir /var/www/html/rhel6.5
[root@foundation48 ~]# mount /iso/rhel-server-6.5-x86_64-dvd.iso  /var/www/html/rhel6.5
[root@foundation48 ~]# vim /etc/rc.d/rc.local
    编辑内容: mount /iso/rhel-server-6.5-x86_64-dvd.iso  /var/www/html/rhel6.5
[root@foundation40 ~]# chmod +x /etc/rc.d/rc.local

这里写图片描述
2.创建虚拟机母本:
(1)通过命令启动虚拟机管理器:
这里写图片描述
这里写图片描述

(2)选择按钮这里写图片描述打开新建页面:
这里写图片描述
注意:当前镜像在本机里,选择本地启动

(3)选择系统类型,添加镜像地址:
这里写图片描述

(4)选择内存大小(不要图形安装,节省资源):
这里写图片描述

(5)选择硬盘大小:
这里写图片描述

(6)确定安装配置信息:
这里写图片描述

(7)安装选项过程:
a:启动界面
这里写图片描述
这里写图片描述
b:选择英文,美式键盘
这里写图片描述
这里写图片描述
c:初始化所有
这里写图片描述
d:选择时区
这里写图片描述
e:设置超级用户密码(redhat)
这里写图片描述
这里写图片描述
f:确认储存母本
这里写图片描述
这里写图片描述
g:开始安装母本
这里写图片描述
这里写图片描述
h:启动成功
这里写图片描述

3.配置虚拟机母本:
(1)删除eth0网络文件【用母本建立虚拟机时,ip不会乱】
这里写图片描述
(2)配置母本IP地址
a:查看主机IP[设置到同一网段]
这里写图片描述
b:编辑配置文件
这里写图片描述
这里写图片描述
c:重启网络
这里写图片描述
(3)激活
这里写图片描述
这里写图片描述
(4)检测yum源是否导入
【真机】:
这里写图片描述
【母本虚拟机】:
这里写图片描述
当repolist的数值不等于零时,说明安装源成功导入
(5)安装基本的vim服务和lftp服务
这里写图片描述
这里写图片描述
(6)添加子虚拟机的主机名与IP
这里写图片描述
这里写图片描述
这里写图片描述
(6)关闭SELINUX
这里写图片描述
这里写图片描述
(7)关闭母本虚拟机【注意:不要再打开,一旦打开,封装会失败】
这里写图片描述
这里写图片描述

4.利用母本创建子虚拟机:
(1)用母本文件复制创建子虚拟机文件
这里写图片描述
(2)安装子虚拟机server1
a:选择磁盘启动
这里写图片描述
b:添加路径,选择系统类型
这里写图片描述
c:添加内存与CPU大小
这里写图片描述
d:确认配置信息
这里写图片描述
e:安装成功
这里写图片描述

二.用Varnish搭建CDN系统:

【客户端】————【真机】——————【IP】172.25.48.250/24
【varnish端】(中间服务器)——【server1】———–【IP】172.25.48.1
【服务端】(后端服务器)———【server2】————【IP】172.25.48.2
这里写图片描述
1.处理过程:
这里写图片描述
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
这里写图片描述

2.撘建过程:
(1)用封装虚拟机的方法封装两台虚拟机【server1】【server2】
【server1】 IP:172.25.48.1
【server2】 IP:172.25.48.2
a:修改IP命令:
这里写图片描述
b:编辑文件:
这里写图片描述
c:重启网络:
这里写图片描述

(2)用真机连接两台虚拟机
这里写图片描述
这里写图片描述

(3)【server1】安装scp服务,用真机发送varnish安装包到【server1】

===================================================================

在【server1】中安装varnish服务,使【server1】成为CDN中的varnish端(中间服务器)

====================================================================
a:查看scp服务安装包:
这里写图片描述
b:使用yum命令进行安装:
这里写图片描述
c:在主机用scp将安装包发送到【server1】上:
这里写图片描述
d:在【server1】中安装varnish服务:
这里写图片描述

(4)在【server1】中配置 varnish 服务端口
这里写图片描述
这里写图片描述

(5)修改CPU最大处理能力限制
a:修改配置文件
这里写图片描述
这里写图片描述
b:重启服务
这里写图片描述
c:检测–>如果出现80则修改成功
这里写图片描述

(6)在【server2】中下载httpd服务,编写数据www.westos.org
a:下载httpd服务
这里写图片描述
b:重启httpd服务
这里写图片描述
c:编辑数据包
这里写图片描述
编辑内容:www.westos.org

这里写图片描述

(7)在【server1】中varnish配置文件中添加主服务器【server2】的IP地址
这里写图片描述
这里写图片描述
重启服务:
这里写图片描述
(8)在客户端【真机】中进行域名解析
这里写图片描述
这里写图片描述
(9)配置查看缓存命中情况
a:配置文件
这里写图片描述
这里写图片描述
b:重启服务
这里写图片描述
(10)测试缓存命中
注意:测试前 【真机】防火墙关闭,httpd服务打开
【server1】varnish服务重启,防火墙关闭
【server2】防火墙关闭,httpd服务打开
a:真机网页测试
这里写图片描述
这里写图片描述
b:真机缓存命中测试
未命中:
这里写图片描述
命中:
这里写图片描述

三.定义多个不同域名站点的后端服务器:

1.封装一个子虚拟机【server3】
(1)配置【server3】的IP地址172.25.48.3
安装httpd服务
关闭火墙
用真机连接【server3】,这是第二台后端服务器
(2)写入数据包
这里写图片描述

这里写图片描述

2.在【server1】中添加后端服务器【server3】信息,与命中缓存限定条件
这里写图片描述
限定条件:www.westos.org 与 bbs.westos.org可以连接缓存,其他的报错
这里写图片描述
这里写图片描述
3.在真机里域名解析
这里写图片描述
这里写图片描述
4.在真机中测试
(1)测试ip输入查看缓存
【在server1配置文件中限制,IP不能进行查看数据包缓存】
这里写图片描述
(2)测试www.westos.com输入查看缓存
【成功】
这里写图片描述
(3)测试bbs.westos.com输入查看缓存
【成功】
这里写图片描述

四.定义负载均衡:

负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
1.配置服务器【server3】的httpd文件:
a:配置命令
这里写图片描述
b:编辑内容
这里写图片描述
这里写图片描述
c:重启httpd服务
这里写图片描述
2.在【server3】服务器中添加数据包:
这里写图片描述
这里写图片描述
2.在【server3】服务器中编写本地解析:
这里写图片描述
这里写图片描述
3.在【server1】varnish文件中编辑web1和web2:
这里写图片描述
这里写图片描述
这里写图片描述
4.在真机中检测:
(1)检测全为www.westos.org{因为这是缓存下来的}
这里写图片描述
(2)手动清理缓存
这里写图片描述
(3)检测出新添加的数据包
这里写图片描述
5.为了能更好的实验,不让缓存影响实验结果:【添加return(pass);】
这里写图片描述
这里写图片描述
6.在【sever1】中重启varnish服务:
这里写图片描述
7.在真机测试会进行一直转换因为没有进行缓存:
这里写图片描述

五.缓存推送【实时更新】:

服务端定点清除缓存,让客户端实时更新
1.在【server1】中下载httpd,php,unzip服务:
这里写图片描述
这里写图片描述
这里写图片描述

2.修改httpd服务端口,改为8080
这里写图片描述
这里写图片描述

3.下载bansys.zip的压缩包并解压到http的默认发布目录下
这里写图片描述
这里写图片描述

将解压好的所有文件移动到阿帕奇默认发布目录下才可以被访问到
这里写图片描述

4.编辑php配置文件,定义varnish群组
这里写图片描述
这里写图片描述
这里写图片描述

5.查看8080端口是否修改成功,并且进行检测
这里写图片描述
真机火狐上————————————>172.25.39.1:8080
这里写图片描述

6.编辑varnish端配置文件
这里写图片描述
设置访问控制:
这里写图片描述

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

这里写图片描述

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

7.在网页上测试能否连接上
这里写图片描述

8.注释掉上一个实验的return()pass
这里写图片描述
这里写图片描述

9.进行测试:
(1)在真机里访问服务端网址:
【只有server2,因为server2在120s限定时间内被缓存下来】
curl可以避免浏览器缓存的影响进行实验的测试
这里写图片描述
(2)通过HTTP模式CDN推送缓存:
这里写图片描述
这里写图片描述

(3)再次在真机进行测试:(每次推送缓存均会改变测试域名时候的值):
这里写图片描述

猜你喜欢

转载自blog.csdn.net/China_zgd/article/details/81258514