设为首页 收藏本站
查看: 1016|回复: 0

[经验分享] Apache+varnish(高性能开源HTTP加速器)搭建负载均衡集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-18 10:54:33 | 显示全部楼层 |阅读模式
实验环境: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
[iyunv@web1 ~]# yum install httpd -y
[iyunv@web1 ~]# vim /var/www/html/index.html
                         web1's page   
[iyunv@web1 ~]# /etc/init.d/httpd start
   1.2服务器端2

[iyunv@web2 ~]# yum install httpd -y
[iyunv@web2 ~]# vim /var/www/html/index.html
                         web2's page   
[iyunv@web2 ~]# /etc/init.d/httpd start

2.代理端(缓存端)安装配置varnish
[iyunv@varnish mnt]# ls
        varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm
[iyunv@varnish mnt]# yum install * -y
[iyunv@varnish mnt]# vim /etc/sysconfig/varnis
       VARNISH_LISTEN_PORT=80                ##设定varnish的端口为80
[iyunv@varnish mnt]# vim /etc/varnish/default.vcl
        backend web1 {
         .host = "172.25.254.10";      ##指定apache所在主机ip(本次实验服务器1/2端都可以)
          .port = "80";                ##apache端口
        }
[iyunv@varnish mnt]# /etc/init.d/varnish start
        Starting Varnish Cache:                                    [  OK  ]
[iyunv@varnish 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);
    }
[iyunv@varnish 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 缓存端,访问缓存不过期页面无法刷新
[iyunv@varnish ~]# curl http://172.25.254.8     
web1's page
[iyunv@varnish ~]# 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
[iyunv@varnish ~]# 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 目录缓存
[iyunv@varnish 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
[iyunv@varnish mnt]# varnishadm ban.url /index.html
[iyunv@varnish 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设置
[iyunv@web1 ~]# 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>
[iyunv@web1 ~]# mkdir -p /www/willis.com/html
[iyunv@web1 ~]# mkdir -p /www/linux.com/html
[iyunv@web1 ~]# echo "web1 willis's page ">/www/willis.com/html/index.html
[iyunv@web1 ~]# echo "web1 linux's page ">/www/linux.com/html/index.html
[iyunv@web1 ~]# /etc/init.d/httpd restart
    4.2 服务端2设置

[iyunv@web2 ~]# 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>
[iyunv@web2 ~]# mkdir -p /www/willis.com/html
[iyunv@web2 ~]# mkdir -p /www/linux.com/html
[iyunv@web2 ~]# echo "web2 willis's page ">/www/willis.com/html/index.html
[iyunv@web2 ~]# echo "web2 linux's page ">/www/linux.com/html/index.html
[iyunv@web2 ~]# /etc/init.d/httpd restart
    4.3访问端测试
[iyunv@willis ~]# vim /etc/hosts
172.25.254.8      www.willis.com
172.25.254.8     www.linux.com
  ###注意,前面指定 .host = "172.25.254.10",所以访问结果为服务器1端的网页内容  

wKioL1faU-KyTHLYAAAhZPMhP5k541.jpg

wKioL1faU-WyeXl8AAAhKRDWon0175.jpg


5.网页重写
[iyunv@varnish 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";
        }
}
[iyunv@varnish mnt]# /etc/init.d/varnish restart
    访问端测试
   访问 willis.com自动跳转成www.willis.com
   访问 linux.com自动跳转成www.linux.com

wKioL1faU-KyTHLYAAAhZPMhP5k541.jpg
wKioL1faU-WyeXl8AAAhKRDWon0175.jpg



6.负载均衡器

已经提前配好好两台服务器,本实验只需配置缓存端
[iyunv@varnish 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  网页重写,刷新可看到内容的变化

wKiom1faUtjwuC9YAAAh4KO8gYo192.jpg

刷新:
wKiom1faUt3j1db6AAAioPWradI001.jpg

wKioL1faUt_iMNYyAAAhPqa139Y330.jpg

刷新:
wKioL1faUt_CkmwuAAAhKRDWon0258.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-273894-1-1.html 上篇帖子: 解决httpd: Could not reliably determine the server's fully qualified domain... 下篇帖子: Linux之apache服务搭建以及浅析web安全 加速器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表