服务代理负载均衡配置

发送反馈


SuperMap iPortal 支持部署多个独立的服务代理节点一起提供代理服务,从而提高代理服务的负载能力,支持更多的并发访问。下面简单介绍一下如何通过 Nginx 实现多个服务代理的负载均衡。

  1. 部署两个或多个服务代理节点,每个服务代理节点的配置请参见:配置服务代理安装包,本示例部署了两个服务代理节点,分别为:192.168.120.40:8091和192.168.120.40:8092
  2. 配置 Nginx,实现负载均衡,本示例使用默认的轮询方式来实现,nginx.conf 文件的配置如下:

    upstream proxyserver.com {

        server 192.168.120.40:8091;

        server 192.168.120.40:8092;

        }

    server {

        listen       8195;

        server_name  proxyserver.com;

        location / {

        proxy_pass   http://proxyserver.com;

        proxy_set_header Host $host:$server_port;

        }

  1. 配置 iPortal 安装包,具体配置请参见:配置 iPortal 安装包
  2. 除以上 iPortal 安装包的配置外,还需在 iportal.xml 文件中的 <serviceProxy> 节点下增加 <proxyServerRootUrl> 节点,具体配置如下:

<serviceProxy>

     <enable>true</enable>

     <enableBuiltinProxy>false</enableBuiltinProxy>

     <port>8195</port>

     <rootUrlPostfix>portalproxy</rootUrlPostfix>

     <proxyServerRootUrl>http://proxyserver.com:8195</proxyServerRootUrl>

     <httpConnPoolInfo>

       <maxTotal>100</maxTotal>

       <defaultMaxPerRoute>10</defaultMaxPerRoute>

     </httpConnPoolInfo>

</serviceProxy>

其中:

  1. 启动 iPortal 安装包和代理服务安装包,运行 bin 目录下的 startup.bat(windows)或者 startup.sh(linux)
  2. 访问 iPortal 服务,此时访问地址的域名应与 Nginx 代理后的保持一致,此示例为:http://proxyserver.com:8090/
  3. 注册 GIS 服务门户中,将显示代理服务地址,此示例注册了一个 SuperMap iServer 服务地址:http://rdc.ispeco.com:8080/iserver/services/map-china400/rest ,显示的代理服务地址为:http://proxyserver.com:8195/portalproxy/iserver/services/map-china400/rest
  4. 查看 GIS 服务是被哪个服务代理节点代理了,可以在 nginx.conf 文件中添加以下两行代码,如粗体所示:

    server {

        listen       8195;

        server_name  proxyserver.com;

        location / {

        proxy_pass   http://proxyserver.com;

        proxy_set_header Host $host:$server_port;

        add_header backendIP $upstream_addr;

        add_header backendCode $upstream_status;

        }

重启 Nginx,重新访问代理服务地址,在浏览器中F12查看 Request 的 Headers 信息,可以看到当前代理服务节点的 IP,如下图所示:

至此,服务代理的负载均衡配置完成。