CDN加速之varnish
本篇博客是在前一篇博客的母虚拟机创建的子虚拟机上进行的
在创建新的虚拟机时
需做2个操作:
1、设置网络和IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE='eth0'
ONBOOT='yes'
IPADDR=172.25.0.2
PREFIX=24
重启网络
/etc/init.d/network restart
查看IP
ip addr
查看网络是否连通
ping 172.25.10.250
2、设置主机名字
hostname server2
永久设置
vi /etc/sysconfig/network
真机连接子虚拟机1
ssh root@172.25.10.1
出现:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
解决办法
cd
vim .ssh/known_hosts
将文件里的172.25.10.1那行删除
一、部署单个后端服务器的varnish过程
先在真机中 get 两个安装包
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm
由于子虚拟机没有scp命令需要在虚拟机安装scp命令
yum rearch scp
在虚拟机中安装openssh-clients.x86_64
从主机中发送安装包至虚拟机:
scp /home/kiosk/Desktop/varnish-* root@172.25.10.1:/root
虚拟机1中:
ls
yum install * -y:
1、编辑varnish文件
###配置 varnish 服务端口
vim /etc/sysconfig/varnish66 VARNISH_LISTEN_PORT=80
在该文件中查看参数
写入 /etc/security/limits.conf中
2、编辑varnish用户的限制文件
vim /etc/security/limits.conf
在最后写
varnish - nofile 131073 #最多能打开的文件数,varnish会自动调整该值
varnish - memlock 82000 #最多能使用的内存空间,varnish会自动调整该值
varnish - nproc unlimited #单个用户所能运行的最大线程数
3、建立虚拟机2的http默认发布文件
创建虚拟机2
名称为server2,IP为172.25.10.2
真机连接虚拟机2:
ssh root@172.25.10.2
安装httpd服务
yum install httpd -y
打开服务
/etc/init.d/httpd start
到默认发布目录下创建默认发布文件
cd /var/www/html
vim index.html:www.linux.org
4、编辑varnish的默认文件
虚拟机1:
vim /etc/varnish/default.vcl
###配置一个后端服务器
backend web1 {
.host = "172.25.10.2"; # 后端服务器的ip
.port = "80"; # 后端服务器的ip
}###查看缓存命中情况
sub vcl_deliver {if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from linux cache"; # 在varnish中命中HIT访问的域名
}
else {
set resp.http.X-Cache = "MISS from linux cache"; # 后端服务器中得到MISS访问的域名
}
return (deliver);
}
5、打开服务、刷新服务
虚拟机1中:
/etc/init.d/varnish start 打开服务
/etc/init.d/varnish reload 刷新服务
6、浏览器输入172.25.10.1检验
7、测试缓存命中
真机中:
###测试缓存命中
二、具有多台后端服务器的varnish
1、创建默认发布目录
创建虚拟机3
名称为server3,IP为172.25.10.3
真机连接虚拟机3:
ssh root@172.25.10.3
安装httpd服务
yum install httpd -y
打开服务
/etc/init.d/httpd start
到默认发布目录下创建默认发布文件
cd /var/www/html
vim index.html:bbs.linux.org
2、修改varnish默认文件
虚拟机1中:
###定义多个不同域名站点的后端服务器
vim /etc/varnish/default.vcl
###配置一个后端服务器
backend web1 {
.host = "172.25.10.2";
.port = "80";
}backend web2 {
.host = "172.25.10.3";
.port = "80";
}sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from linux cache";
}
else {
set resp.http.X-Cache = "MISS from linux cache";
}
return (deliver);
}#当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 web2 取数据,
访问其他页面报错。
sub vcl_recv {
if (req.http.host ~ "^(www.)?linux.org") {
set req.http.host = "www.linux.org";
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.linux.org") {
set req.backend = web2;
} else {error 404 "linux cache";
}
}
/etc/init.d/varnish reload 刷新服务
3、真机访问检测
真机中:
三、varnish后端服务器的负载均衡
什么是负载均衡
负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。
负载均衡算法的种类有很多种,常见的负载均衡算法包括轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接法等,应根据具体的使用场景选取对应的算法。在varnish中我们采用的是轮询法,平衡对待么一个后端服务器。
1、编辑httpd配置文件
虚拟机3中:
编辑httpd配置文件
vim /etc/httpd/conf/httpd.conf 990 NameVirtualHost *:80
1011 <VirtualHost *:80>
1012 DocumentRoot /var/www/html
1013 ServerName bbs.linux.org
1014 </VirtualHost>
1015 <VirtualHost *:80>
1016 DocumentRoot /www1
1017 ServerName www.linux.org
1018 </VirtualHost>
cd /var/www/html
创建发布目录
mkdir /www1
cd /www1
建立发布文件
vim index.html:www.linux.org -server3
重启服务
/etc/init.d/httpd restart
2、虚拟机3中添加地址解析
vim /etc/hosts
3、修改虚拟机2的默认发布文件
虚拟机2中:
cd /var/www/html
修改默认发布文件
vim index.html
www.linux.org -server2
4、修改虚拟机1的默认文件
虚拟机1中:
vim /etc/varnish/default.vcl
###配置一个后端服务器
backend web1 {
.host = "172.25.10.2";
.port = "80";
}backend web2 {
.host = "172.25.10.3";
.port = "80";
}director linux round-robin {
{.backend = web1; }
{.backend = web2; }
#把多个后端聚合为一个组,并检测后端健康状况
}sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from linux cache";
}
else {
set resp.http.X-Cache = "MISS from linux cache";
}
return (deliver);
}sub vcl_recv {
if (req.http.host ~ "^(www.)?linux.org") {
set req.http.host = "www.linux.org";
set req.backend = linux; # 调用平衡轮叫函数
return (pass); #为了测试方便,不进行缓存。
} elsif (req.http.host ~ "^bbs.linux.org") {
set req.backend = web2;
} else {
error 404 "linux cache";
}
}
/etc/init.d/varnish reload 刷新服务
5、访问测试
真机中:
curl www.linux.org
www.linux.org -server2
curl www.linux.org
www.linux.org -server3
四、CDN推送管理
varnish帮我们缓存很多的web资源,但是当后台的数据有了变化需要更新怎么办,此时就需要用到CDN的推送管理了
在真机中get 安装包
bansys.zip
主机传到虚拟机1
scp bansys.zip root@172.25.10.1:/root
1、修改httpd端口
server1:
[root@server1 ~]# yum install httpd -y
安装httpd会与varnish冲突,所以改httpd端口
[root@server1 ~]# vim /etc/httpd/conf/httpd.conf 136 Listen 8080
2、安装服务,解压到指定目录
[root@server1 ~]# yum install php -y
[root@server1 ~]# yum install unzip -y
[root@server1 ~]# unzip bansys.zip -d /var/www/html/
[root@server1 ~]# cd /var/www/html/bansys/
[root@server1 bansys]# mv * ..
[root@server1 bansys]# cd ..
[root@server1 html]# ls
3、编辑自定义CDN群组文件
[root@server1 html]# vim config.php //varnish主机列表//可定义多个主机列表$var_group1 = array('host' => array('172.25.10.1'),'port' => '80', );//varnish群组定义//对主机列表进行绑定$VAR_CLUSTER = array('www.linux.org' => $var_group1,);
4、打开httpd服务,查看端口
[root@server1 html]# /etc/init.d/httpd start
[root@server1 html]# netstat -antlp
tcp 0 0 :::8080 :::* LISTEN 1237/httpd
5、编辑varnish文件
[root@server1 html]# cd /etc/varnish/
[root@server1 varnish]# vim default.vcl8 acl linux {9 #设置访问控制10 "127.0.0.1";11 "172.25.10.0"/24;12 }38 sub vcl_recv {39 40 if (req.request == "BAN") {41 if (!client.ip ~ linux) {42 error 405 "Not allowed.";43 }44 ban("req.url ~ " + req.url);45 error 200 "ban added";46 }47 48 if (req.http.host ~ "^(www.)?linux.org") {49 set req.http.host = "www.linux.org";50 set req.backend = linux;51 #return (pass);52 } elsif (req.http.host ~ "^bbs.linux.org") {53 set req.backend = web2;54 } else {error 404 "linux cache";55 }56 }
[root@server1 varnish]# /etc/init.d/varnish reload
浏览器输入http://172.25.10.1:8080
推送模式:HTTP
CDN群组:www.linux.org
推送内容:/index.html
打开另一个浏览器输入http://www.linux.org/index.html查看
真机中:
[kiosk@foundation10 ~]$ curl www.linux.org/index.html
www.linux.org -server2
提交成功后再使用命令才变成
[kiosk@foundation10 ~]$ curl www.linux.org/index.html
www.linux.org - server3
CDN加速之varnish相关推荐
- CDN加速实现—varnish
CDN介绍: 1 . 对cdn的理解: CDN的全称是(Content Delivery Network),即内容分发网络:加速器,反向代理缓存.CDN系统能够实时的根据网络流量和各节点的连接,负载状 ...
- 高并发大流量专题---5、CDN加速
高并发大流量专题---5.CDN加速 一.总结 一句话总结: CDN就是多整几台节点服务器,选距离用户最近的服务器来给用户服务,实现的话可以用阿里云.腾讯云他们提供的功能,简单方便,妈妈再也不用担心我 ...
- CDN加速与DDOS防御
一. 目的 实现国外节点的访问加速,分区域分线路加速,防御来自竞争对手的DDos恶意攻击,常见的延缓性CC攻击和致命的大流量攻击.针对以上的加速策略和两种攻击方式进行一些防御方案的简单介绍. 二. ...
- 香港服务器CDN加速与DDOS防御方案
一.目的 香港服务器实现国外节点的访问加速,分区域分线路加速,防御来自竞争对手的DDos恶意攻击,常见的延缓性CC攻击和致命的大流量攻击.针对以上的加速策略和两种攻击方式进行一些防御方案的简单介绍. ...
- 企业项目实战----CDN加速的实现
前言 CDN加速对企业非常重要,体现在哪呢?举个例子,A企业的后端服务器在杭州,用户遍布全国,让全国的用户都去访问企业A在杭州的后端服务器你觉得可行吗?肯定不可行呀!第一,后端服务器承受不了全国这么巨 ...
- CloudFlare 免费CDN加速 使用方法
前言 cloudflare 是一家国外的 CDN 加速服务商,还是很有名气的.提供免费和付费的加速和网站保护服务.百度云加速的国外节点就是和 cloudflare 合作使用的 cloudflare 的 ...
- github加速_使用Picgo+GitHub+ jsDelivr搭建CDN加速免费图床
前言 经常写Markdown或者博客的同学,肯定都要用到图床.图床是什么呢?其实相当于一个存储图片的网站,类似百度云这样,不过上传图片到图床后可以直接通过外链进行访问. 比如把本地一张a.jpg上传到 ...
- cdn加速怎么样刷新文件
用户在购买CDN服务之后,在使用过程中会比较关心是否有实际效果,首先大家要先确保是否已经开通成功,然后按照基本步骤添加加速域名.配置CNAME,这些都成功搞定之后,接下来就可以测试CDN是否加速成功了 ...
- CDN加速服务有什么功能和作用?
CDN一词相信很多朋友都不会陌生,网上也经常会看到相关报道.或许大部分人都知道CDN加速可以提升网站的打开速度及用户下载资源的速度,而同时也有不少小白朋友还不清楚CDN是什么?有什么用途?它是如何实现 ...
最新文章
- 去除浏览器ip检测_浏览器怎么多开换ip,每个窗口不同的独立IP-VMLogin中文版指纹浏览器...
- 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)
- 超详细的Java常用时间操作工具类
- FLEX SharedObject介绍及应用
- vue.extend的问题
- PHP Class中public,private,protected,static的区别
- 前端学习(1707):前端系列javascript之promise
- si_meminfo获取当前系统物理内存使用情况
- prim算法_数据结构 7.4.1 最小生成树 Prim
- java基础-对象-练习集锦
- idea maven repositories为空
- 【Linux】修改镜像源
- 健身管理系统一站式智能化健身管理体验
- 一文通透优化算法:从随机梯度、随机梯度下降法到牛顿法、共轭梯度
- ASP.NET 安全认证(一)—— 如何运用 Form 表单认证 (摘自 http://blog.csdn.net/cityhunter172)
- ns手柄pc驱动_支持amiibo和体感!switch游戏手柄莱仕达天弓NS体验
- 关于c语言杨辉三角编写的改进
- Linux配置squid正向代理(标准正向代理)
- gps转百度地图坐标 java,GPS坐标与百度地图坐标转换
- moon-util工具