物理机中进行图形化操作
本地安装:
选择镜像:
CPU:
安装步骤:
选择语言:
键盘:
时区:
密码:
进行安装:
1)删除多余文件
2)设置IP (#网络状态设置为静态)
重启网络:
查看是否更改成功
3)设置yum源
列出:
注意:物理机的httpd一定要保持打开状态
5)修改主机名(永久修改)
6)修改本地解析文件
7)关闭防火墙
chkconfig --list iptables ##查看火墙状态
chkconfig iptables off ##关闭火墙开机自启
8)设置selinux
安装常用软件:yum install vim lftp -y
1)virt-sysprep -d base ##清理base虚拟机
如果virt-sysprep命令不存在,则:
2)创建虚拟机
3)关闭封装的虚拟机base
只是怕被误删:
注意:母板要注意关闭后不要再打开
CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。
CDN加速将网站的内容缓存在网络边缘(离用户接入网络最近的地方),然后在用户访问网站内容的时候,通过调度系统将用户的请求路由或者引导到离用户接入 网络最近或者访问效果最佳的缓存服务器上,有该缓存服务器为用户提供内容服务;相对于直接访问源站,这种方式缩短了用户和内容之间的网络距离,从而达到加 速的效果。
搭建CDN系统可以选择3种主流方案:
1. squid 2. varnish 3. Nginx+memcache
此篇博文详细介绍以下varnish的搭建;
Varnish是一款高性能、开源的反向代理服务器和缓存服务器。Varnish使用内存缓 存文件来减少响应时间和网络带宽消耗。这个项目是由挪威的一家报纸Verdens Gang的网络分支起始的,其架构设计和开发总监Poul-Henning Kamp是FreeBSD核心的开发人员之一,最初项目的管理与基础设施及额外开发由挪威一家Linux咨询公司Linpro提供。
说到varnish,squid就不得不提及。squid算得上是古老的缓存服务器。由于varnish先进的设计理念,性能要比squid高上许多,varnish还可以通过端口进行管理,使用正则语句做到清除指定缓存的功能,这些 squid都做不到。但是varnish在高并发的情况下,资源消耗较高,而且varnish服务进程一旦崩溃,重启,内存中的缓存数据将全部丢失。
varnish是基于现代设备设计的服务项目,所以仅支持64位系统。Manager Process 负责处理请求任务,保证每个任务分配一个worker threads。所以varnish是一个重线程型服务。除此之外,manager process 包含接受CLI命令控制的功能,包括调整运行参数,vcl配置更新。初始化子进程Cacher Process,并按一定频率检测cacher在线与否。
Cacher Process 功能:
varnish使用工作空间减少每个线程需要请求或者修改内存时发生的争抢。varnish具有多个工作空间,最为重要的是 session 工作空间,用来维护session 相关数据。
在日志记录方面,Cacher process 使用VSL 机制来处理,这是一个共享内存空间,可以有效减少记录阻塞。日志空间分为两个部分,分别记录格式化的请求日志,以及计数器数值。可以通过varnish自带log工具进行查看,分析或者永久存储日志。
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
如果varnish上面没有缓存
client -> /hosts/dns -> varnish -> 服务器-> varnish -> client
如果varnish上面有缓存
client -> /hosts/dns -> varnish -> client
需要安装两个软件包:
varnish-libs-3.0.5-1.el6.x86_64.rpm
varnish-3.0.5-1.el6.x86_64.rpm
软件包来源:http :// repo . varnish - cache . org / redhat / varnish -3.0/ el 6/ x 86_64/
sysctl -a |grep file 查看虚拟机最大文件数
修改安全限制文件,保证流量大时,服务可以正常运行
打开文件的最大数,有如下的关系:
内核操作 > 操作系统 > 软件
vim /etc/sysconfig/varnish #varnish的配置文件,配置varnish服务端口
将varnish默认监听端口改为80
vim /etc/security/limits.conf
指定varnish用户可以使用的资源限制
varnish - nofile 131072
varnish - memlock 82000
varnish - nproc unlimited
vim /etc/varnish/default.vcl 配置一个后端服务器,缓存配置
/etc/init.d/varnish start
netstat -antlp
yum install httpd -y
/etc/init.d/httpd start #开启apache服务
yum install httpd -y
/etc/init.d/httpd start #开启apache服务
测试:
在真机中:
访问调度机,会访问到后端服务器的内容
命中即varnish缓存中是否有需要的数据,命中则显示HIT,未命中则显示MISS
vim /etc/varnish/default.vcl
/etc/init.d/varnish reload 重载文件
真机中测试:
先编辑本地域名解析文件:
vim /etc/hosts
172.25.11.1 www.westos.org
curl -I www.westos.org 第一次查询varnish上无缓存,显示MISS
curl -I www.westos.org 第二次查询varnish上有缓存,显示HIT
通过 varnishadm 手动清除缓存
varnishadm ban.url .*$ 清除所有
varnishadm ban.url /index.html 清除 index.html 页面缓存
varnishadm ban.url /admin/$ 清除 admin 目录缓存
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.11.2";
.port = "80";
}
backend web2 {
.host = "172.25.11.3";
.port = "80";
}
当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 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";
}
}
/etc/init.d/varnish reload 重载文件
vim /etc/hosts
访问不同的域名会出现相应的内容
主要目的:减轻主服务器的压力
vim /etc/varnish/default.vcl
director lb round-robin { ##建立一个名为lb的组,实现web1和web2之间的轮询
{ .backend = web1; }
{ .backend = web2; }
}
set req.backend = lb; #修改接收为lb,当客户端搜索符合条件的域名时,用lb组实现轮询
return(pass); #为测试方便,不进行缓存
如果不加pass这一行,他会先访问缓存里面的,直到缓存时间结束,才会轮换
/etc/init.d/varnish reload 重载文件
server2:
vim /etc/httpd/conf/httpd.conf
/etc/init.d/httpd restart
mkdir /www
vim /www/index.html
做本地解析
vim /etc/hosts
物理机中实现轮询:
关闭server2 httpd服务
关闭server3 httpd服务
都关闭时:
在varnish中,当web服务器更新了发布页面以后,varnish服务器中的缓存信息不会立即变化,客户还是会通过访问varnish服务器中旧的信息,所以需要我们去推送信息页面,将varnish中的指定缓存清理,让varnish去重新缓存发布页面
yum install php httpd unzip -y
将监听端口改为8080,防止和varnish主机中的80端口冲突
vim /etc/httpd/conf/httpd.conf
/etc/init.d/httpd start
下载地址为:http://code.google.com/p/varnish-php-bansys/
下载bansys.zip的压缩包
unzip bansys.zip -d /var/www/html
cd /var/www/html/
[root@server1 html]# ls
bansys
[root@server1 html]# cd bansys/
[root@server1 bansys]# mv * /var/www/html/
[root@server1 bansys]# ls
[root@server1 bansys]# cd /var/www/html/
[root@server1 html]# ls
bansys class_socket.php config.php index.php purge_action.php static
vim /config.php
/etc/init.d/httpd restart
netstat -antlp
#bansys 有两种工作模式,分别是:telnet 和 http 模式。
#telnet 模式需要关闭 varnish 服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S $
{VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。
#如果是 http 模式需要对 varnish 做以下设置:
vim /etc/varnish/default.vcl
写入文件最上面
service varnish reload
设置成功后推送平台界面:
浏览器输入:http://172.25.11.1:8080
注意:要选择http推送模式
推送一次再刷新
如此每推送一次,会清除记录在缓存中的东西,客户端访问浏览器时,会直接在后端服务器获取,这样就能完成实时更新。