前言
在《企业项目实战----CDN加速的实现》一文中已经介绍了如何实现CDN加速以及如何清除CDN缓存,这还不够,varnish不仅有优秀的反向代理能力,还能实现负载均衡,进一步减轻服务器的压力!
《企业项目实战----CDN加速的实现》链接:点击此处即可查看《企业项目实战----CDN加速的实现》一文
实验环境
目前,企业中大多用的还是企业6
server1 172.25.64.1 varnish端(CDN缓存) 版本企业6
server2 172.25.64.2 服务器(apache) 版本企业6
server3 172.25.64.3 服务器(apache) 版本企业6
allen 172.25.64.x 客户端 版本企业7(无影响)
一、定义多个不同域名站点的后端服务器
server1(varnish代理端)
1、本实验是在varnish端能实现CDN加速的前提下进行的!
详情请看《企业项目实战----CDN加速的实现》中的varnish实现单个后端服务器的部署部分!
2、编写varnish默认文件实现
[root@server1 ~]# vim /etc/varnish/default.vcl
backend web1 { #定义web1
.host = "172.25.64.2"; #访问主机172.25.64.2(server2)
.port = "80"; #80端口访问
}
backend web2 {
.host = "172.25.64.3";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?server2.com") {
set req.http.host = "www.server2.com"; #如果域名是www.server2.com,访问web1
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.server3.com") { #如果域名是bbs.server3.com
set req.backend = web2; #访问web2
} else {error 404 "server cache"; #其他404报错
}
}
[root@server1 ~]# /etc/init.d/varnish reload #重新加载
server2(后端服务器)
[root@server2 ~]# yum install httpd -y #安装阿帕其
[root@server2 ~]# vim /var/www/html/index.html #编写默认发布文件
这里是服务器server2,ip为172.25.64.2!
[root@server2 ~]# /etc/init.d/httpd start #启动阿帕其
server3(后端服务器)
[root@server3 ~]# yum install httpd -y #安装阿帕其
[root@server3 ~]# vim /var/www/html/index.html #编写默认发布文件
欢迎访问server3,我的IP是172.25.64.3!
[root@server3 ~]# /etc/init.d/httpd start #启动阿帕其
客户端测试
1、编写本地解析
因为是本地实验,域名是自己编的,电脑不认识,我们就手动让它认识!
[root@allen ~]# vim /etc/hosts
172.25.64.1 www.server2.com
172.25.64.1 bbs.server3.com
2、通过域名访问varnish代理机
二、负载均衡
负载均衡就是多个服务器一起分担访问量
server1(varnish代理端)
[root@server1 ~]# vim /etc/varnish/default.vcl
director lb round-robin { ##轮询 添加进去
{ .backend = web1; }
{ .backend = web2; }
}
sub vcl_recv { #修改部分
if (req.http.host ~ "^(www.)?server2.com") {
set req.http.host = "www.server2.com";
set req.backend = lb; ##启用轮询,当域名为www.server2.com时
return (pass); ##为了方便测试,此处不做缓存
[root@server1 ~]# /etc/init.d/varnish reload
如图:
有蓝色注释部分便是负载均衡在上一个实验下修改的部分
域名为wwwserver2.com时,启动轮询,在web1和web2之间
客户端测试
[root@allen ~]# curl www.server2.com
三、配置一个主机提供多个域名服务
server3(后端服务器)
[root@server3 ~]# cd /etc/httpd/conf.d/
[root@server3 conf.d]# vim adefault.conf
########################写入你要写的域名
NameVirtualHost *:80 #80端口
<VirtualHost *:80>
DocumentRoot /www #发布目录
ServerName www.lee.org #域名
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.allen.org
</VirtualHost>
[root@server3 conf.d]# mkdir /www
[root@server3 conf.d]# vim /www/index.html #发布文件
你访问的是www.lee.org!
[root@server3 conf.d]# mkdir /bbs
[root@server3 conf.d]# vim /bbs/index.html
你访问的是www.allen.org!
[root@server3 conf.d]# /etc/init.d/httpd restart #重启阿帕其服务
客户端测试
1、编写本地域名解析
172.25.64.3 www.lee.org bbs.allen.org
2、访问域名