Linux运维企业篇(1)环境配置 虚拟机封装 varnish

1.母盘的配置:

varnish是什么:

Varnish是高性能开源的反向代理服务器和HTTP缓存服务器
Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存

Squid是从硬盘读取缓存的数据,而Varnish把数据存放在内存中,直接从读取内存,避免了频繁在内存、磁盘中交换文件,所以Varnish要相对更高效,但也有缺点,内存中的缓存在服务器重启后会丢失

Varnish 如何工作
初始化过程
Varnish 的master进程负责启动工作,master进程读取配置文件,根据指定的空间大小(例如管理员分配了2G内存)来创建存储空间,创建并管理child进程
child进程来处理后续任务,它会分配一些线程来执行不同的工作,例如
接受http请求
为缓存对象分配存储空间
清除过期缓存对象
释放空间 碎片整理

http请求处理过程
有一个专门负责接收http请求的线程,一直监听请求端口,当有请求过来时,负责唤起一个工作线程来处理请求
工作线程会分析http请求的url,知道了这个请求想要什么,就到缓存中查找是否有这个对象
如果有,就把缓存对象直接返回给用户
如果没有,会把请求转给后端服务器处理,并等待结果,工作线程从后端得到结果内容后,先把内容作为一个缓存对象保存到缓存空间(以备下次请求这个对象时快速响应),然后再把内容返回给用户

分配缓存过程

有一个对象需要缓存时,根据这个对象的大小,到空闲缓存区中查找大小最适合的空闲块,找到后就把这个对象放进去
如果这个对象没有填满这个空闲块,就把剩余的空间做为一个新的空闲块
如果空闲缓存区中没地方了,就要先删除一部分缓存来腾出地方,删除是根据最近最少使用原则

释放缓存过程
有一个线程来负责缓存的释放工作,他定期检查缓存中所有对象的生存周期,如果某个对象在指定的时间段内没有被访问,就把这个对象删除,释放其占用的缓存空间
释放空间后,检查一下临近的内存空间是否是空闲的,如果是,就整合为一个更大的空闲块,实现空间碎片的整理

 

(1)安装母盘

采用网络安装的方法

(2)母盘环境的配置

yum源配置,软件安装,删掉/etc/udev/rules.d  下面的70开头的文件,设置selinux为disabled,将防火墙关掉(iptables,ip6tables)

取消开机自启:chkconfig iptables off

安装lftp openssh-clients vim软件

配置网络

完成(后面的所有的虚拟机都是在这个母盘上生成的快照)

2.varnish的反向代理:

1.下载软件,安装软件

yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm  ###安装varnish的相关软件

vim /etc/sysconfig/varnish  

2.修改配置文件

    1.##varish的配置文件    ###这个配置文件里面有下面两个地方需要注意:

(一)

上面图的三处分别记录着,varnish软件所能支持的最大的文件的数

第二个是最大的内存支持:82M

第三个是支持的进程数:unlimited不限制

(二)

上面的这一部分是让varnish来监听80端口。

为了让varnish达到更好的运行,必须要更改系统的限制文件(目的就是满足varnish的要求),实际上是满足不了的

查看系统所能提供的文件数:

sysctl -a |grep file

ulimit -a

其中:max locked memory       (kbytes, -l) 64    表示系统提供最大内存是64M

max user processes              (-u) 7820     表示一个用户最大的进程数是 7820

由上面的截图可以知道,软件所能提供的最大文件数,最大内存和最大的进程数和系统哦所能提供的数字是不一样的,这就导致在启动varnish的时候会有报错。(系统所能提供的是根据设备的硬件配置决定的)

2.所以就需要修改系统的限制,配置方法:

vim /etc/security/limits.conf   

在文件的最后面加上系统给varnish的限制:

3.修改varnish运行的配置文件:

vim /etc/varnish/default.vcl

backend就是varnish代理的后端机器的ip地址

设置好之后重启varnish服务

/etc/init.d/varnish restart      ###后面重启varnish服务多用reload

测试:在172.25.34.2启一个httpd的服务:

在真机上curl 172.25.34.4,得到如下结果:

tips:url:准确的网络地址

 

命中缓存

varnish为了提高工作效率:会将后端的资源缓存到自己主机,如果后面有继续访问,arnish的主机会直接将缓存发给客户端,加快访问的速度。下面的语句是检验varnish是否会命中缓存的语句:

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 form westos cache";
}
return (deliver);
}

 重启服务之后检验:

反向代理多台主机:

backend web1 {
  .host = "172.25.34.2";
  .port = "80";
}
backend web2 {
  .host = "172.25.34.3";
  .port = "80";
}
sub vcl_recv{
        if (req.http.host ~"^(www.)?westos.com"){
                set req.http.host = "www.westos.com";   ###这一步是规定主机的名字
                set req.backend =web1 ;
}
elsif (req.http.host ~"bbs.westos.com"){
        set req.backend = web2;
}else {
        error 404 "error";
}
}

测试:

测试成功!可以实现反向代理多台主机

 

负载均衡:

轮询反向代理:

1.在server3上添加虚拟主机,具体操作:

  • 修改配置文件:
     

  • 在server3创建虚拟主机的家目录:
mkdir /www

vim /www/index.html   

文件中:

server3:/www

第二个虚拟主机:

mkdir /bbs

vim /bbs/index.html    文件中写入:

server3:/bbs

2.修改varnish的配置:

 7 backend web1 {
  8   .host = "172.25.34.2";
  9   .port = "80";
 10 }
 11

12    backend web2 {
 13   .host = "172.25.34.3";
 14   .port = "80";
 15 }
 16 director lb round-robin{
 17         { .backend = web1 ;}
 18         { .backend = web2 ;}
 19 }
 20 sub vcl_recv{
 21         if (req.http.host ~"^(www.)?westos.com"){
 22                 set req.http.host = "www.westos.com";
 23                 set req.backend = lb;                                    ###以轮询lb的方式返回
 24                 return (pass);
 25 }
 26 elsif (req.http.host ~"bbs.westos.com"){                    ###用户端访问bbs.westos.com的时候会返回web2,就是server3上的虚      拟主机,现在不返回原来的真实主机了
 27         set req.backend = web2;
 28 }else{
 29         error 404 "error";
 30 }
 31 }

测试:

在访问www.westos.com的时候会进行轮询,在访问bbs.westos.com会直接访问到server3上的bbs虚拟主机

 

tips:现如今主流的两种服务的搭建方式 lnmp lamp (linux,nigux,mysql.php    apache)

自动化推送服务的搭建:

  1. 安装软件
  2. 配置varnish
  3. .配置php
  4. 测试

1.安装软件:

yum install  unzip php httpd -y

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

cd /var/www/html/

mv bansys/* .

 

2.配置varnish

vim /etc/varnish/defaults.vcl

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

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


backend web2 {
  .host = "172.25.34.3";
  .port = "80";
}
#负载均衡
director lb 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 =lb ;
        #       return (pass);             ###清除缓存
}
elsif (req.http.host ~"bbs.westos.com"){
        set req.backend = web2;
}else {
        error 404 "error";
}
}

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

2.配置php

  139  unzip bansys.zip -d /var/www/html/
  140  cd /var/www/html/
  141  ls
  142  mv /var/www/html/bansys/* /var/www/html/
  143  ls
  144  vim config.php

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

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


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

?>
~           

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值