阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

高性能缓存服务器Varnish深入浅出部署

163次阅读
没有评论

共计 4818 个字符,预计需要花费 13 分钟才能阅读完成。

前言:

一)什么是反向代理?

反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

二)在网络上常见的代理服务器有三种:

1、标准的代理缓冲服务器

一个标准的代理缓冲服务被用于缓存静态的网页(例如:html 文件和图片文件等)到本地网络上的一台主机上 — 即代理服务器(传统代理)

优点:当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里请求数据而不再向原 web 站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。

缺点:要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的 IP 地址和端口号。

2、透明代理缓冲服务器

透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的 IP 和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的 HTTP(80 端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程 web 服务器发出请求,其余操作和标准的代理服务器完全相同。对于 Linux 操作系统来说,透明代理使用 Iptables 缓存及加速 -03 单 - 高性能缓存服务器 Varnish.txt[2016/8/19 15:28:24] 或者 Ipchains 实现。因为不需要对浏览器作任何设置,所以,透明代理对于 ISP(Internet 服务器提供商)特别有用。

3、反向代理缓冲服务器

反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始 WEB 服务器的负载。反向代理服务器承担了对原始 WEB 服务器的静态页面的请求,防止原始服务器过载。它位于本地 WEB 服务器和 Internet 之间,处理所有对 WEB 服务器的请求,阻止了 WEB 服务器和 Internet 的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向 WEB 服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向 WEB 服务器的请求数从而降低了 WEB 服务器的负载。

一、构建 Varnish 反向代理

———Client———Varnish———WEB———

eth0:1.1.1.254    eth0:1.1.1.1    eth1:192.168.1.100

              eth1:192.168.1.1 

依旧采用 CentOS6 系列最小化安装系统。

二)搭建步骤:

1、关闭防火墙

2、关闭 selinux

3、安装相关插件 

[root@localhost ~]# yum -y install libtool ncurses-devel pcre-devel libxslt

              pkgconfig groff  这几个包本地 yum 源有

[root@localhost ~]# rpm -ivh libedit-2.11-4.20080712cvs.1.el6.x86_64.rpm

[root@localhost ~]# rpm -ivh Python-imaging-1.1.6-19.el6.x86_64.rpm

[root@localhost ~]# rpm -ivh python-docutils-0.6-1.el6.noarch.rpm

上述三个包前两个本地 YUM 源有,python-docutils 需要安装第三方 yum 源或者百度搜索这个包吧

[root@localhost ~]# tar -zxvf varnish-4.1.3.tar.gz -C /usr/src/

varnish 官网:http://www.varnish-cache.org/

[root@localhost ~]# cd /usr/src/varnish-4.1.3/

[root@localhost varnish-4.1.3]# ./configure –prefix=/usr/local/varnish –enable-debuggingsymbols

[root@localhost varnish-4.1.3]# make && make install

[root@localhost varnish-4.1.3]# ls /usr/local/varnish/

[root@localhost ~]# ln -s /usr/local/varnish/sbin/* /usr/sbin/

[root@localhost ~]# ln -s /usr/local/varnish/bin/* /usr/local/bin/

[root@localhost ~]# cp /usr/local/varnish/share/doc/varnish/example.vcl

/usr/local/varnish/default.vcl

[root@localhost ~]# vim /usr/local/varnish/default.vcl

修改:

backend default {

.host = “192.168.1.100”;

.port = “80”;

}

[root@localhost ~]# varnishd -f /usr/local/varnish/default.vcl -a 0.0.0.0:80

[root@localhost ~]# netstat -anpt | grep varnish

注意:

停止 varnish 用下面的命令:

[root@localhost ~]# killall -9 varnishd

4、在 WEB 服务器

[root@localhost ~]# service httpd restart

[root@localhost ~]# echo “welcome to WEB server” > /var/www/html/index.html

5、综合验证:

1、在 varnish 代理服务器上

[root@localhost ~]# varnishlog

2、在 WEB 服务器上:

缓存及加速 -03 单 - 高性能缓存服务器 Varnish.txt[2016/8/19 15:28:24]

[root@localhost ~]# tail -f /etc/httpd/logs/access_log

二、部署 Varnish 负载均衡高可用群集

在上面的基础之上来完成下 Varnish 负载均衡高可用群集的部署

——Client———Varnish————-WEB1——–WEB2———-

  1.1.1.254    eth0:1.1.1.1

            eth1:192.168.1.1 192.168.1.100 192.168.1.200

一)部署负载均衡

[root@localhost ~]# vim /usr/local/varnish/default.vcl

修改:

backend web1 {

.host = “192.168.1.100”;

.port = “80”;

}

backend web2 {

.host = “192.168.1.200”;

.port = “80”;

}

import directors; // 加载 directors 模块

缓存及加速 -03 单 - 高性能缓存服务器 Varnish.txt[2016/8/19 15:28:24]

sub vcl_init {

new bar = directors.round_robin();

bar.add_backend(web1);

bar.add_backend(web2);

}

sub vcl_recv {

set req.backend_hint = bar.backend();

}

[root@localhost ~]# varnishd -C -f /usr/local/varnish/default.vcl // 检查语法

[root@localhost ~]# varnishd -f /usr/local/varnish/default.vcl // 启动

[root@localhost ~]# netstat -anpt | grep varnishd

验证:

客户端访问 http://1.1.1.1/,varnish 服务器会根据算法分配流量。

二)在实际应用中,当其中一个节点出现故障,实际上 varnish 服务器无法访问故障节点,但是 varnish 服务器中有缓存页面内容,客户端可以访问到相同的页面内容。无法实现自动切换,我们要求实现无缝转发流量。

[root@localhost ~]# vim /usr/local/varnish/default.vcl

增加:

backend web1 {

.host = “192.168.1.100”;

.port = “80”;

.probe = {// 开启健康检查

.url = “/”; // 请求的 URL 路径

.interval = 5s; // 查询间隔时间

.timeout = 1s; // 超时时间

.window = 5; // 滑动窗

缓存及加速 -03 单 - 高性能缓存服务器 Varnish.txt[2016/8/19 15:28:24]

.threshold = 3; // 上次检查.window 数量的多少,

}

}

backend web2 {

.host = “192.168.1.200”;

.port = “80”;

.probe = {

.url = “/”;

.interval = 5s;

.timeout = 1s;

.window = 5;

.threshold = 3;

}

}

…… 略(其他保持一样)……

注意:可能会由于缓存的原因,切换会有延迟,我做的时候,延迟有点大,好长时间页面才切换过来……

[root@localhost ~]# varnishd -C -f /usr/local/varnish/default.vcl // 检查语法

[root@localhost ~]# varnishd -f /usr/local/varnish/default.vcl // 启动

[root@localhost ~]# netstat -anpt | grep varnishd

验证:

客户端访问 http://1.1.1.1/,varnish 服务器会根据故障实现切换。

缓存服务器 Varnish 概念篇 http://www.linuxidc.com/Linux/2014-05/101389.htm

缓存服务器 Varnish 概念篇 http://www.linuxidc.com/Linux/2014-05/101389.htm

Varnish Cache 的架构笔记 http://www.linuxidc.com/Linux/2013-10/91016.htm

CentOS 5.8 下 Varnish-2.1.5 的安装配置 http://www.linuxidc.com/Linux/2013-09/89916.htm

RedHat 脚本改用 CentOS 源更新安装 Nginx、PHP 5.3、Varnish http://www.linuxidc.com/Linux/2012-07/65801.htm

Red Hat Linux 7 下 Varnish 简单搭建 http://www.linuxidc.com/Linux/2016-03/129284.htm

Varnish 缓存实现动静分离  http://www.linuxidc.com/Linux/2016-11/137152.htm

Linux 下 Varnish 缓存的配置优化 http://www.linuxidc.com/Linux/2012-03/56435.htm

Linux 中 Varnish 基础应用  http://www.linuxidc.com/Linux/2016-08/134025.htm

Varnish 的详细介绍 :请点这里
Varnish 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140655.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4818字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中