cdn加速之varnish

实验环境:

一个客户端,一个反向代理,多个后端服务器
代理服务器关掉防火墙,selinux设置为disabled,让它们处于同一个网段,方便测试

代理:cdn加速,反向代理,负载均衡
客户端:测试
后端服务器:提供服务

正向代理:客户端知道服务器端,但是必须通过一个代理服务器
反向代理:客户端不知道服务器端,知道代理服务器端,访问代理服务器端,由代理服务器转发请求,转发回应消息。

varnish工作原理图

在这里插入图片描述

实验步骤:

1、下载并安装varnish
在这里插入图片描述
2、修改配置文件
1)、/etc/varnish/varnish.params :修改端口为80
在这里插入图片描述
2)、 /etc/varnish/default.vcl :添加代理服务器的信息

backend default {
	.host = "代理的ip地址"
	.port = "80"
}

2、配置缓存命中
1)、/etc/varnish/default.vcl在这里插入图片描述
2)、测试

curl -I 代理服务器ip地址

在这里插入图片描述

3、清空缓存
1)、命令清空缓存:

varnishadm ban.url "~" / 	//清除所有
varnishadm ban.url "~" /index.html	//清除index.html页面缓存

2)、界面清空缓存:
获取压缩包bansys.zip
在这里插入图片描述
配置:

yum install httpd php unzip -y

unzip bansys.zip -d /var/www/html/	#-d指定解压路径
cd /var/www/html/
ls
mv bansys/* ../	#把解压的内容移到上以及目录/var/www/html

配置 /var/www/html/config.php 文件:

<?php
//varnish主机列表
 //可定义多个主机列表
 $var_group1 = array(
                        'host' => array('172.25.60.1'),
                                                'port' => '8080',                        
                    );
 //varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         'www.westos.com' => $var_group1,
                          );
?>

/etc/varnish/default.vcl:设置访问控制,缓存清理功能

 acl westos {		#设置访问控制
	"127.0.0.1";	#允许自己
	"172.25.60.0"/24;	#允许172.25.60/24网段
}

if (req.method == "BAN") {
 	if (!client.ip ~ westos) {
		return (synth(405,"Not allowed."));
	}
	ban("req.url ~ " + req.url);
		return(purge);					#清理缓存
}

4、反向代理
1)、vim /etc/varnish/default.vcl

#配置两个web服务器
backend web1 {
.host = "172.25.60.2";
.port = "80";
}
backend web2 {
.host = "172.25.60.3";
.port = "80";
}

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

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
	set req.http.host = "www.westos.org";
	set req.backend_hint = lb.backend();
} 
elsif (req.http.host ~ "^bbs.westos.org") {
	set req.backend_hint = web2;
} 
else {
	return (synth(405));
}

2)、客户端解析测试

根据本地解析,都解析到了172.25.1.101(server1),它通过varnish的配置文件规则访问不同的服务器
在这里插入图片描述
在这里插入图片描述
5、负载均衡
1)、 /etc/varnish/default.vcl

##导入directors模块,进行轮询等操作
import directors from "/usr/lib64/varnish/vmods/libvmod_directors.so";

##定义负载均衡模式
sub vcl_init {
	new lb = directors.round_robin();		//轮询上面定义的两个站点web1和web2
	lb.add_backend(web1);
	lb.add_backend(web2);
}

##修改访问模式
sub vcl_recv {
	if (req.http.host ~ "^(www.)?westos.org") {
		set req.http.host = "www.westos.org";
		set req.backend_hint = lb.backend();	
		#访问www.westos.org去轮询web1h和web2
		return(pass)
		#因为存在缓存,为了测试方便,不进行缓存。
	} 
	elsif (req.http.host ~ "^bbs.westos.org") {
		set req.backend_hint = web2;		
		#访问bbs.westos.org时去访问web2
	} 
	else {
		return (synth(405));
	}
}

2)、测试
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值