CDN网络加速之varnish反向代理服务

一、网络加速的基本认识

1.对cdn的认识
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
2.什么是varnish
Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好

二、varnish服务的具体实现

1.基于一台后端服务器的varnish缓存

1.varnish服务器的设置
配置好三台虚拟机进行实验,分别为server1,server2,server3
然后我们将server1的主机作为varnish的服务机
下载varnish的安装包,这里我们放置在/varnish的目录中

cd /varnish
yum install * -y 进行安装服务
/etc/init.d/varnish start 开启varnish服务

ulimit -a查看系统中的文件、容量等等的限制范围

这里写图片描述

第一步:修改配置文件的端口
vim /etc/sysconfig/varnish
#将服务的端口设置为80端口
VARNISH_LISTEN_PORT=80 
第二步:修改服务在系统的限制文件
'#用户在服务中进行操作,所以对服务的限制即就是对用户的限制
vim /etc/security/limits.conf
varnish          -       nofile          7000
varnish          -       memlock         82000
varnish          -       nproc           unlimied

第三步:修改服务的配置文件
 vim default.vcl 
backend web1 {
  #指定访问后台用户和端口
  .host = "172.25.33.2";
  .port = "80";
}
#此函数是对varnish信息的返回提示,如果缓存信息超过2分钟,则返回抓取不到,下一次请求则去后台服务器去提取信息,如果正确抓取到信息则正确返回抓取的缓存器
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);
}

刷新服务
/etc/init.d/varnish reload

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

2.创建另一个虚拟机,名称为server2


yum install httpd
/etc/init.d/httpd start
vim /var/www/html/index.html
www.westos.org

3.主机测试


进行DNS解析
vim /etc/hosts
172.25.33.1  www.westos.org
172.25.33.1  bbs.westos.org
curl www.westos.org(出现server2重默认发布的内容)
curl www.westos.org -I(出现缓存信息)

这里写图片描述
这里写图片描述
手动清除缓存

### 通过 varnishadm 手动清除缓存
# varnishadm ban.url .*$
#清除所有
# varnishadm ban.url /index.html
#清除 index.html 页面缓存
# varnishadm ban.url /admin/$
#清除 admin 目录缓存

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

1.varnis服务器设置

vim /etc/sysconfig/varnish
backend web1 {
.host = "172.25.33.2";
.port = "80";
}
backend web2 {
.host = "172.25.33.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 = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}
#刷新服务
/etc/init.d/varnish reload

这里写图片描述
这里写图片描述
2.创建server3虚拟机(修改ip和主机名)

yum install httpd
/wtc/init.d/httpd start
vim /var/www/html/index.html
bbs.westos.org

3.主机测试:


curl www.westos.org
出现指定用户server2的默认发布内容
curl bbs.westos.org
出现指定server3的默认发布内容

3.基于多台服务器的负载均衡

1.varnish服务器的配置(server1)

vim /etc/varnish
backend web1 {
.host = "192.168.0.2";
.port = "80";
}
backend web2 {
.host = "192.168.0.3";
.port = "80";
}
director linux 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 = linux;
return (pass);
#为了测试方便,不进行缓存。
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {
error 404 "westos cache";
}
}

2.后台服务器的配置(server3)

server3的配置:
打开80端口
NameVirtualHost *:80

最后添加默认发布目录
vim /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName bbs.westos.org
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /www1
    ServerName www.westos.org
</VirtualHost>
"/etc/httpd/conf/httpd.conf" 1017L, 34599C                      1017,1        Bot


/etc/init.d/httpd restart
mkdir /www1
vim /www1/index.html
www.westos.org---server3

这里写图片描述
3.另一台后台服务器的配置(server2)

server2中
vim /var/www/html/index.html
www.westos.org---server2

4.测试主机:

curl www.westos.org
交替出现server2和server3中默认发布内容,将其中一个用户关闭,则另一个用户继续抓取信息的工作,实现负载均衡,使其关闭的方法是关闭http服务,清除缓存即可

这里写图片描述

实验问题及其解决方案
1、如果网桥的虚拟机连接断掉,则作以下操作把虚拟机添加在网桥上
brctl show
brctl addif br0 vnet0
ip link set up dev vnet0
注:添加ssh服务
yum search openssh
yum install openssh-clients.x86_64 下载ssh服务
问题2:网卡如果不在网桥上
将/etc/sysconfig/中的wifi和一些图形化信息删除

猜你喜欢

转载自blog.csdn.net/ningyuxuan123/article/details/81263164