高级运维(一):反向代理&使用Varnish加速Web
案例1、反向代理
目标:
1、代理服务器可以将远程的Web服务器页面缓存于本地
2、代理服务器端口设置为80端口
3、用户通过访问代理服务器即可获得远程Web服务器页面上的内容
4、远程Web服务器对客户端用户是透明的
5、利用缓存机制提高网站响应速度
方案:
使用3台RHEL7虚拟机,一台作为Squid代理服务器,需要配置两个网卡(连接不同网段),地址分别为192.168.4.5、192.168.2.5。一台作为客户端测试主机,IP地址为192.168.4.100。一台作为Web服务器,IP地址为192.168.2.100,该服务器为代理服务器提供Web服务数据源。
IP配置&网络拓扑结构如下:
步骤:
创建3台虚拟机--->3台虚拟机分别为Client(客户端)、Proxy(代理服务器)、Web1(服务器)--->3台虚拟机分别配置IP、搭建yum仓库、设置自动挂载、修改登录密码(简化密码)
Web服务器的搭建:
yum安装httpd,提供Web服务: yum -y install httpd
启动httpd服务,设置开机自启: systemctrl restart httpd;systemctrl enable httpd
查看端口号80的状态(httpd默认通过80端口提供服务): netstat -antpu |grep 80
创建Web服务器测试文件:echo “Hello the world” > /var/www/html/index.html
Squid代理服务器的部署:
yum安装Squid,提供代理服务: yum -y install Squid
1>修改配置文件/etc/squid/squid.conf :set nu 设置行号
...........
56 http_access allow all 允许本机所有主机使用代理服务器
59 http_port 80 vhost 设置反向代理,端口号80
60 visible_hostname www.sina.com 设置主机名,默认没有该行,需要手动添加,主机名可以自行设置
61 cache_peer 192.168.2.11 parent 80 0 originserver 定义后端真实服务器信息,80是httpd端口号,0本来是要icmp端口号,这里不用,但为保持格式必须写0
64 cache_dir ufs /var/spool/squid 100 16 256 取消注释使生效,硬盘缓存,缓存为100M,自动创建16个1级子目录和256个2级子目录
2>启动Squid服务、设置为开机启动:systemctrl restart squid; ystemctrl enable squid
3>查看端口号80状态查看服务是否启动,squid服务默认是通过TCP 80端口侦听客户端请求: netstat -antpu |grep 80
客户端测试:
[root@客户端 ~]# curl http://192.168.4.5 访问代理服务器地址页面,测试是否成功搭建了squid代理服务器
[root@客户端 ~]# curl -I http://192.168.4.5 可以查看页面详细信息,如果不是第一次访问,会显示HIT缓存命中,如果是第一次访问,会显示MISS没有缓存,但下次再访问就会命中
案例2、使用Varnish加速Web
目标:
1、使用Varnish加速后端的Apache Web服务
2、使用Varnishadm命令管理缓存页面
3、使用Varnishstat命令查看Varnish状态
方案:
通过源码编译安装Varnish缓存服务器
1、编译安装Varnish软件
2、复制启动脚本与配置文件
修改配置文件,缓存代理源Web服务器,实现Web加速功能
使用3台RHEL7虚拟机,其中一台作为Web服务器(192.168.2.100)、一台作为Varnish代理服务器(192.168.4.5,192.168.2.5),另外一台作为测试用的Linux客户机(192.168.2.100)
对于Web服务器的部署,此实验中仅需要安装httpd软件、启动服务,并生成测试首页文件即可,默认httpd网站根路径为/var/www/html,首页文档名称为index.html。
步骤:
创建3台虚拟机--->3台虚拟机分别为Client(客户端)、Proxy(代理服务器)、Web1(服务器)--->3台虚拟机分别配置IP、搭建yum仓库、设置自动挂载、修改登录密码(简化密码)
Web服务器的搭建:
yum安装httpd,提供Web服务: yum -y install httpd
启动httpd服务,设置开机自启: systemctrl restart httpd;systemctrl enable httpd
查看端口号80的状态(httpd默认通过80端口提供服务): netstat -antpu |grep 80
创建Web服务器测试文件:echo “Hello the world” > /var/www/html/index.html
Varnish代理服务器的部署:
scp lnmp_soft-2017-03-28.tar.gz 给proxy
tar -xf lnmp_soft-2017-03-28.tar.gz
cd lnmp_soft
./install_lnmp.sh [选7回车] ----->开始安装Varnish
配置文件:
/etc/sysconfig/varnish [前端客户端访问端配置文件]
/etc/varnish/default.vcl [后端服务端提供端配置文件]
前端文件:(黑色为改正后的文件,青色为原参考文件)
66 VARNISH_LISTEN_PORT=80 #VARNISH侦听端口号80
89 VARNISH_STORAGE_SIZE=64M #后面更改了缓存储存在内存里,储存在内存里,可以加快响应速度,这里适当将缓存大小调整,依据内存大小来定
92 VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" #将缓存该为内存存储
69 VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 #本机循环IP地址
70 VARNISH_ADMIN_LISTEN_PORT=6082 #本机管理员端口号
85 VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin #VARNISH缓存为文件格式时缓存位置,位与硬盘上
89 VARNISH_STORAGE_SIZE=1G #VARNISH为文件格式存储在硬盘上时,默认缓存大小为1G
92 VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}" #VARNISH定义为文件格式储存,缓存在硬盘上
后端文件:(设置行号,对应行去掉注释,使生效)
7 backend default {
8 .host = "192.168.2.100"; #更改Web服务器的地址
9 .port = "80"; #更改侦听端口号
10 } #去掉注释,使得格式完整
注意:一个端口不能同时被两个程序使用
之前squid服务占用了80端口,
squid 端口80
# systemctl stop squid.service 关闭squid
# /etc/init.d/varnish start 启动varnish服务,varnish不受systemctrl 控制,需要/etc/init.d调用该服务。注意脚本是写在RHEL6环境下的,这里会Done死在这里,ctrl + c 退出,不影响启动
# netstat -natpu|grep 80 过滤端口80,看看时否启动
客户端测试:
[root@客户端 ~]# curl http://192.168.4.5 访问代理服务器地址页面,测试是否成功搭建了squid代理服务器
[root@客户端 ~]# curl -I http://192.168.4.5 可以查看页面详细信息,如果不是第一次访问,会显示HIT缓存命中,如果是第一次访问,会显示MISS没有缓存,但下次再访问就会命中
缓存过期:
client------->proxy(AA)---------->web1(AB) 当web1页面更改后,proxy代理服务器不一定及时能更新过来,需要等待或者手动清除缓存
[root@Proxy ~]# varnishadm -h 查看命令帮助
[root@Proxy ~]# vim /etc/sysconfig/varnish 进入配置文件查看密码存放位置
[root@Proxy ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 #进入管理员模式
varnish>help
varnish> storage.list 查看缓存
varnish> backend.list 查看后端
varnish> ban.url .* 清理掉所有的html文件,正则表达式
[root@Proxy ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url *.html 非交互式清理缓存,及时清理
补充:
程序QQ[硬盘] program
进程[内存] process
线程 thread
脚本:install_lnmp.sh
153 ./configure --prefix=/usr/local/nginx --with-http_ssl_module 设置安装目录文件位置
varnish的日志文件位置:root用户家目录下面
varnishlog varnish日志
varnishncsa 访问varnish代理服务器日志
高级运维(一):反向代理&使用Varnish加速Web的更多相关文章
- 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
web proxy web1 web2 1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...
- 十、使用Varnish加速Web
使用Varnish加速Web 构建Web服务器(web1) [root@web1 ~]# yum -y install httpd [root@web1 ~]# systemctl start ...
- 高级运维(二):搭建Nginx服务器、用户认证、基于域名的虚拟主机、SSL虚拟主机、Nginx反向代理
一.搭建Nginx服务器 目标: 在IP地址为192.168.4.5的主机上安装部署Nginx服务,并可以将Nginx服务器,要求编译时启用如下功能: 1> SSL加密功能 2> 设置Ng ...
- Linux高级运维 第八章 部署docker容器虚拟化平台
8.1 Docker概述 实验环境: CENTOS7.4-63 64位 Dcoker概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到 ...
- 轻量级别的Cache和反向代理软件---Varnish
1.Varnish描述 1.1 Varnish的结构与特点 Varnish是一个轻量级别的Cache和反向代理软件,先进的设计理念和成熟的设计框架是Varnish的主要特点: 基于内存进行缓存,重启后 ...
- nginx反向代理本地 两台web负载均衡 使用域名代理
环境: 本地外网ip:123.58.251.166 .配置index.html网页 [root@host---- conf.d]# cat /web/sing/index.html <h1> ...
- nginx反向代理本地 两台web负载均衡 使用ip+端口代理
环境: 本地外网ip:123.58.251.166 .配置index.html网页 [root@host---- conf.d]# cat /web/sing/index.html <h1> ...
- varnish加速web
varnish主要功能是代理服务器和缓存,和nginx代理一样可以反向代理web服务器.但是varnish不能作为web服务器.但是它的优点是可以将访问过的网站还存在代理服务器上,以便于提升web的访 ...
- 使用Varnish加速Web
通过配置Varnish缓存服务器,实现如下目标: - 使用Varnish加速后端Web服务 - 代理服务器可以将远程的Web服务器页面缓存在本地 - 远程Web服务器对客户端用户是透明的 - 利用缓存 ...
随机推荐
- Delphi ini文件结构简介
一.INI文件的结构:; 注释[小节名]关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值. 值的类型有三种:字符串.整型数值和布尔值.其中字符串存贮在INI ...
- 测试demo controllerweb.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...
- Java 设计模式-【单例模式】
单例解决了什么问题:为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功之后,我们无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实例.为了确保对象的唯一性, ...
- doT模板引擎
doT模板引擎是一个比较高效的引擎,一直都在使用,只有3kb大小,简洁的语法,无任何依赖,简单易用:下面的代码直接拷贝引用就可以使用: 插件代码 (function(){function p(b,a, ...
- BZOJ 1006: [HNOI2008]神奇的国度(弦图)
传送门 解题思路 弦图就是图中任意一个大小\(>=4\)的环至少存在一条两个节点不相邻的边,这样的图称为弦图,弦图有许多优美的性质.一个无向图是弦图当且仅当它有一个完美消除序列,完美消除序列就是 ...
- [NOIP模拟测试34]反思+题解
不要陷入思维定势,如果长时间没有突破就要考虑更改大方向. 不要把简单问题复杂化. 做完的题就先放下,不管能拿多少分.不能过一段时间就回来调一下. $Solutions:$ A.次芝麻 因为$n+m$始 ...
- webpack4.16压缩打包
webpack4.16压缩打包 本文所用插件版本如下: nodejs:v8.11.3; npm:5.6.0 webpack:4.16 webpack的更新速度很快,差不多几个月就会出一版,最新的4系列 ...
- JS-动态加载
var s = document.createElement('script'); s.setAttribute('src', ''); s.setAttribute('type', 'text/ja ...
- client-go获取k8s集群内部连接,实现deployment的增删改查
一开始写了一个client-java版本的,但是java放在k8s集群上跑需要装jvm而且java的包比较大,client-go版本更适合主机端,下面是整个实现 说明:k8s官方维护的客户端库只有go ...
- win10 打开 sql sever配置管理器
!找到解决办法啦!WIN10系统 此电脑->右击->管理弹出以上界面啊哈哈哈还有一些解决办法在这个贴吧里...http://tieba.baidu.com/p/3000709047