ArcGIS Server前端Varnish缓存解决方案

前一阵子,有客户反馈到ArcGIS Server功能虽好,但在面向大量高并发请求时,经常会导致内置的tomcat服务器响应不过来,希望能针对静态内容,例如切片、服务目录这些内容能提供一个缓存机制。

联想到Varnish作为业界主流的缓存软件,笔者就提出了采用Varnish作为ArcGIS Server前端缓存代理的一个配置方案。其总体配置架构如下图:

Web服务器配置:CentOS 7 Linux

Nginx版本:1.16.1

Varnish版本:  6.0.5

步骤

下载并编译Varnish。

找到Varnish服务所使用的配置文件。

systemctl status -l | grep varnish

通过返回的描述中可知,当前使用的配置文件为/etc/varnish/default.vcl

启用GIS服务器的HTTP端口

访问admin REST接口,访问security\config\update进行更新。

添加GIS服务器。

打开default.vcl,在默认的backend中添加GIS服务器的地址。

backend default {

       .host = “192.168.1.83”

       .port = “6080“

}

修改GIS服务REST地址的HTTP请求Header。

修改default.vcl,在vcl_recv子程序上添加:

if(req.url ~ “^/arcgis”) {

       unset req.http.Cookie;

       unset req.http. Cache-Control;

}

修改default.vcl,在vcl_backend.fetch子程序上添加:

unset berep.http.X-Forward-For;

unset berep.http.Cache-Control;

unset berep.http.Vary;

set beresp.ttl =120s;

使用varnishstat命令来检查是否缓存机制是否生效。在命令行窗口中输入:

varnishstat -f MAIN.cache_hit

打开浏览器,访问ArcGIS Server REST 服务目录中任意服务的地址,例如:

http://192.168.31.38:6081/arcgis/rest/services/Guangzhou/MapServer?f=json

第一次访问的时候,应该会在监控命令行窗口看到以下字样:

MAIN.cache_miss   1

这代表初次访问时,由于没有缓存记录,所以没有命中。

后续再次访问上述URL地址时,应该会在监控命令行窗口看到以下字样:

MAIN.cache_hit   1

这代表查找到了缓存记录,命中次数为一次。

由于Varnish不支持HTTPS协议,所以假如需要通过HTTPS协议来访问被缓存的ArcGIS Server REST服务,这时可以在Varnish的前端再多部署一个Nginx反向代理。

猜你喜欢

转载自www.cnblogs.com/luwl/p/12132345.html