1.安装包
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm
2.操作步骤
(1)一个节点
[root@server1 ~]# rpm -ivh varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:varnish ########################################### [100%]
[root@server1 ~]# cd /etc/varnish/
[root@server1 varnish]# vim default.vcl ##编辑文件,与主机IP为2相关联,端口为80
backend web1 {
.host = "172.25.38.2";
.port = "80";
}
[root@server1 varnish]# vim /etc/sysconfig/varnish ##编写配置文件,监听端口80
66 VARNISH_LISTEN_PORT=80
[root@server2 ~]# yum install -y httpd ##安装httpd
[root@server2 ~]# echo server2.example.com > /var/www/html/index.html##编写测试文件
[root@server2 ~]# /etc/init.d/httpd start ##开启httpd
Starting httpd: [ OK ]
[root@server2 ~]# netstat -antlp##查看端口,是否开启服务
tcp 0 0 :::80 :::* LISTEN 0 9988 1256/httpd
[root@foundation38 Desktop]# vim /etc/hosts ##在测试机上,要做解析域名
172.25.38.1 server1.example.com www.westos.org westos.org bbs.westos.org
172.25.38.2 server2.example.com
172.25.38.3 server3.example.com
在本机打开浏览器,访问测试
(2)两个节点
[root@server3 ~]# yum install -y httpd##安装httpd
[root@server3 ~]# echo server3.example.com > /var/www/html/index.html##编写测试文件
[root@server3 ~]# /etc/init.d/httpd start##开启服务
Starting httpd: [ OK ]
[root@server3 ~]# netstat -antlp##查看端口
tcp 0 0 :::80 :::* LISTEN 0 9988 1256/httpd
[root@server1 varnish]# vim default.vcl ##编辑文件
backend web1 {
.host = "172.25.38.2";
.port = "80";
}
backend web2 {
.host = "172.25.38.3";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") { ##如果输入为westos.org,自动补全为www.westos.org
set req.http.host = "www.westos.org";
set req.backend = web1;##满足上述条件,选择web1
}
elsif (req.http.host ~ "^bbs.westos.org") {##如果是bbs开头,则选择web2
set req.backend = web2;
}
else {error 404 "westos cache";##如果上述条件都不满足,则给出错误提示
}
}
[root@server1 varnish]# /etc/init.d/varnish restart##更改配置文件后,重启服务
Stopping Varnish Cache: [ OK ]
Starting Varnish Cache:
在本机打开浏览器,访问测试
(3)cluster
[root@server3 ~]# vim /etc/httpd/conf/httpd.conf ##添加虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName server3.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/www1##虚拟主机1发布目录
ServerName www.westos.org
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/www2##虚拟主机2发布目录
ServerName bbs.westos.org
</VirtualHost>
[root@server3 ~]# mkdir /var/www/html/www1##创建目录
[root@server3 ~]# mkdir /var/www/html/www2##创建目录
[root@server3 www1]# echo server3.example.com-www1 >/var/www/html/www1/index.html##编写测试文件
[root@server3 www1]# echo server3.example.com-www2 >/var/www/html/www2/index.html##编写测试文件
[root@server3 www1]# /etc/init.d/httpd restart##更改配置后,重启服务
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@server1 varnish]# vim default.vcl##编辑配置文件
backend web1 {
.host = "172.25.38.2";
.port = "80";
}
backend web2 {
.host = "172.25.38.3";
.port = "80";
}
director lb round-robin {##仲裁机制随机选取,把web1、web2加入到lb组里面
{.backend = web1;}
{.backend = web2;}
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
return (pass);##此处为了测试结果明显,加入此句。句意为:不从缓存取数据,直接从后端取数据
}
elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
}
else {error 404 "westos cache";
}
}
[root@server1 varnish]# /etc/init.d/varnish restart
Stopping Varnish Cache: [ OK ]
Starting Varnish Cache: [ OK ]
在本机打开浏览器,访问测试
----------------------------------------------------