一、Varnish简介
Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点。
Varnish是一款高性能的开源HTTP加速器,他的作者Poul-Henning Kamp是FreeBSD的内核开发者之一。挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。 Varnish与一般服务器软件类似,就是一个web缓存代理服务器,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。
Management进程主要实现应用新的配置、编译VCL、监控varnish、初始化varnish以及提供一个命令行接口等。 Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回 应,Management将会重启此Child进程。 Child进程包含多种类型的线程,常见的如: Acceptor线程:接收新的连接请求并响应; Worker线程:child进程会为每个会话启动一个worker线程,因此,在高并发的场景中可能会出现数百个worker线程甚至更多; Expiry线程:从缓存中清理过期内容; Varnish依赖“工作区(workspace)”以降低线程在申请或修改内存时出现竞争的可能性。在varnish内部有多种不同的工作区,其中最关键的当属用于管理会话数据的session工作区。
二、VCL简介
Varnish Configuration Language (VCL)是varnish配置缓存策略的工具,它是一种基于“域”(domain specific)的简单编程语言,它支持有限的算术运算和逻辑运算操作、允许使用正则表达式进行字符串匹配、允许用户使用set自定义变量、支持if判 断语句,也有内置的函数和变量等。使用VCL编写的缓存策略通常保存至.vcl文件中,其需要编译成二进制的格式后才能由varnish调用。
VCL处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或 Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进 入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地 的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
三、虚拟机的封装
本次安装通过http安装,需要提前配置好本地dhcp服务,地址池设置如下:
1、virt-manager打开虚拟机管理器安装base虚拟机:
2、进入安装界面
TCP/IP中ipv4中选择dhcp,关闭ipv6
重新初始化所有磁盘设备
Partition Type(分区类型)有三种: Use entire drive #使用全部的磁盘; Replace existing Linux system #替换现有的Linux系统; Use free space #使用剩余空间 由于是全新安装,三种任意均可
将存储设置写入磁盘
四、配置base虚拟机
1、在虚拟机中:
删除rule
cd /etc/udev/rules.d
rm -fr 70*
注:若不删除,当网卡启动时,这个udev规则文件会分配一个网卡名称
2.关闭火墙
iptables -L #查看火墙状态
/etc/init.d/iptables stop #关闭火墙
chkconfig iptables off #设置火墙开机不启动
3.关闭selinux
vi /etc/sysconfig/selinux
SELINUX=disable
4.配置网络
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
重启网络
/etc/init.d/network restart
5.配置yum仓库
使用物理机通过httpd共享的网络yum源
yum clean all #清缓存
yum repolist #列出仓库软件总数
6.安装常用工具
yum install vim lftp -y
yum install openssh-clients -y
7.更改主机名
vim /etc/sysconfig/network
HOSTNAME=server1 #永久更改主机名为server1
8.配置本地解析
vim /etc/hosts
9.关闭虚拟机
poweroff
物理机中操作:
virt-sysprep -d base
安装工具包:
2.删除虚拟机管理器中的base
不删除镜像文件
五、创建子虚拟机
1、创建子虚拟机镜像
qemu-img create -f qcow2 -b base.qcow2 vm1
qemu-img create -f qcow2 -b base.qcow2 vm2
qemu-img create -f qcow2 -b base.qcow2 vm3
qemu-img create -f qcow2 -b base.qcow2 vm4
2、导入新建的子虚拟机镜像到虚拟机管理器
选择通过镜像导入,选择镜像,os type选择linux,version选择redhat6.5
3、配置子虚拟机
打开子虚拟机,更改IP和主机名,并重启网络,关闭虚拟机
依次配置完三台子虚拟机
六、varnish的安装
1、安装varnish
yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y
2.更改varnish全局配置
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80 #更改varnish服务端口为80
3.更改varnish配置文件
vim /etc/varnish/default.vcl
backend default { #配置一个后端服务器
.host = "172.25.56.2"; #更改访问IP为172.25.56.2
.port = "80";
}
4.重新加载服务
/etc/init.d/varnish reload
2、server2中:
yum install httpd -y
/etc/init.d/httpd start
2.编写index.html
cd /var/www/html
vim index.html
<h1>server2</h1>
3.重新加载服务
/etc/init.d/httpd reload
3、测试:
物理机中打开firefox,访问172.25.56.1,看到server2即配置成功