Apache+varnish(高性能开源HTTP加速器)搭建负载均衡集群

实验环境:RHEL6.5

实验环境4台

真机进行访问测试     willis.example.com         172.25.254.6

虚拟机1(缓存端)   varnish.example.com       172.25.254.8

虚拟机2(服务器端1) web1.example.com     172.25.254.10

虚拟机3(服务器端2) web2.example.com     172.25.254.20

两台服务器主要用于负载均衡实验。

实验内容:1.服务器端安装Apache

2.代理端(缓存端)安装配置varnish

3.缓存无法同步问题

4.虚拟主机

5.网页重写

6.负载均衡器

安装包:varnish-3.0.5-1.el6.x86_64.rpm

varnish-libs-3.0.5-1.el6.x86_64.rpm

1.服务器端安装Apache

    1.1 服务器端1

[[email protected] ~]# yum install httpd -y 

[[email protected] ~]# vim /var/www/html/index.html

web1‘s page

[[email protected] ~]# /etc/init.d/httpd start

   1.2服务器端2

[[email protected] ~]# yum install httpd -y 

[[email protected] ~]# vim /var/www/html/index.html

web2‘s page

[[email protected] ~]# /etc/init.d/httpd start


2.代理端(缓存端)安装配置varnish

[[email protected] mnt]# ls

varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm

[[email protected] mnt]# yum install * -y

[[email protected] mnt]# vim /etc/sysconfig/varnis

VARNISH_LISTEN_PORT=80 ##设定varnish的端口为80

[[email protected] mnt]# vim /etc/varnish/default.vcl 

backend web1 {

.host = "172.25.254.10";      ##指定apache所在主机ip(本次实验服务器1/2端都可以)

.port = "80";                ##apache端口

}

[[email protected] mnt]# /etc/init.d/varnish start

Starting Varnish Cache:                                    [  OK  ]

[[email protected] mnt]# vim /etc/varnish/default.vcl   ##设置缓存命中信息

sub vcl_deliver{

if(obj.hits>0){

set resp.http.X-Cache="HIT from willis cache";  ##缓存命中

}

else{

set resp.http.X-Cache="MISS from willis cache";  ##缓存未命中

}

return(deliver);

}

[[email protected] mnt]# service varnish reload

Loading vcl from /etc/varnish/default.vcl

Current running config name is boot

Using new config name reload_2016-09-15T05:19:54

VCL compiled.

available       0 boot

active          0 reload_2016-09-15T05:19:54

Done

3.缓存无法同步问题

    3.1 缓存端,访问缓存不过期页面无法刷新

[[email protected] ~]# curl http://172.25.254.8     

web1‘s page

[[email protected] ~]# curl -I http://172.25.254.8

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Wed, 14 Sep 2016 21:02:59 GMT

ETag: "1fcb4-c-53c7e0dd4191f"

Content-Type: text/html; charset=UTF-8

Content-Length: 12

Accept-Ranges: bytes

Date: Wed, 14 Sep 2016 21:43:54 GMT

X-Varnish: 1470288177 1470288175

Age: 95

Via: 1.1 varnish

Connection: keep-alive

X-Cache: HIT from willis cache

[[email protected] ~]# curl -I http://172.25.254.8

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Wed, 14 Sep 2016 21:02:59 GMT

ETag: "1fcb4-c-53c7e0dd4191f"

Content-Type: text/html; charset=UTF-8

Content-Length: 12

Accept-Ranges: bytes

Date: Wed, 14 Sep 2016 21:43:59 GMT

X-Varnish: 1470288178 1470288175

Age: 100

Via: 1.1 varnish

Connection: keep-alive

X-Cache: HIT from willis cache


 3.2 通过 varnishadm 手动清除缓存

# varnishadm ban.url .*$   #清除所有

# varnishadm ban.url /index.html  #清除 index.html 页面缓存

# varnishadm ban.url /admin/$ #清除 admin 目录缓存

[[email protected] mnt]# curl -I  http://172.25.254.8

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Wed, 14 Sep 2016 21:02:59 GMT

ETag: "1fcb4-c-53c7e0dd4191f"

Content-Type: text/html; charset=UTF-8

Content-Length: 12

Accept-Ranges: bytes

Date: Wed, 14 Sep 2016 21:52:42 GMT

X-Varnish: 1470288192 1470288185

Age: 51

Via: 1.1 varnish

Connection: keep-alive

X-Cache: HIT from willis cache

[[email protected] mnt]# varnishadm ban.url /index.html

[[email protected] mnt]# curl -I  http://172.25.254.8

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Wed, 14 Sep 2016 21:02:59 GMT

ETag: "1fcb4-c-53c7e0dd4191f"

Content-Type: text/html; charset=UTF-8

Content-Length: 12

Accept-Ranges: bytes

Date: Wed, 14 Sep 2016 21:53:24 GMT

X-Varnish: 1470288193 1470288185

Age: 93

Via: 1.1 varnish

Connection: keep-alive

X-Cache: HIT from willis cache

4.虚拟主机

    4.1服务端1设置

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf 

<VirtualHost *:80>

ServerAdmin /www/willis.com/html

DocumentRoot www.willis.com

</VirtualHost>

<VirtualHost *:80>

ServerAdmin /www/linux.com/html

DocumentRoot www.linux.com

</VirtualHost>

[[email protected] ~]# mkdir -p /www/willis.com/html

[[email protected] ~]# mkdir -p /www/linux.com/html

[[email protected] ~]# echo "web1 willis‘s page ">/www/willis.com/html/index.html

[[email protected] ~]# echo "web1 linux‘s page ">/www/linux.com/html/index.html

[[email protected] ~]# /etc/init.d/httpd restart

4.2 服务端2设置

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf 

<VirtualHost *:80>

ServerAdmin /www/willis.com/html

DocumentRoot www.willis.com

</VirtualHost>

<VirtualHost *:80>

ServerAdmin /www/linux.com/html

DocumentRoot www.linux.com

</VirtualHost>

[[email protected] ~]# mkdir -p /www/willis.com/html

[[email protected] ~]# mkdir -p /www/linux.com/html

[[email protected] ~]# echo "web2 willis‘s page ">/www/willis.com/html/index.html

[[email protected] ~]# echo "web2 linux‘s page ">/www/linux.com/html/index.html

[[email protected] ~]# /etc/init.d/httpd restart

4.3访问端测试

[[email protected] ~]# vim /etc/hosts

172.25.254.8      www.willis.com

172.25.254.8     www.linux.com

###注意,前面指定 .host = "172.25.254.10",所以访问结果为服务器1端的网页内容





5.网页重写

[[email protected] mnt]# vim /etc/varnish/default.vcl 

backend web1 {

.host = "172.25.254.10";

.port = "80";

}

backend web2 {

.host="172.25.254.20";

.port="80";

}

sub vcl_recv { ##网页缓存

if (req.http.host ~ "^(www.)?willis.com" ) {      ##访问中是否带www

set req.http.host = "www.willis.com";        ##都定向到www上

set req.backend = web1;                  ##访问web1

}

elsif (req.http.host ~ "^(www.)?linux.com" ) {

set req.http.host = "www.linux.com";

set req.backend = web1;

}

else {error 404 "westos cache";

}

}

[[email protected] mnt]# /etc/init.d/varnish restart

    访问端测试

访问 willis.com自动跳转成www.willis.com

访问 linux.com自动跳转成www.linux.com






6.负载均衡器

已经提前配好好两台服务器,本实验只需配置缓存端

[[email protected] mnt]# vim /etc/varnish/default.vcl 

backend web1 {

.host = "172.25.254.10";

.port = "80";

}

backend web2 {

.host="172.25.254.20";

.port="80";

}

director willislb round-robin {

{ .backend = web1; }

{ .backend = web2; }

}

sub vcl_recv {

if (req.http.host ~ "^(www.)?westos.com" ) {

set req.http.host = "www.westos.com";

set req.backend = willislb;                 ##修改

return (pass);                                ##方便测试,不缓存

}

elsif (req.http.host ~ "^(www.)?linux.com" ) {

set req.http.host = "www.linux.com";

set req.backend = willislb;                 ##修改

return (pass);                                 ##方便测试,不缓存

}

else {error 404 "westos cache";

}

}

访问端测试:

linux.com或者willis.com  网页重写,刷新可看到内容的变化



刷新:



刷新:



本文出自 “技术人生,简单不简单” 博客,请务必保留此出处http://willis.blog.51cto.com/11907152/1852967

时间: 2024-10-08 09:21:06

Apache+varnish(高性能开源HTTP加速器)搭建负载均衡集群的相关文章

linux下lvs搭建负载均衡集群

常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat 常用商业集群硬件有:F5,Netscaler,Radware,A10等 一.LVS介绍 LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能.该项目在1998年5月由章文嵩博士组织成立. LVS的三种工作模式:1.VS/NAT模式(Network address translatio

LVS搭建负载均衡集群

1.集群的概念: 服务器集群就是将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器 2.集群的分类: 高可用集群(HA) 主要用于高可用解决方案的实现,节点间以主备形式,实现容灾:在大型故障的情况下实现快速恢复,快速提供服务 工作方式: 主从方式:主机工作,备机监控 互为主从:两服务器同时在线,一台服务器故障可切换到另一台上.有效的利用服务器资源,但当服务器故障时候,将可能导致服务器负载过大 多台服务器主从:大部分服务器在线使用,小部分监控:若有部分服务器故障,可切换到指定

apache以mod_jk方式实现tomcat的负载均衡集群

目录 1.环境准备 2.mod_jk配置 3.测试 4.总结 1.环境准备 准备三台主机,一台提供httpd环境,另两台提供tomcat环境. 主机规划: 主机名:httpd           IP地址:192.168.0.200提供httpd服务 主机名:TomcatA    IP地址:192.168.0.201提供tomcat服务 主机名:TomcatB    IP地址:192.168.0.202提供tomcat服务 jdk与tomcat的安装请参照博文:http://zhaochj.bl

使用lvs搭建负载均衡集群

有时候,单台服务器的性能可能无法应付大规模的服务请求,且其一旦出现故障,就会造成用户在一段时间内无法访问.通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益. 集群是一组相互独立的.通过网络互联的计算机组,并以单一系统的模式加以管理,或用于分摊负载,或用于增强可靠性,或用于高速计算. 一.集群类型 LB:Load Balancing,负载均衡集群,用于消除单点故障,当一个节点出现故障而无法正常提供服务时,自动.快速地切换到另外的节点上去:常见软件或实现方式有l

Linux集群:搭建负载均衡集群(一)

一.负载均衡介绍 主流开源软件LVS.keepalived.haproxy.Nginx等: 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,可以当做7层使用: keepalived的负载均衡功能其实就是lvs: lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而Nginx仅仅支持HTTP,HTTPS,mail,haproxy也支持MySQL这种: 相比较来说,LVS这种4层的更稳定,能承受更多的请求,而Nginx这种7

LVS/DR + keepalived搭建负载均衡集群

前面的lvs虽然已经配置成功也实现了负载均衡,但是我们测试的时候发现,当某台real server把nginx进程停掉,那么director照样会把请求转发过去,这样就造成了某些请求不正常.所以需要有一种机制用来检测real server的状态,这就是keepalived.它的作用除了可以检测rs状态外,还可以检测备用director的状态,也就是说keepalived可以实现ha集群的功能,当然了也需要一台备用director. 备用director也需要安装一下keepalived软件.ip

Linux集群:LVS搭建负载均衡集群(二)

一.DR模式LVS搭建 1.准备工作 调度器dir:192.168.242.128 真实服务器rs1:192.168.242.129,网关恢复为之前的原始网关 真实服务器rs2:192.168.242.130,网关恢复为之前的原始网关 VIP:192.168.242.110 2.dir上编写脚本 [[email protected] ~]# vim /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forw

使用Haproxy+nginx 搭建负载均衡集群

案例环境 本案例使用三台服务器模拟搭建一套Web集群,如下所示: 实验步骤如下: 编辑安装nginx服务器安装依赖包下载nginx-01服务器[[email protected] ~]# yum -y install gcc pcre-devel zlib-devel[[email protected] ~]# wget https://nginx.org/download/nginx-1.6.3.tar.gz[[email protected] ~]# tar zxvf nginx-1.6.3

Nginx +keepalived+varnish+lamp实现高可用、负载均衡集群

描述:1.前端两台NGINX,通过keepalived虚拟IP漂移,实现前端两台NGINX高可用:2.利用NGINX反向代理功能对后端varnish实现高可用集群, 3.再通过varnish实现动静分离 注:1.先装Nginx +keepalived2.装varnish3.装lamp需要6台虚拟机(100-101装Nginx +keepalived:100主,101备)需要联网(102-103装varnish)需要联网(104-105装lamp)需要联网 所有主机必做的步骤 systemctl