利用Nginx做反向代理搭建ArcGIS 10.1 for Server集群环境

  搭建GIS Server集群环境时,通常不建议在GIS Server之间设置防火墙;而建议在服务器环境的前端设置反向代理来隐藏服务器环境的真实地址及端口,保险起见可将反向代理放入DMZ区(前后都设置防火墙),增加安全性。
Multiple firewall scenario with reverse proxy web server
  ArcGIS 10.1 for Server做出的架构改进使得我们在搭建GIS服务器集群环境时更加容易和省心;Nginx因其高性能,耗资源少,稳定性高,成本低廉,配置简单等诸多特性被越来越多地使用。这里简单介绍如何利用Nginx做反向代理并实现Web层的负载均衡效果,来搭建ArcGIS 10.1 for Server集群环境的过程。具体环境如下:
image

  • 192.168.0.247(Windows Server 2008 R2):安装Web Server(IIS 7.5),Web Adaptor(使用默认80端口),ArcGIS 10.1 for Server(使用默认6080端口);
  • 192.168.0.244(Windows Server 2003 R2):安装Web Server(IIS 6.0),Web Adaptor(使用默认80端口),ArcGIS 10.1 for Server(使用默认6080端口);
  • 192.168.0.69(Windows 7):运行Nginx,监听本地80端口;

其中192.168.0.247和192.168.0.244两台机器安装ArcGIS 10.1 for Server,加入同一个site,组成GIS Server集群,并分别安装Web Server和Web Adaptor,组成Web Server集群;192.168.0.69机器上运行Nginx,监听80端口,充当反向代理服务器,并将接受到的请求负载均衡到247和244两台机器上。这样既利用了企业级Web Server的性能,也一定程度上保证了内网环境的安全。Nginx配置过程如下。
  由于是Windows环境,从官网上下载稳定的1.2.3版本,解压到192.168.0.69机器的c:
ginx-1.2.3目录下。因为我们打算让Nginx监听80端口,所以需要将本身占用80端口的IIS默认网站停掉。打开conf目录下的nginx.conf文件,修改如下:
image  命令行方式输入’start nginx’启动Nginx,然后发送请求到192.168.0.69机器的80端口:
image  看到请求被转发到了247机器的IIS 7.5上,再次刷新,
image  请求已经轮询到了244机器的IIS 6.0上。最后通过69机器来访问ArcGIS Server的Services Directory,
image  此时Nginx会以轮询的方式访问247和244两台机器的Web Adaptor。
  这里只是针对ArcGIS for Server集群环境配置做了简单介绍,在实际中可能还需考虑搭建可容错的共享存储环境,DNS服务器的配置,硬件防火墙的配置,Nginx具体参数的配置等因素。

4 thoughts on “利用Nginx做反向代理搭建ArcGIS 10.1 for Server集群环境”

    1. 菩提老王 Post Author

      不做也是完全可以的。做的原因:
      1、nginx支持的并发量可能比web server集群或gis server内置的tomcat大的多,在高并发时,web层可进行缓冲,否则gis server内置的tomcat可能过载;
      2、如果没有web server上的web adaptor,nginx轮询到一个离线的gis server时,可能出现请求丢失掉的情况;如果有web adaptor则不会,具体参考上上篇文章《wa的工作原理》;
      3、增加web adaptor可进一步隐藏gis server的真实地址,增加安全性和架构完整性。

      1. feynman

        谢谢回答。

        那如果是ags 10环境的话,做集群还有上面的优势吗?是不是用nginx就不需要作GIS服务器的集群了(不考虑服务地址的二次安全性)

        因为在10的环境下(webtier 和som捆绑),还有单机的webserver缓冲。

        1. 菩提老王 Post Author

          gis服务器集群(10里的多soc)是只增加cpu运算能力,与nginx增加网络负载能力目的不同。也可通过冗余som来达到相同的部署场景,只是比较麻烦。

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>