先说个背景吧。去年我接手了一个企业级地理信息平台的搭建任务,客户希望把原来分散在各业务系统里的地图能力收拢起来,做成一套统一管理、统一鉴权、统一对外服务的GIS底座。最初我以为大头在软件开发层面的接口对接,结果第一关就卡在了“地基”上——ArcGIS Enterprise的部署。
这东西和装桌面软件完全不是一回事。它不是单个安装包,而是由门户(Portal)、服务器(Server)、数据存储(Data Store)、Web适配器(Web Adaptor)四个组件组成的完整体系,组件之间还牵扯联邦化(Federation)、托管服务器(Hosting Server)这一整套信任机制。把这套连环关系一次理清并跑通,靠盯着官方文档硬啃是不够的,真正值钱的是部署过程中沉淀下来的决策思路和踩坑记录。
这篇文章写给准备部署或正在部署ArcGIS Enterprise的运维、GIS工程师以及做平台底座开发的同事。我会按照实际推进节奏,依次讲清楚架构选型、环境规划、安装顺序、联邦化配置和故障排查,重点回答“为什么这么做”以及“哪里最容易翻车”。你把这套逻辑吃透了再动手,大概率能省下一半的试错时间。
1. 部署前必须想清楚的架构选型:单机、双机还是完全分布式
1.1 三种主流形态与各自的适用场景
ArcGIS Enterprise部署架构,说到底就是四个组件怎么分配到物理机上的问题。常见形态就三种:单机、双机、完全分布式。
单机部署,即四个组件全部装在同一台服务器上。这是成本最低、起步最快的方式,适合做概念验证、功能测试,以及规模很小的内部单位。我接触过一个区级单位,用一台32核64G的物理服务器跑单机部署,注册用户不到500人,日常并发在线也就二三十,两年下来运行得很平稳。这类场景真没必要上多机,上了反而增加运维成本。
双机部署是中小型生产环境最常见的选择。常见拆分方式有两种:一种是Portal和数据存储放一台,Server单独一台;另一种是Server和数据存储放一起,Portal单独一台。这里有一个需要想明白的依赖关系——Server和数据存储之间交换的是海量地图缓存和空间数据,网络往返频率非常高,所以这两个组件必须尽量靠近,最好同机房甚至同交换机。Portal反倒没那么敏感,它对网络延迟的容忍度相对高一些。
完全分布式则是每个组件独占一台甚至多台服务器,适合大型生产环境、高并发访问、大数据量服务的场景。这种架构下故障隔离做得好,某个组件重启或升级不会拖累其他服务,但相应地,网络规划、证书管理、监控告警的复杂度也会成倍增加。
1.2 硬件资源:最低配置和真正的性能瓶颈
关于硬件配置,官方文档给的是最低底线,但实际部署时真正要吃透的是资源瓶颈在哪里。我把常见的配置参考列成一张表:
| 部署形态 | 最低配置(CPU/内存) | 推荐配置(CPU/内存) | 典型适用规模 |
|---|---|---|---|
| 单机 | 8核16G | 16核32G | 演示、开发测试、小型单位 |
| 双机 | 每台8核16G | Server 16核64G,Portal 16核32G | 中小型生产环境 |
| 完全分布式 | 按组件最低值叠加 | Portal 8核16G,Server 16核64G,Data Store 16核32G | 大型生产环境 |
根据实测经验,内存通常不是最先吃紧的资源,磁盘才是。尤其是Data Store的切片缓存目录和托管数据库,对磁盘IOPS的要求差异非常大。切片缓存型数据存储如果落在机械盘上,切片一多,前端地图刷新会很明显地变慢;托管关系型数据存储至少要用SATA SSD,有条件就上NVMe。另外,三个目录——Server配置目录、Server服务器目录、Data Store数据目录——一定不要放在系统盘。系统盘一旦满了,服务会以各种诡异的方式挂掉,而且很难第一时间联想到磁盘问题。
1.3 我的选型建议
除非目标明确就是搭建测试环境,否则生产环境我至少会采用“Server + Data Store一台,Portal一台”的双机结构。这样一台机器重启、补丁、升级时,另一台还能继续承担一部分职责,不至于整个平台全部停摆。预算再宽裕一点,就把Web Adaptor单独拆到独立的Web服务器上,形成标准的“Web层、门户层、服务层、数据层”四层架构。到这一步,安全隔离、流量控制、扩展性都有了更舒服的操作空间。
2. 部署规划的隐形约束:主机名、端口与证书
2.1 主机名和域名不能随便给
安装ArcGIS Enterprise之前,最容易被忽略的一步是确定机器的主机名(hostname)。
Portal和Server完成联邦化之后,系统内部很多URL是强绑定主机名的。Portal会以类似https://portal.gis.internal:7443的形式生成各种回调地址和令牌服务地址。如果装到一半才发现机器名不合适,那后续就是一连串麻烦:改Portal的配置、重置安全配置、重新联邦、更新已发布服务的URL,一轮操作下来非常痛苦。
所以部署前务必要把主机名定成最终对外的内部域名,而不是随便写的运维代号。有内部DNS就规划两个稳定域名,比如portal.gis.internal和server.gis.internal;没有内部DNS,至少也要统一改hosts文件,保证各节点之间主机名可以解析。
有一个常见的反面教材:直接用IP地址访问,比如https://192.168.1.10:7443/arcgis/home。短时间看确实省事,但一旦做OAuth单点登录、对接企业统一身份认证,或者移动端App/Web端SDK接入,回调地址必须和证书、端口严格匹配,IP地址会在这里制造无穷无尽的麻烦。IP访问能跑通不代表能安全落地,这是硬经验。
2.2 端口体系:6443和7443其实是“管理”端口
ArcGIS Enterprise涉及几个关键端口,很多新手容易混淆它们各自的角色。
- Server默认管理端口:6443
- Portal默认管理端口:7443
- Web Adaptor监听端口:443(标准HTTPS)
- Data Store没有独立的对外服务端口,只和Server内部通信
6443和7443是管理、发布、联邦操作使用的“后台端口”,而最终用户访问门户、访问地图服务的入口,是经过Web Adaptor的443端口。生产环境里,通常不需要把6443和7443暴露给外部用户,只要把443端口映射到Web Adaptor即可。
防火墙规则规划的时候,要分清楚两层:一层是内部组件之间的端口放通,另一层是Web层到Portal和Server的HTTP/HTTPS端口放通。如果对前端还有负载均衡器,健康检查路径不要用根路径,最好指向门户首页或者某个稳定的静态资源路径,否则容易误判后端健康状态,造成流量路由异常。
2.3 证书:自签名还是CA证书
证书问题值得单独拎出来讲,它是部署过程中最容易埋雷的环节。
测试环境用自签名证书,浏览器弹个警告,点击“继续访问”也能进去。但在对接统一身份认证、OAuth、移动端App时,自签名证书会有很多问题——不少SDK在TLS握手阶段会直接拒绝不受信任的证书,而且错误提示往往不直观,排查起来非常耗时。
我的建议是:生产环境一次性申请企业内部CA签发的证书,或者购买公网受信任的证书,把Portal和Server的证书都换成受信任证书。如果实在没办法先用自签名,也要为后续替换做好预案。替换证书有一个顺序问题:先在Portal和Server管理后台导入新证书,再重启对应服务,最后去联邦关系里重新验证。实测中,改完Server证书后,旧联邦关系通常会出现一段告警期,需要到Portal的站点设置里点一次“更新服务器属性”或“同步”,状态才能恢复正常,这个步骤一定要记得做。
2.4 对外URL的统一设计
部署之前,最好把对外访问地址统一设计好,避免以后给第三方系统提供接口时写下长长一串IP加端口。
| 访问对象 | 推荐的对外URL | 说明 |
|---|---|---|
| 门户首页 | https://gis.example.com/portal/home | Web Adaptor转发Portal |
| 门户管理 | https://gis.example.com/portal/apps | 应用管理入口 |
| Server服务根 | https://gis.example.com/server/rest/services | REST服务端点 |
| 管理员入口 | https://gis.example.com/server/manager | Server管理界面 |
这样做的好处是:外部系统只需要记住一个稳定的域名入口,内部架构再怎么调整,对使用者来说都是透明的。域名这套东西在前期花半小时定好,后面至少省出两天的改配置时间。
3. 四件套的安装顺序与配置逻辑:Server、Data Store、Portal、Web Adaptor
3.1 为什么顺序不能乱
官方推荐的安装顺序是:ArcGIS Server → ArcGIS Data Store → Portal for ArcGIS → ArcGIS Web Adaptor。这个顺序背后是有明确逻辑的,不是随便定的。
Data Store安装完成后,会自动注册到本机的Server并创建对应的数据存储类型,所以它必须排在Server后面;Portal联邦化时需要填写Server的地址和管理员凭据,因此Server必须先就绪;Web Adaptor虽然理论上的安装时机比较灵活,但它要为Portal和Server提供统一的HTTPS对外入口,如果联邦化之前不装好,Portal和Server就缺少一个稳定的对外地址,后续联邦操作就得拿6443、7443这种管理端口硬顶上,生产环境不推荐这么做。
简单记就是:先有服务引擎,再配存储,再搭门户,最后加大门。
3.2 Server安装时要注意的几个细节
以Windows环境为例,Server安装过程中会要求指定站点名和管理员账号。这个管理员账号是GIS Server站点内部的管理员,不是操作系统账号。它的用户名和密码必须妥善保存,因为联邦化时就是拿这个账号代表Server去接受Portal的管理指令。
装完后,通过https://server.gis.internal:6443/arcgis/manager首次访问Server管理界面,系统会要求创建站点,并指定配置目录和服务器目录。这两个目录务必放到非系统盘。配置目录存放站点配置信息,服务器目录存放服务输出和缓存文件,两者都是平台运行的核心资产,应当纳入备份范围。
我在实际部署中还养成了一个习惯:把安装过程中填写的关键信息(主机名、管理员账号、目录路径、端口)记到一张表里,别只靠脑子记。后面排错时,这张表就是你的第一手检索依据。
3.3 Data Store三种存储类型的取舍
Data Store安装完成后,会在Server管理界面生成三类数据存储:
- 关系型数据存储(relational):用于托管要素图层、托管服务的后端数据库
- 切片缓存型数据存储(tileCache):用于存放托管服务的切片缓存
- 时空大数据型数据存储(spatiotemporal):用于时空大数据分析场景
绝大多数项目,用到关系型+切片缓存两种就足够了。时空大数据存储要在明确有大数据分析需求时再启用,否则只是白白占用资源。配置Data Store时,系统会提示设置数据目录,一定要指向独立数据盘,并提前估算好容量。托管数据随时间增长很快,一个活跃项目跑上一两年,Data Store目录轻松到几百GB。
3.4 Web Adaptor部署到IIS和反向代理的差异
Web Adaptor在这套体系里扮演“中间人”角色。它本身不参与GIS计算,只是把https://gis.example.com/portal这类请求转发给后端Portal的7443端口、把https://gis.example.com/server转发给Server的6443端口。
部署时有个关键规则:一个Web Adaptor实例通常只适配一个GIS组件。要给Portal和Server分别做代理,就要分别部署两个适配器实例或在反向代理里配置两条对应规则,通常命名为/portal和/server。在IIS环境里,要特别注意应用池的权限配置,以及SSL绑定和证书是否匹配。如果IIS本身已有其他站点占用了443端口,新绑定的站点会和Web Adaptor冲突,症状是安装时一切正常,访问时直接拒绝连接。这类问题多见于IIS站点绑定列表和防火墙策略的叠加干扰,排查时先看端口占用,再看绑定列表。
如果你用的是独立的Nginx或Apache做反向代理而不是IIS,转发规则里要显式带上Host头和X-Forwarded相关头,同时保证代理层到后端走的是HTTPS而非HTTP,否则Portal生成的URL可能会退化成内网地址。
4. 联邦化与托管服务器:Portal和Server建立信任关系那点事
4.1 联邦到底在干什么
很多刚接触ArcGIS Enterprise的人都被“联邦化”这个词绕晕。把它理解成“Portal收编Server”就清楚了。
联邦化之后,Portal成为整个平台的统一入口,用户管理、权限控制、内容管理都在Portal侧;Server作为底层的服务执行引擎,接收Portal下发的指令去发布服务、托管数据、处理地图请求。两者各自保留本地管理员,但通过联邦建立双向信任,Portal管理员可以代表平台用户去Server执行对应操作。
为什么要设计成两个组件而不是合并成一个?因为ArcGIS Enterprise本质上是“门户”和“服务”分离的架构。Portal面向组织和用户,Server面向地图和计算。联邦化就是把这两层场景拧成一体的关键机制。理解这一点之后,很多配置选项就不会再让你犯迷糊了。
4.2 联邦化的操作步骤与一个关键选择
联邦化在Portal后台操作:登录管理员账号,进入“站点” → “服务器” → “添加服务器”,然后填写Server地址和管理员账号。系统会给出两种URL填写方式:一种是填Server站点管理的6443端口地址,另一种是填通过Web Adaptor暴露的对外地址。
这里我的态度非常明确:生产环境只要有Web Adaptor,一定填对外地址,不要填6443。原因很简单,Portal后续生成的所有服务URL和回调地址都基于这里填写的地址。如果填了内部端口,普通用户访问时就会面对端口裸露、证书不匹配等一系列问题;将来内部网络拓扑一变,所有相关服务地址都得跟着改一遍。
账号密码验证通过后,Portal会询问是否启用托管服务器。勾选它,Portal就获得了在Server上自动创建托管服务、托管数据存储的能力。这一步跑通,整个平台才算真正连起来了。
4.3 联邦后立即验证的五个要点
联邦成功不代表万事大吉。我每次做完联邦,都会按下面这个清单逐项验证:
- Portal管理后台里,服务器节点状态是否显示“已就绪”
- 在Portal“我的内容”里新建一个空图层,确认能否成功创建托管要素图层,如果这步报错,多半是托管数据存储没配好
- 直接访问
https://gis.example.com/server/rest/services,确认提示登录且能识别Portal用户 - 发布一个简单要素服务,确认REST端点可以通过443端口正常访问,而不是回落到底层端口
- 检查Portal和Server的服务器时区是否一致,偏差过大可能导致令牌校验失败
最后一条最容易被忽略。有一次我排查联邦问题,Portal生成的令牌发到Server总是无效,从证书看到账号再看到防火墙,来回折腾了一个下午,最后才发现两台机器时区差了一个小时,改回来后立刻正常。时区这东西,第一次栽跟头的概率极高,检查清单里必须带上它。
5. 踩过的坑和完整排查链路
5.1 Portal经Web Adaptor访问时反复出现404
某次部署完成后,用户访问https://gis.example.com/portal/admin反复出现404。我当时的排查次序是这样的:
第一步,查看Web Adaptor的安装日志,确认适配器落盘时没有报错;第二步,绕过适配器直接访问后端https://portal.gis.internal:7443/arcgis/home,发现Portal本身完全正常,说明问题出在适配器层;第三步,检查Web服务器中间件的转发规则,最终定位到适配器与站点绑定的证书不匹配——证书用的是安装时生成的localhost自签名证书,浏览器在TLS握手阶段直接拒绝,表象就成了404。
这类问题的共性特征是“后端好好的,前端进不去”。记住这个特征,排查时能省很多时间。
5.2 联邦化提示“无法完成管理操作”或凭据无效
联邦化失败的原因,高频出现在三类情况里:
- 填写的Server管理员账号或密码错误
- Portal所在机器无法解析Server主机名
- 两端时间不同步,或证书链不受信任
我的排查次序是固定的:先ping通、再对时间、再看证书、查日志。
具体操作上,在Portal服务器上打开浏览器访问Server的6443地址,如果能弹出登录框,说明网络层没问题;如果打不开,就要检查防火墙和Web Adaptor转发。网络没问题后,去Portal日志目录找最近的错误记录,在日志里通常能看到具体的HTTP状态码和异常堆栈,顺着堆栈找就能定位是凭据问题、证书问题还是网络问题。这套次序执行下来,绝大多数联邦失败都逃不出这个范围。
5.3 托管服务器一直显示“不可用”
托管服务器状态变成“不可用”,通常是两条线索导致:一是Portal到Server的连接不稳定,二是Server最近做过重启或证书更换,联邦关系没刷新过来。
遇到这个问题,不要一上来就重装。先去Portal的站点 → 服务器节点里点“同步”或“更新服务器属性”,很多情况下只是配置缓存没刷新。如果同步没有效果,再去Portal日志里找连接健康检查的结果,典型错误是连接超时。连接超时的话,用telnet或Test-NetConnection测一下Portal到Server对应端口的连通性,同时检查防火墙和代理层是否拦截了内部通信。我遇到过一台配置了全局代理的服务器,Portal发出的内部HTTPS请求也被代理接管,结果就是连接永远不稳定,排查日志时看到一段代理验证错误,把代理排除规则加好之后状态立刻恢复。
5.4 一套能复用的日志排查路径
ArcGIS Enterprise的日志分散在多个组件里,排查时养成一条固定路径会非常高效:Portal日志 → Server日志 → Data Store日志。
Portal日志在管理界面的“日志”模块里可以设置级别并导出;Server日志在Server管理界面的“日志”模块里同样可以配置和下载;Data Store的状态与日志在DS管理界面打开。把这三个组件同一时间窗口的日志拉到一起对照,比对时间戳和请求ID,定位效率会大大提高。
还有一个隐藏排查点:操作系统的事件查看器。Server在Windows上运行时,如果发生进程崩溃、端口占用冲突或服务异常退出,系统事件日志里往往有非常明确的记录,不要漏掉这一步,它在不少疑难杂症里救过我。
结尾
ArcGIS Enterprise部署不算一场硬仗,但非常考验对细节的管理。架构选型、主机名规划、证书准备、安装顺序、联邦化配置、日志排查,每一环单独拿出来都能写一篇完整的文章。我个人的经验是:第一次部署,老老实实从单机或双机起步,先把组件之间的信任关系彻底摸透,再考虑横向扩展;实际操作中,安装前把主机名和证书问题一次性解决掉,后面能省下至少80%的排错时间。
最后再分享一个小习惯:每次修改配置之前,都把Portal和Server的配置目录做一次备份。官方有相应的备份工具,但目录级备份永远是成本最低的后悔药。这套部署链路梳理下来,剩下的就是你在自己的环境里动手验证了。