标签:主机 代理服务器 init.d bar htm 配置管理 开发 设定 ip地址
一.Varnish简述
varnish是一款高性能且开源的方向代理服务器和HTTP加速器,它的开发者poul-Henning kamp是FreeBSD 核心的开发人员之一。varnish采用全新的软件体系机构,和现在的硬件体系配合紧密,varnish是一个轻量级的cache和反向代理软件。先进的设计理念和成熟的设计框架是varnish的主要特点。挪威最大的在线报纸 Verdens Gang 使用3台Varnish服务器 代替了原来的12台Squid服务器,结果性能比以前更好。
二.varnish的特点
1、基于内存进行缓存,重启后数据将消失。
2、利用虚拟内存方式,I\O性能好。
3、支持设置0~60秒的精确缓存时间。
4、VCL配置管理比较灵活。
5、具有强大的管理功能,例如top、stat、admin、list 等。
6、状态机设计巧妙、结构清晰。
7、利用二叉堆管理缓存文件,可达到积极删除目的。
三.varnish处理缓存的过程
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或 Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进 入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地 的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
四.varnih的使用
实验所需环境:三台配置好网络的虚拟机,分别设置主机名为server1、server2、server3
1.安装服务
在server1中打开官网,下载rpm包进行安装
yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y
2.配置服务
编辑系统配置文件,文件的参数需要根据实际的系统内核及系统还有相关硬件设定
vim /etc/security/limits.conf 写入: varnish - nofile 6555 ##最大文件数 varnish - memlock 82000 ##最大内存空间 varnish - nproc unlimited ##子线程数
编辑服务配置文件
vim /etc/sysconfig/varnish ##varnish的配置文件,配置 varnish 服务端口 VARNISH_LISTEN_PORT=80 ##varnish监听端口
vim /etc/varnish/default.vcl ##配置一个后端服务器,缓存配置 backend default { .host = "172.25.3.2"; ##host指定要缓存的后端服务器地址 .port = "80"; }
3.启动服务
/etc/init.d/varnish start
4.测试
在server2中配置好http服务,并编写一个网页文件index.html,内容任意
在真机中打开浏览器输入server1的IP地址,可以看到server2中的发布页面内容
5.查看缓存命中情况
在varnish服务器上
vim default.vcl 12 sub vcl_deliver { 13 if (obj.hits > 0) { 14 set resp.http.X-Cache = "HIT from westos cache"; #命中显示 15 } 16 else { 17 set resp.http.X-Cache = "MISS from westos cache"; ##没命中显示 18 } 19 return (deliver); 20 } /etc/init.d/varnish reload #varnish支持热插拔
6.清除缓存
varnishadm ban.url .*$ ##清除所有
varnishadm ban.url /index.html ##清除 index.html 页面缓存
varnishadm ban.url /admin/$ 清除 admin 目录缓存
五.varnish的扩展使用
1多个不同域名对应后端服务器
在varnish服务器上
vim default.vc backend web1 { .host = "172.25.3.2"; .port = "80"; } backend web2 { .host = "172.25.3.3"; .port = "80"; } sub vcl_recv { if (req.http.host ~ "^(www.)?westos.org") { #当域名为以www.westso.org开头或westos.org时去web1主机缓存 set req.http.host = "www.westos.org"; set req.backend = web1; } elsif (req.http.host ~ "^bbs.westos.org") { #当域名以bbs.westos.org开头 时去web2主机缓存 set req.backend = web2; } else {error 404 "westos cache"; } } /etc/init.d/varnish reload ###重新加载
2负载均衡
VCL文件中可以把多个 backends 聚合成一个组,这些组被叫做 director,当组里一个 backend 挂掉后,可以选择另一个健康的 backend。VCL 有多种 director,不同的 director 采用不同的算法选择 backend,主要有以下几种: ..Random director 会根据所设置的权值(weight)来选择 backend,.retries 参数表示尝试找到一个 backend 的最大次数,.weight 参数表示权值 ..Round-robin director 在选择 backend 时,会采用循环的方式依次选择。
在server3中配置好http服务器,并建立两个apache虚拟主机,注意不同的虚拟机的发布目录不能设置为同一个目录
vim /etc/httpd/conf/httpd.conf #配置虚拟主机 NameVirtualHost *:80 ##去掉该行的注释 <VirtualHost *:80> DocumentRoot /var/www/html ServerName www.westos.org </VirtualHost> <VirtualHost *:80> DocumentRoot /www ServerName bbs.westos.org </VirtualHost>
在server1中
vim default.vc #这里用round-robin做实验 backend web1 { .host = "172.25.3.2"; .port = "80"; } backend web2 { .host = "172.25.3.3"; .port = "80"; } director westos round-robin { #建立一个名为lb的组,实现web1和web2之间的轮询 { .backend = web1; } { .backend = web2; } } sub vcl_recv { if (req.http.host ~ "^(www.)?westos.org") { #当客户端搜索符合条件的域名时,用westos组实现轮询 set req.http.host = "www.westos.org"; set req.backend = westos; return (pass); } elsif (req.http.host ~ "^bbs.westos.org") { set req.backend = web2; } else {error 404 "westos cache"; } } /etc.init.d/varnish reload
标签:主机 代理服务器 init.d bar htm 配置管理 开发 设定 ip地址
原文地址:https://www.cnblogs.com/ChairmanYSL/p/9691382.html