varnish

封装虚拟机
1.新建6.5版本的虚拟机
mem=512(默认选择无图形化安装)
GiB=20(虚拟硬盘disk,内存大一点)
选择语言、时区、ip6(不选)、修改密码

这里写图片描述

这里写图片描述

对封装的虚拟机进行修改

删除70开头的文件,以免对后面的子镜像产生影响

关闭防火墙策略

配置yum源

主机解析
修改内核

生成镜像  拍照   为防止母盘改变  删掉母 虚拟机 只保留母虚拟机的镜像

kvm —> cpu/mem 对cpu和内存的虚拟化

qemu —> disk/net…. 对磁盘 网卡….的虚拟化

libvirtd —-> user 和 kernel 之间的操作接口

virt-manager —–> 虚拟机管理

virsh —–> 虚拟机管理

子镜像的建立
qemu-img create -f qcow2 -b vase0.qcow2 test
查看子镜像信息
[root@foundation66 images]# qemu-img info test1
image: test1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 268M
cluster_size: 65536
backing file: base.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@server1 ~]# vim /etc/security/limits.conf 
varnish         -       nofile          131073
varnish         -       memlock         102400
varnish         -       nproc           unlimited
[root@server1 ~]# vim /etc/sysconfig/varnish 
# Maximum number of open files (for ulimit -n)
NFILES=131072

# Locked shared memory (for ulimit -l)
# Default log size is 82MB + header
MEMLOCK=82000

# Maximum number of threads (for ulimit -u)
NPROCS="unlimited"
[root@server1 ~]# /etc/init.d/varnish restart
Stopping Varnish Cache:                                    [  OK  ]
Starting Varnish Cache:  
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";
}
r
[root@server1 ~]# vim /etc/varnish/default.vcl
[root@server1 ~]# curl 172.25.254.1

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>404 westos cache</title>
  </head>
  <body>
    <h1>Error 404 westos cache</h1>
    <p>westos cache</p>
    <h3>Guru Meditation:</h3>
    <p>XID: 1953365302</p>
    <hr>
    <p>Varnish cache server</p>
  </body>
</html>
[root@foundation66 ~]# vim /etc/hosts
172.25.254.1 www.westos.org bbs.westos.org westos.org
backend web1 {
  .host = "172.25.254.2";
  .port = "80";
}
backend web2 {
  .host = "172.25.254.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 = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
[root@foundation66 images]# sysctl -a    查看所有内核限制值

varnish 是一款专业的 http cache varnish 可以接受http请求,并解析http请求 根据请求来查找缓存,如果没有缓存,则将请求 转发到后端真实的服务器上, 真实服务器响应后,判断响应的报文是否可以缓存,如果可以缓存,则缓存后 再响应给用户
一套缓存系统,在CDN中扮演web缓存的角色,性能和响应时间更优越,语法简单,可以实现很多定制化,而HAProxy无缓存
反代是最基本的功能,自然具备
可以实现动静分离
可以实现负载均衡
1.安装varnish,varnish-libs

本机有 varnish   可进行缓存控制    
修改配置文件
[root@server1 ~]# vim /etc/sysconfig/varnish   
VARNISH_LISTEN_PORT=80   修改接口   


vim /etc/varnish/default.vcl 
backend web1 {
  .host = "172.25.254.2";    真正的服务器  拥有 http  页面
本机作为代当别人访问我的时候   我从cache 里面拿   如果没有的话  就去找 172.25.254.2拿,并且自己再缓存一份    拿时的接口为 80
  .port = "80";       和上面的接口一致
}
/etc/init.d/varnish restart   修改之后重器服务
172.25.254.2 上有http 服务
[root@server2 ~]# cd /var/www/html
[root@server2 html]# ls
index.html
[root@server2 html]# 
当别人访问 172.25.254.1 时   其实看到的是   172.25.254.2 上面的内容,当把 2主机上的 http 关掉的时候  缓存依然存在   此时访问 1主机,依然可以看到之前的东西       数据缓存在内存中
[root@foundation66 images]# curl 172.25.254.1
<h1>server2<h1>
内核  操作系统  软件
修改限制文件,保证流量大时,服务器正常运行
vim /etc/security/limits.conf

varnish         -       nofile          131073
varnish         -       memlock         102400
varnish         -       nproc           unlimited
vim /etc/varnish/default.vcl


backend web1 {    
  .host = "172.25.254.2";     指向 web1 服务器
  .port = "80";
}

backend web2 {
  .host = "172.25.254.3";      指向 web2 服务器
  .port = "80";
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {   
set req.http.host = "www.westos.org";
set req.backend = web1;  无论前面是不是 以www开头   结果都为 www.westos.org   这样可以少缓存一份  提高效率    当访问 www.westos.org时  指向web1 服务器    即向他要东西并缓存
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;    原理同上
} else {error 404 "westos cache";    如果访问其他 则输出 404
}
}

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 默认清除时间120s

在 server2 server3 上做 http服务

 在真机上做解析
vim /etc/hosts

172.25.254.1 www.westos.org bbs.westos.org westos.org
负载均衡
backend web1 {
  .host = "172.25.254.2";    指向服务器ip
  .port = "80";
}

backend web2 {
  .host = "172.25.254.3";     指向服务器ip
  .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;      引用lb函数   即论寻
return (pass);   不做缓存    为了测试
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;      直接显示内容  不参与轮询
} else {error 404 "westos cache";   访问其它 报错
}
}

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);
}

在linux6.5 中 apache 服务配置虚拟主机时需要开启

vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80   即 打开这个

推送管理
server1 主机安装 httpd,php,unzip

 vim /etc/httpd/conf/httpd.conf
Listen 8080    修改端口   避免冲突

默认发布目录/var/www/html下解压 bansys.zip

acl westos {
"127.0.0.1";
"172.25.254.0"/24;   指定 254 网段的可以推送
}

backend web1 {
.host = "172.25.254.2";   指定服务器
.port = "80";
}

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

if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;    引用 lb 函数  参加轮训
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}
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);
}

修改 server1 的接口为 8080 访问 172.25.254.1:8080 即可进行推送
varnishadm ban.url /index.html
清除 index.html 页面缓存
varnishadm ban.url /admin/$
清除 admin 目录缓存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值