Linux笔记之代理缓存器-----cdn之varnish

例子:当西安的用户,想要去访问远在深圳的腾讯服务器时。如果每次都直接访问深圳腾讯服务器那么,效率会及其底下。如果西安有一个腾讯的代理服务器,西安用户只需要去访问西安的代理服务器,第一次,西安代理服务器,也需要去深圳腾讯服务器访问,只要西安的腾讯代理服务器缓存以后,其余的用户或者之后再访问相同的内容,速度会很快。

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

一:实验准备工作
1、修改主机名

vi /etc/sysconfig/network

server1
server2
server3
2、修改本地解析

vi /etc/hosts

172.25.85.1 server1

172.25.85.2 server2

172.25.85.3 server3
3、修改ip地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/init.d/network restart

4、配置yum源

vi /etc/yum.repos.d/rhel-source.repo
yum clean all
yum repolist

5、安装vim,openssh 和 lftp

yum install vim openssh-clients lftp -y

6、删除70-persistent-net.rules文件    ##如果有这个文件,快照会报错,因为里面含有mac地址

   18  cd /etc/udev/
   19  ls
   20  cd rules.d/
   21  ls
   22  rm -rf 70-persistent-net.rules

7、关闭selinux

vi /etc/sysconfig/selinux

SELINUX=disabled

8、关闭防火墙并开机不启动

   13  /etc/init.d/iptables stop
   14  /etc/init.d/ip6tables stop
   15  chkconfig iptables off
   16  chkconfig ip6tables off

2)利用快照安装三台虚拟机:

 cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b origin.qcow2 vm1.qcow2
qemu-img create -f qcow2 -b origin.qcow2 vm2.qcow2
qemu-img create -f qcow2 -b origin.qcow2 vm3.qcow2

1、复制三张虚拟机的vm1,vm2,vm3
2、安装三台虚拟机vm1,vm2,vm3
3、修改三台虚拟机的主机名和ip地址
vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/init.d/network restart

二、varnish服务的安装

1)varnish的介绍
2)第一台服务器vm1安装varnish,并修改好配置文件

1、下载号安装包varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm,并安装

yum install varnish-* -y

2、修改配置文件    

rpm -qc varnish-     ##查看配置文件

配置文件一

 vim /etc/sysconfig/varnish      ##查看第一个配置文件
Linux笔记之代理缓存器-----cdn之varnish

  8 NFILES=131072             ##最大可以开启的数量

 12 MEMLOCK=82000      ##占用的内存

 15 NPROCS="unlimited"    ##线程数量不限制
我们需要查看系统最多可以打开多少文件,要大于varnish的数量

sysctl -a | grep file ##查看系统可以开启的最大文件数量
Linux笔记之代理缓存器-----cdn之varnish
free -m ##查看系统内存
Linux笔记之代理缓存器-----cdn之varnish
Linux笔记之代理缓存器-----cdn之varnish
sysctl -a | grep file
Linux笔记之代理缓存器-----cdn之varnish
配置文件二

vim /etc/sysconfig/varnish     ##修改端口
 66 VARNISH_LISTEN_PORT=80

修改系统内置的配置文件,使得达到varnish的要求。
vim /etc/security/limits.conf
 51 varnish         -       nofile          131072        ##最大开启文件的数量
 52 varnish         -       memlock         82000    ##占用的内存
 53 varnish         -       nproc           unlimited    ##进程号是否限制
Linux笔记之代理缓存器-----cdn之varnish
配置文件三:

[root@server1 ~]# vim /etc/varnish/default.vcl
7 backend default {
8 .host = "172.25.85.2";
9 .port = "80";
10 }
Linux笔记之代理缓存器-----cdn之varnish
3)启动varnish

/etc/init.d//varnish start
Linux笔记之代理缓存器-----cdn之varnish
cat /etc/passwd              ##系统会多一个varnish的用户
ps aux | grep varnish    ##查看进程有两个,一个为root,一个为varnish
cat /proc/1035/status     ##查看进程号的状态,root只有一个线程
ps aux | grep varnish
at /proc/1036/status     ##varnishi有109个线程

4)第二台服务区vm2安装httpd服务

yum install httpd -y
reboot
cd /var/www/html/
ls
vim index.html        ##编写默认发布目录
/etc/init.d/httpd start

测试:

在测试主机curl vm1的ip地址
Linux笔记之代理缓存器-----cdn之varnish
5)实现varnish的缓存功能

在vim /etc/varnish/default.vcl编写如下
sub vcl_deliver{
if (obj.hits > 0){
set resp.http.X-Cache = "HIT from westos cache";
}
else{
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
Linux笔记之代理缓存器-----cdn之varnish
完成后,重新加载
/etc/init.d/varnish reload

测试结果

第一次
Linux笔记之代理缓存器-----cdn之varnish
没有缓存
第二次
Linux笔记之代理缓存器-----cdn之varnish
有缓存
清空缓存要在,varnish服务端进行。

清空缓存:varnishadm ban.url .*$                                       
varnishadm ban.url /index.html  访问方式不同         
要使用 curl -I 172.25.38.1/index.html
6)设置两个网页

在vim /etc/varnish/default.vcl编写如下
backend web1 {
  .host = "172.25.85.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.85.3";
  .port = "80";
}
sub vcl_recv{
    if (req.http.host ~ "^(www.)?westos.org"){
        set req.http.host = "www.westos.org";
        set req.backend = web1;
}elsif (req.http.host ~ "^bbs.westos.org"){
        set req.backend = web2;
    } else{
        error 404 "westos cache";
    }
}

完成后,重新加载
/etc/init.d/varnish reload

在测试机,加入本地解析

vim /etc/hosts

172.25.85.1 server1 www.westos.org bbs.westos.org
Linux笔记之代理缓存器-----cdn之varnish
测试结果
Linux笔记之代理缓存器-----cdn之varnish
7)如何实现负载均衡(轮询访问web1和web2)

在vim /etc/varnish/default.vcl编写如下

director lb round-robin{      ##实现轮询
    { .backend = web1; }
    { .backend = web2; }
}   
sub vcl_recv {
    if (req.http.host ~ "^(www.)?westos.org"){
        set req.http.host = "www.westos.org";
        set req.backend = lb;                ##访问www.westos.org 论寻
        return (pass);                            ##不会缓存,否则看不到效果
    }elsif ( req.http.host ~ "^bbs.westos.org" ){
        set req.backend = web2;
    }else{
        error 404 "westos cache";
    }
}
Linux笔记之代理缓存器-----cdn之varnish
完成后,重新加载
/etc/init.d/varnish reload
实验结果
Linux笔记之代理缓存器-----cdn之varnish
8)虚拟主机的安装

在server2或者server3实现

1、编辑配置文件vim /etc/httpd/conf/httpd.conf

990 NameVirtualHost *:80

1004 <VirtualHost :80>
1005     DocumentRoot /www
1006     ServerName www.westos.org
1007 </VirtualHost>
1008
1009 <VirtualHost
:80>
1010     DocumentRoot /bbs
1011     ServerName bbs.westos.org
1012 </VirtualHost>
Linux笔记之代理缓存器-----cdn之varnish
2、创建目录

[root@server3 html]# mkdir /www
[root@server3 html]# mkdir /bbs

3、编辑内容

[root@server3 html]# cd /www
[root@server3 www]# vim index.html
[root@server3 www]# cd /bbs/
[root@server3 bbs]# vim index.html
Linux笔记之代理缓存器-----cdn之varnish
重启服务

/etc/init.d/httpd restart

测试

测试机vim/etc/hosts
172.25.85.2 server2 www.westos.org bbs.westos.org
Linux笔记之代理缓存器-----cdn之varnish
结果
Linux笔记之代理缓存器-----cdn之varnish
9)cdn推送管理,清除缓存

1、安装相关软件

yum install unzip httpd php -y
Linux笔记之代理缓存器-----cdn之varnish
2、解压unzip bansys.zip -d /var/www/html/

3、编写bansys配置文件

cd /var/www/html/bansys/
vim config.php

编辑如下
 
Linux笔记之代理缓存器-----cdn之varnish
4、修改端口号为8080

vim /etc/httpd/conf/httpd.conf
 136 Listen 8080
启动http服务
/etc/init.d/httpd start

5、将所有bansys的配置文件移动到aphache目录下

mv * ../

测试:

测试机
vim /etc/hosts
172.25.85.1 server1 www.westos.org bbs.westos.org
Linux笔记之代理缓存器-----cdn之varnish
使用测试机访问cdn(vm1)服务器,可以看到cdn推送管理
172.25.85.1:8080
Linux笔记之代理缓存器-----cdn之varnish
6、编写varnish的配置文件            

vim /etc/varnish/default.vcl

编写
acl westos{
"127.0.0.1";
"172.25.85.0"/24;      ##85段的IP允许
}

sub vcl_recv {
    if (req.request == "BAN"){
        if (!client.ip ~ westos){
            error 405 "Not allowed.";
        }
    ban("req.url ~ " + req.url);
        error 200 "ban added";
    }
}
Linux笔记之代理缓存器-----cdn之varnish

Linux笔记之代理缓存器-----cdn之varnish
重新加载varnish
/etc/init.d/varnish reload

测试:

测试机 访问 172.25.85.1:8080
发送模式:HTTP
cdn www.westos.org
推送内容: .* ##清空缓存
Linux笔记之代理缓存器-----cdn之varnish
Linux笔记之代理缓存器-----cdn之varnish
在控制台
Linux笔记之代理缓存器-----cdn之varnish
Linux笔记之代理缓存器-----cdn之varnish

转载于:https://blog.51cto.com/14050771/2350313

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值