Varnish-CDN加速的实现(多个后端服务器实现负载均衡)

实验环境的搭建:

主机名 IP 服务
server1 172.25.4.1 varnish
server2 172.25.4.2 apache
server3 172.25.4.3 apache
配置server1:
配置server2:
  1. 安装apache服务: yum install httpd -y
  2. 在http服务默认发布目录下编写文件
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# vim index.html 
[[email protected] html]# cat index.html 
<h1>www.westos.org server2</h1>
配置server3(同上):
  1. 安装apache服务:yum install httpd -y
  2. 在http服务默认发布目录下编写文件
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# vim index.html
[[email protected] html]# cat index.html 
<h1>bbs.westos.org server3</h1>

一.配置多个后端服务器

配置server1:
  1. 编辑varnish默认配置文件
[[email protected] ~]# vim /etc/varnish/default.vcl 
backend web1 {       ##后端第一台服务器web1
  .host = "172.25.4.2";
  .port = "80";
}

backend web2 {     ##后端第二台服务器web2
  .host = "172.25.4.3";
  .port = "80";
}

## 以下内容意思是当客户端访问www.westos.org域名时,到web1上取数据
##当访问bbs,westos.org域名时,到web2上取数据
##当访问其他则会报错
sub vcl_recv {
     if (req.http.host ~ "^(www.)?westos.org"){
        set req.http.host = "www.westos.org";
        set req.backend = web1;
}elsif (req.http.host ~ "^bbs.westos.org"){
        set req.backend = web2;
    }   else{
         error 404 "westos cache";
    }
}
##清除缓存
sub vcl_deliver{
if (obj.hits > 0){
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

Varnish-CDN加速的实现(多个后端服务器实现负载均衡)
Varnish-CDN加速的实现(多个后端服务器实现负载均衡)
2. 修改完后重新加载配置文件
Varnish-CDN加速的实现(多个后端服务器实现负载均衡)

测试:
  1. 在真机上添加解析:vim /etc/hosts
    Varnish-CDN加速的实现(多个后端服务器实现负载均衡)
  2. 测试:
    Varnish-CDN加速的实现(多个后端服务器实现负载均衡)

二.负载均衡

什么是负载均衡?

1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
2)简单来说就是:其一是将大量的并发处理转发给后端多个节点处理,减少工作响应时间;其二是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。

配置server1:
  1. 编辑varnish默认配置文件
backend web1 {
  .host = "172.25.4.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.4.3";
  .port = "80";
}

director lb round-robin {     ##轮询
        { .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";
    }
}
sub vcl_deliver{
if (obj.hits > 0){
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

Varnish-CDN加速的实现(多个后端服务器实现负载均衡)
Varnish-CDN加速的实现(多个后端服务器实现负载均衡)

测试:当访问www.westos. org时,web1与web2轮询

Varnish-CDN加速的实现(多个后端服务器实现负载均衡)

三.虚拟主机(一台主机多个解析)

配置server3
  1. 编辑server3主机http服务主配置文件,在最后添加如如下内容
 990 NameVirtualHost *:80  ##将990行注释去掉
<VirtualHost *:80>
DocumentRoot /www
ServerName www.westos.org
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org
</VirtualHost>
  1. 创建/www和/bbs两个目录,并在目录下编写发布文件index.html
[[email protected] html]# mkdir /www
[[email protected] html]# mkdir /bbs
[[email protected] html]# cd /www
[[email protected] www]# vim index.html
[[email protected] www]# cat index.html 
<h1>www.westos.org server3</h1>
[[email protected] www]# cd /bbs
[[email protected] bbs]# vim index.html
[[email protected] bbs]# cat index.html 
<h1>bbs.westos.org server3</h1>
  1. 重起http服务:/etc/init.d/httpd restart
    Varnish-CDN加速的实现(多个后端服务器实现负载均衡)
测试:
  1. 在主机上添加解析:vim /etc/hosts
    Varnish-CDN加速的实现(多个后端服务器实现负载均衡)
  2. 测试:
    Varnish-CDN加速的实现(多个后端服务器实现负载均衡)