简介:

varnish是一款高性能并且开源的反向代理服务器和http加速器,据官方称可有300-1000倍的速度提升,它采用了全新的软件体系结构,和现在的硬件体系紧密结合,和传统的squid相比,varnish具有性能更高、速度更快、管理更加方便等诸多优点,很多大型的网站都开始尝试使用varnish来替代squid,这些促进了varnish的快速发展。

varnish在架构中扮演的结构角色拓扑图:

0e48bef5631920999566c43618df4073.png

Varnish的负载均衡实验步骤:

环境准备:

在虚拟机上准备3centos7,一台做varnish,其它两台做后端服务器。

Varnish.server          varnish4.0      192.168.146.138       Centos7    

backend_server1       httpd2.4      192.168.146.136          Centos7

backend_server1       httpd2.4      192.168.146.137            Centos7

 

在三台主机主机上关闭防火墙和selinux

关闭防火墙:

centos7

systemctl disable firewalld.service       #是让开机启动时关闭防火墙

systemctl stop firewalld.service          # 现在关闭防火墙

 iptables –F                    #清除防火墙策略

关闭selinux

sed -i s/^SELINUX=enforcing/SELINUX=disabled/etc/selinux/config

 

 

安装光盘自带的varnish软件包和httpd:

192.168.146.138varnish服务器上安装varnish

yum –y install varnish

在后端服务器上安装httpd并启动服务

yum –y install httpd

systemctl start httpd


varnish上的配置:

把默认的8080端口改成80

Vim /etc/varnish/ varnish.params

# VARNISH_LISTEN_ADDRESS=192.168.1.5

VARNISH_LISTEN_PORT=80

 

声明负载均衡:

在主配置文件下/etc/varnish/default.vcl

定义backend主机

import directors;

定义后端服务器的子例程

backend srv1 {

.host ="192.168.146.137";  #指明后端主机

.port = "80";

.probe = healty;

}

backend srv2 {

    .host = "192.168.146.136";

    .port ="80";

    .probe = healty;

}

vcl_recv中调用

set req.backend_hint = srvs.backend(); 

因缓存的作用需要设置不缓存的方式才可检测出来

Sub vcl_recv {

  Set req.backend_hint = webservers.backend();

    if (req.url ~"(?i)^/(login|admin)") {

     return(pass);

}varnishadm登陆命令行终端

varnishadm -S /etc/varnish/secret-T 127.0.0.1:6082

 

加载vcl配置

Vcl.load test1 default.vcl

编译配置文件

use.test1

 

backend后端服务器的配置测试httpd页面

136服务器的配置

cd /var/www/html

mkdir login

echo <h1>login page @BE2</h1> > /login/index.html

136服务器的配置

cd /var/www/html

mkdir login

echo <h1>login page </h1> > /login/index.html

 

 

在浏览器上输入192.168.146.138/login,就可以看到本次是轮询方式,看到负载均衡实现了

73682fdbba0873ee50a3c7e021c679e8.png


517a2d5e2187734315699bf3f9e3f93a.png