博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Varnish——CDN加速的实现(多个后端服务器实现负载均衡)
阅读量:3922 次
发布时间:2019-05-23

本文共 3312 字,大约阅读时间需要 11 分钟。

实验环境:

主机名 IP 服务
server1 172.25.64.1 varnish
server2 172.25.64.2 apache
server3 172.25.64.3 apache
  • server1:
    部署varnish服务,可查看上一篇博文
  • server2
    1.安装apache
[root@server2 ~]# yum install httpd -y
  1. 编写前端文件
[root@server2 ~]# cd /var/www/html[root@server2 html]# vim index.html

www.westos.org - server2

  • server3:同上
[root@server3 ~]# cd /var/www/html[root@server3 html]# vim index.html

bbs.westos.org - server3

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

  1. server1:配置varnish的default文件
[root@server1 ~]# vim /etc/varnish/default.vclbackend 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/hosts172.25.64.1 www.westos.org bbs.westos.org
  • 物理机中的访问测试
[root@foundation64 ~]# curl www.westos.org     ##也可加上-I参数,查看cdn缓存

www.westos.org - server2

[root@foundation64 ~]# curl bbs.westos.org

bbs.westos.org - server3

二、负载均衡

  • 负载均衡(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

www.westos.org - server2

[root@foundation64 ~]# curl www.westos.org

bbs.westos.org - server3

[root@foundation64 ~]# curl www.westos.org

www.westos.org - server2

[root@foundation64 ~]# curl www.westos.org

bbs.westos.org - server3

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

  1. 在server3的httpd的默认发布目录中建立两个虚拟主机
[root@server3 ~]# vim /etc/httpd/conf/httpd.conf 990 NameVirtualHost *:80   ##注释打开##在最后编辑:
DocumentRoot /wwwServerName www.westos.org
DocumentRoot /bbsServerName bbs.westos.org
  1. 创建目录/www 和/bbs,并编辑相应的前端文件
[root@server3 ~]# mkdir /www[root@server3 ~]# mkdir /bbs[root@server3 ~]# cd /www[root@server3 www]# vim index.html

www.westos.org - server3

[root@server3 www]# cd /bbs[root@server3 bbs]# vim index.html

bbs.westos.org - server3

  1. 重启httpd服务
[root@server3 bbs]# /etc/init.d/httpd restart
  1. 测试:
  • 在主机添加解析
[root@foundation64 ~]# vim /etc/hosts172.25.18.1 server1172.25.18.3 www.westos.org bbs.westos.org
  • 物理机中的访问测试
[root@foundation64 ~]# curl www.westos.org

www.westos.org - server3

[root@foundation64 ~]# curl bbs.westos.org

bbs.westos.org - server3

转载地址:http://grhrn.baihongyu.com/

你可能感兴趣的文章
11、java并发编程中一个著名的问题CAS原理分析
查看>>
10、java中的原子类AtomicInteger详解(基于jdk1
查看>>
12、详解Java并发编程中的AtomicBoolean
查看>>
13、解决java多线程ABA问题的AtomicStampedReference
查看>>
14、详解java同步工具类CountDownLatch
查看>>
15、详解java中的同步工具类CyclicBarrier
查看>>
16、解决线程间协作问题的工具类Exchanger详解
查看>>
17、详解java线程同步工具Semaphore的使用
查看>>
18、彻底理解ReentrantLock可重入锁的使用
查看>>
19、一半是天使一半是魔鬼的Unsafe类详解
查看>>
搞懂Netty(1)一个简单的表白小案例(使用Springboot整合开发)
查看>>
搞懂Netty(2)使用Netty通信时,遇到TCP粘包问题如何解决?
查看>>
搞懂Netty(3)使用MessagePack解决编解码问题
查看>>
21、可重入排它锁ReentrantReadWriteLock使用详解
查看>>
1、mysql基本操作上,适合新手和巩固学习
查看>>
2、mysql基本操作中
查看>>
22、一个带有邮戳的锁StampedLock(jdk1.8出现)
查看>>
23、详解java中一个分而治之的框架ForkJoin
查看>>
2、java中的日志框架体系梳理(以故事的形式呈现)
查看>>
为什么我选用了springcloud而不是dubbo
查看>>