Varnish 服务器

Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点。

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

使用CDN的好处:
1. 不用担心自己网站访客,在任何时间,任何地点,任何网络运营商,都能快速打开网站。
2. 各种服务器虚拟主机带宽等采购成本,包括后期运维成本都会大大减少。
3. 给网站直接带来的好处就是:流量,咨询量,客户量,成单量,都会得到大幅度提升。

用varnish实现cdn:在当前主流的Web架构中,Cache担任着越来越重要的作用。资源的关键。而最近几年由FreeBSD创始人之一Kamp开发的varnish更是一个不可多得的Web Cache Server。严格意义上说,Varnish是一个高性能的反向代理软件,只不过与其出色的缓存功能相比,企业更愿意使用其搭建缓存服务器。同时,于其工作在Web Server的前端,有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一。

VCL是varnish配置语言:varnish是一个专门用于描述varnish请求处理和文件缓存
策略规则的语言。当一个新的配置加载后,varnishd管理进程将会将其转换为C代码并编译,然后加载到服务器进程中。

这里写图片描述

VCL语法格式,处理过程大致分为如下几个步骤:

(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求
应该是 Pass 或Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。

一、虚拟机的封装

1、使6.5的镜像挂载到apche下,为了使网页可以访问到

这里写图片描述

写入 vim /etc/rc.d/rc.local 永久挂载文件内,为了使其开机自动挂载

2、下载母盘base

1)用 virt-manager 点电视图标
用本地镜像下载
这里写图片描述

2)不需要内存太大(超过768会显示图像,这里不需要显示图像,所以内存时512就可以了>)
这里写图片描述
3)写成20 gib
这里写图片描述
4)名字起为base
这里写图片描述
5)选语言(Enlish),选US
这里写图片描述
这里写图片描述
6)enable 时按空格再按ok
这里写图片描述
7)选shanghai
这里写图片描述
8)root密码为westos
这里写图片描述
这里写图片描述
9)最后一次后悔的机会
这里写图片描述
10)按 reboot 。
这里写图片描述
11)
这里写图片描述

3、配置母盘base

1)配置好网络
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
这里写图片描述
这里写图片描述

修改完网络后要 /etc/init.d/network restart 重启都现在成功就可以了

2)配置yum源
用刚才挂载好的6.5镜像 http://172.25.254.66/rhel6.5 (这里的ip地址最好选择物理机上的私有地址:172.25.66.250/24)
enabled=1
yum repolist
这里写图片描述
3)添加本地解析 (文件是 /etc/hosts)
172.25.254.1 server1

172.25.254.6 server6
这里写图片描述

4)删除文件
cd /etc/udev/rules.d/
ls
rm -fr 70-persistent-net.rules(按table键补奇)
这里写图片描述
5)修改名字
hostname server1
6)chkconfig iptables off
/etc/init.d/iptables restart
这里写图片描述
7)关闭selinux
/etc/sysconfig/selinux
修改为disabled
这里写图片描述
8)安装你所需要的文件
yum install -y vim lftp openssh-clients-5.3p1-94.el6.x86_64 (scp的安装包)
9)poweroff关机

4、进行虚拟机的封装

1)安装

[root@foundation66 ~]# yum provides */virt-sysprep   ## 查找关于varnish 的安装包
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
1:libguestfs-tools-c-1.28.1-1.55.el7.x86_64 : System administration tools for virtual
[root@foundation66 ~]# yum install -y libguestfs-tools-c-1.28.1-1.55.el7.x86_64     ##为了实现后续的命令可以执行

这里写图片描述

     压缩base为了方便打包用
[root@foundation50 ~]# cd /var/lib/libvirt/images  
[root@foundation50 images]# ls
base.qcow2
[root@foundation50 images]# virt-sparsify --compress base.qcow2 new.qcow2  ##对母盘进行压缩

补充:
当我们一不小心在test1中执行命令的时候发生了不可以弥补的错误,那么,
我们可以在真机中执行 rm -fr test1 和 qemu-img create -f qcow2 -b base.qcow2 test1再到图形中(virt-manager)中之间删除,重新建立。就可以了。

2)对虚拟机进行封装

[root@foundation66 Desktop]# cd /var/lib/libvirt/images
[root@foundation66 images]# qemu-img create -f qcow2 -b base.qcow2 test1
Formatting 'test1', fmt=qcow2 size=21474836480 backing_file='base.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

这里写图片描述

3)查看信息:qemu-img info test1

这里写图片描述

4)选择import existing disk image安装

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

5)进入后改主机名和ip

这里写图片描述

这里写图片描述

此时,主机环境配置完毕

二、Vainish配置

第一个步骤:

传varnish的安装包到 实验主机:172.25.66.1(server1) varnish

这里写图片描述

1)server1上安装varnish

[root@server1 ~]# cd /home  ## 提前从真机上用scp传到/home下
[root@server1 home]# ls
varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm
[root@server1 home]# yum install * -y
[root@server1 home]# cd /etc/varnish/
[root@server1 varnish]# ls
default.vcl  secret
[root@server1 varnish]# vim default.vcl    ## varnish 的配置文件

这里写图片描述

2) server2 上安装 varnish 、 apche

[root@server2 ~]# cd /home
[root@server2 home]# ls
varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm
[root@server2 home]# yum install -y *
[root@server2 home]# cd /etc/varnish
[root@server2 varnish]# ls
default.vcl  secret
[root@server2 varnish]# vim default.vcl
[root@server2 ~]# yum install -y httpd
[root@server2 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.254.2 for ServerName
                                                           [  OK  ]

这里写图片描述

3)在server2内 阿帕奇的默认发布目录 /var/www/html 写入内容

这里写图片描述
这里写图片描述

4)server1配置一个后端服务器

[root@server1 ~]# /etc/init.d/varnish start   ##   开启varnish服务
Starting Varnish Cache:                                    [  OK  ]
[root@server1 ~]# cd /etc/varnish
[root@server1 varnish]# ls
default.vcl  secret
[root@server1 varnish]# vim default.vcl    ##  配置文件
[root@server1 varnish]# /etc/init.d/varnish reload  ##   刷新文件

这里写图片描述
这里写图片描述

5)配置 varnish 服务端口 ##在server1

[root@server1 ~]# cd /etc/sysconfig
[root@server1 sysconfig]# vim varnish

这里写图片描述
这里写图片描述

6)在真机的 /etc/hosts 写入解析

这里写图片描述

7)限制cpu最大处理文件个数

[root@server1 ~]# vim /etc/security/limits.conf

这里写图片描述

8)真机火狐 www.westos.org 测试查看访问内容是不是server2 apache发布目录的内容

这里写图片描述

步骤二:查看缓存命中的情况

1)/etc/varnihsi/default.vcl加入查看缓存命中的情况 之后reload读取

这里写图片描述
这里写图片描述

2)真机测试curl 172.25.254.1 第一次MINSS 第二次HIT 表示成功

这里写图片描述
这里写图片描述

5)清除缓存命令:varnishadm ban.url .*$

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

1)server1安装apche服务,即做varnish也作apache服务或者可以在封装一个server3

[root@server3 ~]# yum install -y httpd
[root@server3 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.254.3 for ServerName
                                                           [  OK  ]
[root@server3 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.254.3 for ServerName
                                                           [  OK  ]

2)在server3内 阿帕奇的默认发布目录 /var/www/html 写入内容

这里写图片描述
这里写图片描述

3)/etc/varnihsi/default.vcl加入个不同域名站点的后端服务器:

当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 web2 取数据, 访问其他页面报错。

这里写图片描述
这里写图片描述

4)在server1 varnish 端添加解析 (/etc/hosts)

这里写图片描述

5)在真机测试查看

[root@foundation50 ~]# curl www.westos.org -I
或者
[root@foundation50 ~]# curl www.westos.org/index.html 

这里写图片描述

真机测试查看

[root@foundation50 ~]# curl bbs.westos.org -I
或者
[root@foundation50 ~]# curl bbs.westos.org/index.html 

这里写图片描述

步骤四:把多个后端聚合为一个组,并检测后端健康状况

1)server1在/etc/varnihsi/default.vcl加入:

这里写图片描述
这里写图片描述

2)在server3 中 修改 httpd 的配置文件

这里写图片描述
这里写图片描述
3)在 server3 中 再添加一个访问目录
这里写图片描述
4)添加解析
这里写图片描述
这里写图片描述

5)真机测试查看是否可以进行健康检查

这个效果使添加了 return (pass) 表示不进行缓存

这里写图片描述

当我们注释掉 return (pass) 时,会一直出现一个网址,不会交替出现

这里写图片描述
这里写图片描述

步骤五:varnish cdn 推送平台

1)server1安装php服务

[root@server1 ~]# yum install httpd -y
[root@server1 ~]# vim /etc/httpd/conf/httpd.conf 
[root@server1 ~]# /etc/init.d/httpd restart
[root@server1 ~]# yum install -y php
[root@server1 ~]# yum install -y unzip   ##目的是为了解压安装包

2)更改php配置文件;将其放到/var/www/html下

这里写图片描述
这里写图片描述

3)真机网页查:172.25.254.1:8080查看

这里写图片描述

这里写图片描述

步骤六:设置acl访问控制

[root@server1 html]# cd /etc/varnish
[root@server1 varnish]# ls
default.vcl  secret
[root@server1 varnish]# vim default.vcl

这里写图片描述

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

这里写图片描述
2)重新打开ip不再acl列表的机器进行访问查看

注意:

一、如果这里用网页输入www.westos.org如果出现问题,那么,

1、查看配置文件是否写正确
2、关闭火墙
[root@server2 html]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@server2 html]# chkconfig iptables off
3、查看httpd是否开启
4、关闭 varnish 在开启

二、在母盘中不能 yum repolist

1、yum源的文件内容有可能写错
2、关闭火墙
3、是否httpd的服务是否开启,开启后 restart
4、网络ip文件内容是否写错
5、镜像问题

猜你喜欢

转载自blog.csdn.net/janenancy/article/details/81259043
今日推荐