Linux运维之varnish反向代理的搭建

一、搭建环境的配置

因为现如今大多互联网企业用的仍然是linux6的版本,故我们使用6.5的镜像来模拟实际环境。

1、封装一个6.5的虚拟机以便于我们后续创建虚拟机快照

安装好6.5的虚拟机后更改一下配置

(1)更改主机名

vi /etc/sysconfig/network

在这里插入图片描述

(2)配置IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0

在这里插入图片描述

(3)删除/etc/uaev/rules.d/70XXXXXX (否则以此虚拟机为母盘创建的快照的虚拟机网络不可用)

在这里插入图片描述

(4)重启网络服务

/etc/init.d/network restart

在这里插入图片描述

(5)添加地址解析

vi /etc/hosts

在这里插入图片描述

(6)关闭防火墙与设置selinux为disabled

/etc/init.d/iptables stop
/etc/init.d/ip6tables stop
chkconfig iptables off
chkconfig ip6tables off

在这里插入图片描述

vi /etc/sysconfig/selinux

在这里插入图片描述

(7)配置好网络yum源

vi /etc/yum.repos.d/rhel-source.repo

在这里插入图片描述

(8)安装一些常用的软件

yum install vim lftp openssh-clients -y

(9)poweroff,关闭后不要再打开此虚拟机了

(10)在真机清除此虚拟机的缓存

yum whatprovides /usr/bin/virt-sysprep
yum install 1:libguestfs-tools-c-1.32.7-3.el7.x86_64 -y
virt-sysprep -d base   ##清除虚拟机的缓存

2、以封装的虚拟机为母盘建立快照,创建三台虚拟机

cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b base.qcow2 vm1
qemu-img create -f qcow2 -b base.qcow2 vm2
qemu-img create -f qcow2 -b base.qcow2 vm3

在这里插入图片描述
更改三台虚拟机的主机名和IP为server1-3、172.25.75.1-3,更改后重启

二、用户在浏览器访问网址的第一步:client-cdn

cdn缓存小结-匪鉴

存储的时间,缓存更新的时间
缓存的东西,有选择的进行缓存,降低数据库的压力,缓存热点数据
访问量体现:缓存在内存里,有多少内容是在缓存里读取的--命中率(hit),hit/(hit+miss),命中率高,用的人多。

pv--page view(页面访问,判断访问量)
uv--user view(用户访问)都是
active connection 活跃量
qps --quest per second 每秒的请求量

缓存对象:生命周期,定期清理缓存内容,强迫更新
缓存空间耗尽:LRU 最近最少使用的缓存

三、varnish反向代理搭建

server1:作varnish服务器,代理
server2:被访问的后端主机
server3:被访问的后端主机

1、在server1上安装varnish

在这里插入图片描述
在这里插入图片描述
安装好之后可以通过:

rpm -qc varnish-3.0.5-1.el6.x86_64(查看配置文件)

在这里插入图片描述

2、查看配置文件的要求

vim /etc/sysconfig/varnish

最大打开文件个数:(NFILES=131072)
内存需求:(MEMLOCK=82000)
进程数:(NPROCS="unlimited")不限制

在这里插入图片描述
查看系统的配置:

ulimit -a		#查看系统内存信息
sysctl -a | grep file	#查看系统文件数

在这里插入图片描述

4、升级系统配置使满足要求

在这里插入图片描述
在这里插入图片描述
注意:
01.varnish需要的资源,系统满足不到,因此需要让他受到限制,即给他营造假象
02.varnish开启的时候会开启两个进程:一个root,一个自身

5、添加信息(造成varnish已经获得到了需要软件自身的资源)

vim /etc/security/limits.conf

varnish         -       nofile          131072
varnish         -       memlock         82000
varnish         -       nproc           unlimited

在这里插入图片描述

6、修改通过代理服务器要访问的主机

vim /etc/varnish/default.vcl

backend default {
  .host = "172.25.75.2";
  .port = "80";
}

在这里插入图片描述

7、修改端口

vim /etc/sysconfig/varnish
66 VARNISH_LISTEN_PORT=80

在这里插入图片描述

8、重启服务

/etc/init.d/varnish restart

在这里插入图片描述

netstat -antlp | grep 80(查看端口)

在这里插入图片描述

8、在server2上安装apache服务

1、安装apache

yum install httpd -y

2、编写默认发布页

vim /var/www/html/index.html

在这里插入图片描述

3、启动httpd服务

/etc/init.d/httpd start

在这里插入图片描述

9、测试

客户端:真机

curl 172.25.75.1

在这里插入图片描述
或者
在这里插入图片描述

四、查看是否命中缓存

在server1:

1.在配置文件编辑是否命中反馈信息

vim /etc/varnish/default.vcl

sub vcl_deliver {
if (obj.hits>0){
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

在这里插入图片描述

2、重新加载配置文件

/etc/init.d/varnish reload

在这里插入图片描述

3、在客户端验证是否命中代理的缓存

curl -I 172.25.75.1

在这里插入图片描述
成功命中缓存!!!

4、在server1清理代理的缓存信息,再验证

varnishadm ban.url .*$		#清除所有缓存
varnishadm ban.url /index.html	#清除url部分,可能并不会达到效果(再次执行清楚所有的命令)

在这里插入图片描述
在这里插入图片描述
清理缓存后,在验证就没有命中缓存了

五、定义不同域名站点的后端服务器,通过域名访问不同的后端主机

1、编写配置文件

vim /etc/varnish/default.vcl


backend web1 {
  .host = "172.25.75.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.75.3";
  .port = "80";
}

sub vcl_recv {
        if(req.http.host ~"^(www.)?westos.org") {
                set req.http.host = "www.westos.org";
                set req.backend = web1;
return (pass);
}elsif (req.http.host ~"^bbs.westos.org"){
        set req.backend = web2;
}else {
        error 404 "error";
}
}

sub vcl_deliver {
        if (obj.hits>0){
        set resp.http.X-Cache = "HIT from westos cache";
        }
        else {
        set resp.http.X-Cache = "MISS from westos cache";
        }
        return (deliver);
}

在这里插入图片描述

2、重新加载配置文件

/etc/init.d/varnish reload

在这里插入图片描述

3、修改server2和server3后端服务器的默认发布页面

server2:

vim /var/www/html/index.html

在这里插入图片描述
server3:

vim /var/www/html/index.html

在这里插入图片描述

4、在客户端进行地址解析

vim /etc/hosts

在这里插入图片描述

5、在客户端测试

curl www.westos.org
curl bbs.westos.org

在这里插入图片描述

六、设置轮循调度实现负载均衡

1、在后端服务器server3上,建立虚拟主机

1、建立虚拟主机发布目录及文件

mkdir /www
vim /www/index.html
<h1>server3.www.westos.org</h1>

mkdir /bbs
vim /bbs/index.html
<h1>server3.bbs.westos.org</h1>

在这里插入图片描述

2、更改httpd服务的配置文件

 vim /etc/httpd/conf/httpd.conf
 
 990 NameVirtualHost *:80
1010 <VirtualHost *:80>
1011     DocumentRoot /www
1012     ServerName www.westos.org
1013 </VirtualHost>
1014 <VirtualHost *:80>
1015     DocumentRoot /bbs
1016     ServerName bbs.westos.org
1017 </VirtualHost>

在这里插入图片描述

3、重启服务

/etc/init.d/httpd restart

2、设定varnish代理主机配置文件(在server1)

vim /etc/varnish/default.vcl

backend web1 {
  .host = "172.25.75.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.75.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 "error";
        }
}

sub vcl_deliver {
        if (obj.hits>0){
        set resp.http.X-Cache = "HIT from westos cache";
        }
        else {
        set resp.http.X-Cache = "MISS from westos cache";
        }
        return (deliver);
}

在这里插入图片描述
重新varnish服务配置文件:

/etc/init.d/varnish reload

在这里插入图片描述

3、清除varnish缓存

varnishadm ban.url .*$

4、在客户端测试

curl www.westos.org
curl www.westos.org
curl bbs.westos.org

在这里插入图片描述

七、varnish推送平台的搭建

1、在varnish服务器上安装所需的服务

yum install httpd php unzip -y

在这里插入图片描述

2、将平台的搭建资源解压到httpd的默认发布目录

unzip bansys.zip -d /var/www/html/

在这里插入图片描述
在这里插入图片描述

3、将解压的所有文件移动到apache默认发布目录下

mv /var/www/html/bansys/* /var/www/html/

在这里插入图片描述

4、更改http的端口为8080(varnish服务已经占用了80端口)

vim /etc/httpd/conf/httpd.conf

在这里插入图片描述

5、更改推送平台的配置文件

vim /var/www/html/config.php

<?php
 //varnish主机列表
 //可定义多个主机列表
 $var_group1 = array(
                        'host' => array('172.25.32.1'),
                                                'port' => '8080',
                    );



 //varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         'www.westos.org' => $var_group1,

                     );
 //2.x和3.x推送命令不一样
 $VAR_VERSION = "3";

?>

在这里插入图片描述

6、更改varnish的配置文件

vim /etc/varnish/default.vcl

acl westos {
        "127.0.0.1";
        "172.25.75.0"/24;
}

backend web1 {
  .host = "172.25.75.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.75.3";
  .port = "80";
}

director lb round-robin{
        { .backend = web1;}
        { .backend = web2;}
}

sub vcl_recv {
        if (req.request == "BAN") {
                if (!client.ip ~ westos) {
                        error 405 "Not allowed";
        }
        ban("req.url ~" + req.url);
                error 200 "ban added";
        }
}

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 "error";
        }
}
sub vcl_deliver {
        if (obj.hits>0){
        set resp.http.X-Cache = "HIT from westos cache";
        }
        else {
        set resp.http.X-Cache = "MISS from westos cache";
        }
        return (deliver);
}

在这里插入图片描述
在这里插入图片描述

7、重新加在varnish配置文件,启动httpd服务

/etc/init.d/varnish reload
/etc/init.d/httpd start

在这里插入图片描述

8、测试

在客户端浏览器输入172.25.75.1:8080
在这里插入图片描述
在推送平台,消除varnish缓存
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41830712/article/details/89309226