一、搭建环境的配置
因为现如今大多互联网企业用的仍然是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
存储的时间,缓存更新的时间
缓存的东西,有选择的进行缓存,降低数据库的压力,缓存热点数据
访问量体现:缓存在内存里,有多少内容是在缓存里读取的--命中率(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缓存