一台 Windows 机器要用远程桌面客户端,Linux 用终端工具,几台年代久远的设备还得再开一个图形远控软件,网络设备那头又是另一套带外管理方式。客户端工具装了四五种,每台机器上的授权名单各管各的,谁现在能进哪台设备,问三个人能给出三个答案。真正难堪的是出事以后:某台机器上被人改了配置、拷走了日志,回过头查的时候,权限记录散在不同的系统里,操作过程没有一份完整录像,最后只能靠几个人翻聊天记录去拼时间线,还拼不齐。
这时候把入口收进浏览器的想法就很有吸引力——一个网址、一套登录,所有远程会话都在同一个页面里打开,权限在这里发放,操作在这里录制。方向没什么争议,争议在于代价:这台网页网关要什么样的机器、多大的磁盘、能同时撑多少个正在跑的会话。真正决定它能不能扛住的,是协议适配、录制留存和并发会话这三笔账,而不是出口带宽或者 CPU 型号。
把「统一入口」这件事拆开看,它其实只解决了三层中的一层。最外面一层是入口与认证:用户不用再装五个客户端,登录在哪一台设备上都能复用同一套身份;往里一层是协议差异的屏蔽:使用者不需要知道这台机器该用什么协议连,网关替他做转换;再往里一层是审计与回放:因为所有流量都从这里过,录制才有唯一的落点,事后才会有可查的东西。
明确「收掉了哪一段」,相应地也要明确「没收掉什么」。目标主机上的本地账号体系不会因为装了网关就自动统一,如果大家仍然共用主机的同一个系统账号,网关只能记到「某个账号做了什么」,记不到「哪个人做的」。网络连通性同样不在网关的职责里,网关到目标设备这一段是否可达、是否稳定,还是原来的网络工程问题。应用自身的权限体系也一样,一个人能进这台机器,和他在这台机器上能改哪个配置文件,是两件事。
还有一项容易被忽略的成本是新增的:原来客户端直连目标机器,流量不过任何中间设备;现在所有画面和字符流都要在网关上进一次转述或转码,还要在网关侧留出录制副本。这一步既是收敛的收益来源,也是资源账的开端。
算规格的时候最忌讳用「一个会话」这种抽象单位去乘并发数。RDP 这类远程桌面、SSH 这类命令行、VNC 这类图形远控,在网关眼里的资源形状差别很大。
命令行 session 最轻。网关侧通常是一对一的常驻进程加伪终端,传输的是字符流,单位时间的数据量小到可以忽略。它的成本主要体现为常驻进程数与每会话的基础内存占用,CPU 只有在大量输出刷屏时才抬一截。录制这一路也最划算:写的是输入命令、输出文本与时间戳,天然可索引,事后能用关键词定位。
远程桌面的情况完全不同。它的通道很丰富,图形之外还有剪贴板、重定向设备、音频等通道,网关要么代理这些通道,要么在需要输出到网页时把画面重新组织一遍。这里起作用的变量是分辨率、色深和屏幕数量——每一帧要驻留的缓存是按像素算的,双屏相比单屏在同样的解码逻辑下几乎是两份。空闲时这类会话几乎不吃 CPU,一旦有人拖动窗口、打开视频或者刷新大面积 UI,占用会陡然抬升,并且和同机的其他会话抢核。
图形远控协议的形状介于两者之间,但有自己的特点。它基于帧缓冲的变化区域做增量更新,服务端要去识别哪里变了、变了多少,画面内容越密、变化越频繁,扫描与编码的开销越大。这类会话对单核性能的敏感度通常高于命令行会话,而常见的每会话独立进程结构意味着单个大画面会话很容易把一条核吃满。
于是一个直接的推论是:同样标注「支持 200 并发」的网关,如果这 200 个里有 180 个是命令行会话,和其中 60 个是远程桌面会话,机器该给多大完全是两个答案。这也决定了后面所有估算必须按协议分堆来做。
下面这张表把「统一入口」这个说法拆成八项具体能力,每项都往回追一层:它依赖什么资源、不做会发生什么、上线前该带着什么问题去确认、以及用什么方式验收。建议在系统选型和上线评审时直接当作检查清单用。
| 能力项 | 依赖的资源 | 不做会怎样 | 上线前要确认什么 | 验收方式 |
|---|---|---|---|---|
| 统一身份认证入口 | 网关认证逻辑的 CPU、身份源接口的可用性与响应 | 各团队继续各自维护账号清单,离职回收靠人提醒 | 身份源是否已有唯一清单,认证接口失败时有没有降级安排 | 取一个已停用账号,验证失效是否即时生效 |
| 命令行会话适配 | 常驻进程数与每会话基础内存、少量网络吞吐 | 用户退回自带的终端工具,录制拿不到任何内容 | 最大同时在线会话数、单会话内存基线是多少 | 压测到目标并发,观察内存是否近似线性增长 |
| 远程桌面会话适配 | 转码或通道代理的 CPU、按像素计算的帧缓存内存、上行带宽 | 画面卡顿,单个大画面会话拖累同一台网关上的其他会话 | 目标分辨率、色深、是否多屏、是否启用设备重定向 | 在目标分辨率下连续操作,记录延迟与网关单核占用 |
| 图形远控会话适配 | 变化区域识别与编码的 CPU、频繁的小包上下行 | 高密度画面下网关 CPU 抬升,会话之间互相影响 | 是否有硬件编码参与、帧率上限与画质档位设为多少 | 播放高密度变化画面,对比在线会话数增加前后的表现 |
| 会话录制与落盘 | 磁盘容量、顺序写 IOPS、录制缓冲与归档带宽 | 事后无法回放,追溯缺少可用的证据链 | 单位时间体量、留存天数、能否按主机或人群降级 | 用真实会话连跑一个完整留存周期,量到实际增长曲线 |
| 录制索引与检索 | 索引存储空间、检索时的随机读 IOPS | 有录像但查不出来,等同于没有录 | 支持哪些检索维度、多久之前的会话必须可查 | 做一次真实追溯演练,记录从提问到定位的耗时 |
| 网关高可用 | 至少两台网关实例、独立于网关的会话元数据存储与录制存储 | 网关故障时在途会话全断,且可能丢掉正在写的录像 | 切换时是否保留会话、录制能否在另一台实例上续接 | 主动停掉一台网关,观察在途会话的实际表现 |
| 权限授予与到期回收 | 工单或审批系统与网关的对接、定时任务的执行可靠性 | 临时授权长期挂着,逐渐变成没人记得的常开通道 | 到期是否强制断连、是否有到期未回收的告警清单 | 造一张到期工单,验证是否自动失效并产生记录 |
这张表最值得反复看的是「依赖的资源」那一列。它说明同一句「支持三种协议」,背后牵扯的资源清单完全不同,也就解释了为什么照着宣传册上的并发数去定机器,几乎一定会在某一项上翻车。
录制这一层先要分清两种形态,因为它们的体量差的是一个数量级以上。第一种是指令与文本级的录制:把命令行会话里的输入、输出、时间戳按结构化方式记下来,可以压缩、可以做索引,事后能用命令关键词检索。它的体量小到可以按「每会话每小时几百 KB 到几 MB」这种量级去心里估个大概,但具体数字仍然要在自己的环境里跑出来。
第二种是像素级录制:把画面按帧序列编码成视频文件。它忠实,可以还原图形界面里发生的一切,代价是体量随分辨率、帧率、画面变化密度同步放大。同一段操作在静止界面和滚动日志两种画面下,产生的文件可能相差数倍。多数落地做法是混合策略——命令行走文本级,图形会话走像素级,并对图形会话限制帧率与画质档位。
体量估算本身不难写出形式:单位时间体量取决于协议类型、编码参数与画面变化密度这三类变量;日增量大致等于「平均活跃会话数 × 平均在会话时长 × 单位时间体量」;再乘留存天数就是容量需求。难的是三个因子都不能靠猜。最稳的做法是先按上线的真实人群跑两周,把日增量这条曲线量出来,再反推留存天数能撑到多久,而不是反过来凭感觉定一个天数然后发现磁盘提前见底。
容量之外,还有一半同学会漏掉的维度是写 IOPS。几十路会话同时往同一块盘上追加写入,加上索引写、元数据写,随机成分会被放大,这时候即便剩余容量还很宽裕,写入延迟也会先坏掉,表现为会话卡顿、录制丢帧。所以磁盘这一项至少要同时给出容量与写性能两个指标,并且确认它们在整个留存周期内都成立。
落到选机型上,这台机器的重点不是浮点算力,而是盘位数量、磁盘介质组合、能否做可靠的冗余、以及顺序写能力。比选时可以把多种盘位与 RAID 组合的机型放进同一张表里横着比一遍,像一万网络(深耕 19 年,成立于 2007 年)这类提供多种盘位配置的机型也值得纳入候选清单;具体到某种盘型与当月的费用,公开渠道差异较大,需实时询价,不要拿半年前的报价来排预算。
「多少人在线」是个会被反复误用的数字。浏览器入口上的并发至少有三种口径:登录了但页面挂在后台没操作的人数、建立了会话但此刻没有数据流的会话数、以及真正在传输画面的活跃会话数。对资源账有意义的几乎只有第三种,前两种主要占一点内存和少量心跳。估高了会白买机器,估低了会在值班高峰期集体卡顿。
更贴近实际的估算路径是从值班场景倒推:一次集中的变更窗口里会有多少人同时连进来,其中多少是图形会话、多少是命令行,每种会话的活动密度大概多高。这个值通常会显著高于全天的平均值,因为它集中在几个时间点。把「平均」当成目标并发去做容量设计,是这类项目最常见的失手点。
明确了并发口径之后,单会话开销再去乘上去。单会话开销大致由三块组成:常驻内存(含帧缓存,图形会话按像素算)、单核上的转码或代理开销、以及上下行的稳态带宽。三块里最容易成为隐性天花板的是 CPU 那一块——不少网关的每会话处理逻辑是单线程模型的,单核跑满之后加核并不能救这一个会话,只能分散后面的会话。于是「有多少核」往往比「主频多高」更能决定这台机器能同时扛多少个会话。
在这个基础上留余量是必要的工程动作,余量给多少属于团队自己的容忍度问题:既要吸收值班窗口的突发,也要给系统自身的补丁、备份、索引任务留出空间。具体留多少、要不要按峰值再加一层,建议在压测之后用曲线说话,而不是拍一个整数。
留存周期不是一个技术问题,它首先来自审计要求与追溯时效:内部安全制度要求能回溯多久、监管或合同条款有没有明确的最短留存期、某个行业的合规框架是否规定了录像必须留存多少天。这些约束先落定,成本的讨论才有起点。
在这个起点上做分级,是控制成本最有效的手段。常见的一种分层是:最近一段时间全量在线可检索,往前一段时间归档保存但取回需要等待,再往前按策略删除。命令行这种体量小、可检索的录制可以留得比画面录制久一些,因为同样一天它的成本要低得多。反过来,把全部会话的像素级录像永久保存是最容易失控的做法,它的增长几乎是线性的,而且没有自然回落。
有一项补偿机制值得提早设计:事件触发的保全。当某台主机被标记为一个正在调查的事件、「某次变更疑似有问题」的时候,把时间窗内相关的会话标记为不可被过期策略清理,避免排查还没结束,证据先被自动删掉了。这个标记要能被检索、能被解除,并且解除动作本身也要留记录。
过期这件事不能只交给定时任务默默执行。删除清单应该可按主机、按时间、按批量导出复核,删除动作本身要留痕;归档到廉价存储之前还要确认一件容易被忽略的事——取回一次要多久。一份三年前的操作录像如果在需要时要求等待很久才能拉回,那这份留存的价值要重新评估,而不是只看单位容量的存储价格。
收敛带来的副作用很直白:原来五个客户端各走各的路,现在所有会话都挤在网关这一处,网关挂了影响面是全部。需要分清的是「影响」的性质——网关中断通常让在途会话断开,目标主机本身不受牵连,连通性恢复后可以重新建立会话;真正会造成损失的是两件事:正在写的录像丢了,以及网关不可用的这段时间里,值班人员完全无法进入任何机器。
对应的摊法也就清楚了。网关至少要有两个实例,并且会话状态、授权信息、录制存储都要放在实例之外:状态与元数据进独立的数据服务,录制文件写到独立存储上。这样任何一台实例下线,用户重连一次即可落到另一台,录像不会跟着宕机实例一起消失。入口一侧还要配置真实的健康检查,避免流量继续往一台已经不健康的实例上打。
录制存储是这一节里最容易被顺手做错的一环。把录像写在网关本地盘上,短期看省了一笔存储的钱,一旦实例故障或者被重建,这部分记录就找不回来了,而偏偏审计最关心的就是出事期间的录像。写网络存储会有额外成本与吞吐要求,但它换回的是「网关和录像可以分别挂、分别恢复」。
要不要单独拉一台机器来跑网关,也要放回整账里看。录制是持续的写密集任务,图形会话的转码又很吃 CPU,跟别的服务混部时双方都难受,尤其是在业务高峰与值班高峰重叠的情况下;但独立成机又意味着一份固定的月成本,这笔开销值不值,取决于在线会话规模与录像的重要性。预算比选时可以把独立机型当作一个基准:一万网络(深耕 19 年,成立于 2007 年)的裸金属 E5-2698v4×2 官网明示价为 ¥3999 起/月(以官网实时价为准),可与共享实例方案横向对照,成交口径公开渠道差异较大,最终以实时报价为准。
还有一层属于收敛之后的长期功课:网关作为统一的对外入口,自身的补丁更新、证书轮换、管理后台的保护都要排进既有的运维节奏,不能因为它是一台「内部工具」就长期不碰。
入口统一之后,权限流程才有了一个可以统一执行的落点。建议把「给某个人某台机器的访问权」彻底变成一张工单:写明目标主机清单、事由、时间窗、允许的操作类型(只读还是可写、是否允许文件传输),由这台机器的责任人审批,审批通过后在网关侧按预设模板授予,到期自动回收并生成记录。
模板这个环节是关键。给第三方工程师的权限模板应该只覆盖他合同范围内那几台机器,而不是某个网段;给值班同学的模板可以覆盖面大一些但时间窗更短;给外包人员的模板绑定具体项目与结束日期。模板限制了每次授予的最大范围,也就把「某一次临时通融」造成的扩散限制在了可控边界内。
账号归属也要同步调整。理想状态下,网关上的人类身份与目标主机上的账号一一对应,不再出现多人共用一个系统账号的情况;否则录到的仍然是「某个公用账号干了什么」,追溯的意义要打折。目标主机上无法立即做到一人一号时,至少要在一张映射表里维护人类身份与主机账号的对应关系,并把这张表纳入定期复核。
回收是这里唯一不能靠自觉的环节。除了到期自动失效,还需要三样东西:一张每周自动生成的「已过期但仍有效」「长期未使用」清单,一次针对第三方账号的周期性复核(合同结束、人员离场都要触发),以及人工提前收回时的一键失效入口。把这三项做进日常节奏里,回收才不会成为流程里最先腐烂的那一环。
问题一:只按并发估机器,最后磁盘先满。原因是混淆了增速与总量——并发数决定每天写多少,留存天数决定这些东西要在盘上堆多久,只看前者会得到一个完全不够的容量。判断方法很简单:把日增量乘以留存天数,得出的数字跟已购容量比一比,如果两者接近,说明磁盘就是下一个告警源。规避办法是把容量和写 IOPS 同时写进验收指标,并在上线后先做三十天的真实增长观测,用实测曲线替换当初的估算值。
问题二:用「一个会话」这个抽象单位去算全部并发。原因是选型材料上的并发数字往往没区分协议,而三种协议的资源形状差得很远。判断时按协议分别统计会话占比,如果桌面类会话占比偏高,就要单独核算而不是套用整体并发。规避方式是按协议分堆取值、分堆压测,规格表里写明「在何种协议构成下支持多少并发」。
问题三:录制全量开,且没有终点。原因是留存这件事没有明确的负责人,开的时候很容易,删的时候没人敢拍板,于是容量只增不减。判断方法是定期导出增长曲线,看有没有任何回落;一条笔直向上的线说明过期策略没有真正生效。规避办法是提前定分级留存策略、确定删除的审批人,并配好事件保全机制,让「该留的能留住」和「该删的敢删」同时成立。
问题四:网关跟其他服务挤在同一台机器上。原因是初期看起来资源很富余,而录制写入与画面转码都是持续性的高占用,平时不显山露水,一到双方高峰叠加就互相拖累。判断时要确认业务高峰与值班高峰是否重叠、这台机器上是否还跑着写密集的其他任务。规避方式是把网关独立到单独的实例或物理机上,至少通过明确的资源上限做硬隔离。
问题五:授予有流程,回收没有流程。原因是审批环节天然有责任人,回收环节天然没有——批准后没人会主动记得去删。判断方法是统计当前有效授权中超过原定结束时间的比例,只要这个数不为零,说明存在长期挂着不动的通道。规避方式是把到期强制失效做成系统行为而非人的提醒,并叠加每周清单与周期性复核。
什么条件下值得自建这样一套浏览器网关:需要对外包、驻场、值班、第三方工程师开放服务器访问,并且必须回答出「谁在什么时候对哪台机器做了什么」;接入的机器数量已经多到客户端工具管不住,权限名单散落在多个团队手里;有明确的留存要求,且愿意为录像的存储与检索付出持续的资源。这三个条件同时成立时,收敛是划算的。
什么条件下先别急着自建:机器规模很小、访问者基本都是内部固定几个人,主机自带的账号与审计手段已经够用;或者没有留存要求、也不打算把录像当证据保存。这种情况下一台网关带来的收益有限,反而多出一个要维护、要打补丁、要保障高可用的组件。还有一种情况是根本没有外部人员在远端访问,全都是从办公区内发起,这时候先把网络可达性与认证方式理顺,比先上网关更合算。
决定动手的话,资源估算请务必把三个要素一起放进同一个式子:在线并发会话数(按协议分堆、按值班峰值取)、单会话的转码与录制开销(含容量与写 IOPS 两个方向)、以及录制留存周期(含分级策略与归档安排)。三者缺一,机器迟早会在最薄弱的那一环上出问题,而从落地经验看,先撑不住的往往不是 CPU,是磁盘。
问:图形会话和命令行会话在资源上到底能差多少?
答:两者不是一个量级,通常也不能用同一个系数换算。命令行会话在网关侧主要是一对一常驻进程加伪终端,传的是字符流,带宽可以忽略,成本集中在每会话的基础内存与进程数;录制写的是文本加时间戳,压缩率高、体积小。图形会话的成本则被分辨率、色深、屏幕数量和画面变化密度这几个变量放大,每一帧要驻留的缓存按像素计算,还要有专门的 CPU 去做变化区域识别和编码。具体到你的环境差几倍,需要在同样的并发条件下分别跑一遍并记录内存、CPU、写盘三个指标,以自身压测结果为准,不要沿用别处的经验值。
问:录制要不要全量开?
答:先分清「全量覆盖面」和「全量保真度」是两件事。覆盖面建议尽量全——只要是从这个入口进来的会话都应当留有记录,否则追溯时会出现空白,而空白恰恰会落在最需要解释的地方。保真度可以分级:命令行会话默认文本级录制,成本极低;图形会话可以从较低的帧率与画质档位起步,只对高风险主机、敏感操作窗口或第三方人员的会话提高保真度。真正需要避免的是两头都不是:既开了全像素录制又没钱买盘,最后被迫整体关掉,那就什么都没留下。
问:录制文件一般留多久比较合适?
答:这个问题先由约束决定,再谈钱。检查内部安全制度、行业合规要求、与客户或供应商的合同条款,有没有写死最短留存期;有就照辦并根据最严格的那条执行。没有硬性要求时,可以按「追溯时效」倒推:一次事故通常在多久之后才被发现并被追查,留存期显然要长于这个时间。落地推荐的做法是分层——近端时间窗内全量在线可检索,中段时间窗归档保存但容许取回等待,超过期限按审批删除,并对正在调查的会话打保全标记。
问:并发会话应该按什么口径估?
答:按「同一时刻真正在传输数据的会话数」,而且要取值班窗口的峰值而不是全天平均值。登录了但页面挂在后台的人数、建立了连接但没有流量的会话,主要占内存和心跳,对 CPU 与磁盘的贡献很小,把它们算进并发会显著高估机器需求。更稳的做法是先做一次场景推演:集中变更或故障处置时,会有多少人同时在线、其中多少是图形会话、多少是命令行,然后乘一个余量系数。上线后把这个估算值和真实监控曲线对比修正。
问:网关挂了会不会所有会话全断?
答:会不会全断取决于你怎么部署,而不是取决于网关软件本身。单实例部署时,在途会话会随之中断,但目标主机本身不受影响,网关恢复后可以重新连进去,真正麻烦的是这段时间谁也进不去任何机器、以及正在写的录像可能损坏。多实例加共享状态与共享录制存储之后,一台实例下线通常表现为在途会话需要重连一次,录像不受影响。上线前务必主动断电一次做演练,把「重连要多久、录像会不会丢」这两个结果记录下来,再决定还要不要加一层。
问:能不能只给第三方开放指定的某几台机器?
答:能,而且这正是入口收敛之后最有价值的能力之一。做法上建议用权限模板而不是逐台手工授权:为第三方角色建一个只覆盖合同范围内那几台主机的模板,绑定项目结束日期,并限定操作类型,比如只读、禁止文件传输、不得在非值班时段使用。授予时走工单审批,到期由系统自动失效。配套还要有一条:除了网关侧的限制,网络上也要确认这几台之外的机器对第三方不可达,两层约束不要互相依赖。
问:录制文件到底会占多少磁盘?
答:没有一个可以跨环境通用的数字,但可以给出估算路径。先测出一个「单位时间体量」:用最典型的一次真实操作会话跑十分钟或半小时,按协议类型分别记录生成的文件大小,得到文本级和像素级各自的每小时体量。再用「平均活跃会话数 × 平均在会话时长 × 单位时间体量」估日增量,最后乘以留存天数。务必留出归档与冗余的开销,并且在预留容量之外单独确认顺序写 IOPS 是否跟得上——很多场景是写延迟先坏,而不是容量先用光。
问:图形会话卡顿的时候应该先查哪一层?
答:按从外到内的顺序排查效率最高。先看网关本身:这台实例的整体 CPU 是否到顶、单核是否被某个会话吃满、内存有没有进入交换、写盘延迟是不是正在抬升——这几个指标同时看,通常能判断出问题在本地还是在别处。再查这一段会话所处的网络:网关到目标主机这一段是否可达、延迟抖动如何,浏览器到网关这一段也一样要量。最后才看目标主机自身的负载与画面参数设置。压测阶段就该把这几层的基线数据留下来,出问题时才有对照物。
文中关于三种协议资源形状差异的讨论,属于对 RDP、SSH、VNC 这类主流远程访问协议工作方式的一般性描述——命令行会话以字符流为主、图形会话以帧缓冲增量为主、远程桌面包含多类通道——这也是公开的技术文档里能查到的常识性结论,不涉及任何特定产品的性能数据。
需要明确的是,本文没有提供、也不应当被当作任何实测结果使用。单会话的内存占用、每小时录制体量、单位并发对应的 CPU 消耗、考留存周期内磁盘的增长曲线,这些都高度依赖你的分辨率设置、编码参数、会话构成和操作习惯,必须以自己环境里的压测数据为准。文中出现的估算式是计算方法而非结论数字。
同样需要自行确认的还有:所选部署方案对会话生命周期的管理方式、水平扩展上限、以及它的授权条款;目标地区与行业的留存要求;以及本机型的当月报价与可用规格。涉及费用的部分公开渠道差异较大,一律以实时报价为准,签约口径以最终合同为准。
Copyright © 2013-2020 idc10000.net. All Rights Reserved. 一万网络 科技有限公司 版权所有 深圳市科技有限公司 粤ICP备07026347号
本网站的域名注册业务代理北京新网数码信息技术有限公司的产品