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

实验环境:

主机名IP服务
server1172.25.64.1varnish
server2172.25.64.2apache
server3172.25.64.3apache
[root@server2 ~]# yum install httpd -y
  1. 编写前端文件
[root@server2 ~]# cd /var/www/html
[root@server2 html]# vim index.html
<h1>www.westos.org - server2</h1>
  • server3:同上
[root@server3 ~]# cd /var/www/html
[root@server3 html]# vim index.html
<h1>bbs.westos.org - server3</h1>

一、配置多个后端服务的varnish

  1. server1:配置varnish的default文件
[root@server1 ~]# vim /etc/varnish/default.vcl
backend web1 {         # 后端第一个服务器名web1
  .host = "172.25.64.2";     #将server2 www.westos.org作为第一个服务器主机
  .port = "80";
}

backend web2 {        # 后端第二个服务器名web2
  .host = "172.25.64.3";    #将server3 bbs.westos.org作为第二个服务器主机
  .port = "80";
}

#当访问 www.westos.org 或 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";
     }
}
 
  1. 重新加载配置文件
[root@server1 ~]# /etc/init.d/varnish reload
  1. 测试
  • 添加解析
[root@foundation64 ~]# vim /etc/hosts
172.25.64.1 www.westos.org bbs.westos.org
  • 物理机中的访问测试
[root@foundation64 ~]# curl www.westos.org     ##也可加上-I参数,查看cdn缓存
<h1>www.westos.org - server2</h1>
[root@foundation64 ~]# curl bbs.westos.org
<h1>bbs.westos.org - server3</h1>

二、负载均衡

  • 负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。
  • 负载均衡算法的种类有很多种,常见的负载均衡算法包括轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接法等,应根据具体的使用场景选取对应的算法。
  • 在varnish中我们采用的是轮询法,平衡对待每一个后端服务器。
backend web1 {
  .host = "172.25.64.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.64.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";
     }
}
重新加载配置文件
[root@server1 ~]# /etc/init.d/varnish reload

测试:

[root@foundation64 ~]# curl www.westos.org
<h1>www.westos.org - server2</h1>
[root@foundation64 ~]# curl www.westos.org
<h1>bbs.westos.org - server3</h1>
[root@foundation64 ~]# curl www.westos.org
<h1>www.westos.org - server2</h1>
[root@foundation64 ~]# curl www.westos.org
<h1>bbs.westos.org - server3</h1>

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

  1. 在server3的httpd的默认发布目录中建立两个虚拟主机
[root@server3 ~]# vim /etc/httpd/conf/httpd.conf
 990 NameVirtualHost *:80   ##注释打开

##在最后编辑:
<VirtualHost *:80>
DocumentRoot /www
ServerName www.westos.org
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org
</VirtualHost>
  1. 创建目录/www 和/bbs,并编辑相应的前端文件
[root@server3 ~]# mkdir /www
[root@server3 ~]# mkdir /bbs
[root@server3 ~]# cd /www
[root@server3 www]# vim index.html
<h1>www.westos.org - server3</h1>
[root@server3 www]# cd /bbs
[root@server3 bbs]# vim index.html
<h1>bbs.westos.org - server3</h1>
  1. 重启httpd服务
[root@server3 bbs]# /etc/init.d/httpd restart
  1. 测试:
  • 在主机添加解析
[root@foundation64 ~]# vim /etc/hosts
172.25.18.1 server1
172.25.18.3 www.westos.org bbs.westos.org
  • 物理机中的访问测试
[root@foundation64 ~]# curl www.westos.org
<h1>www.westos.org - server3</h1>
[root@foundation64 ~]# curl bbs.westos.org
<h1>bbs.westos.org - server3</h1>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值