加拿大 VPS 托管:何时必须选加拿大服务器?
PIPEDA 并不要求个人信息存储在加拿大。了解魁北克第25号法案、公共部门规则与客户合同何时构成硬性要求,并用实际 RTT 测量延迟。
您的 VPS 是否需要位于加拿大?
当法律或合同规定数据必须留在加拿大境内时,选择加拿大的 VPS 托管服务才有必要。这是唯一的硬性理由。从多伦多家庭网络连接到纽约数据中心的往返延迟约为 18 ms,而到多伦多数据中心约为 3 ms,几乎没有 Web 应用能够区分这两者。
有三点会促使人们选择加拿大服务器。数据驻留属于法律义务,因此这一点本身就能决定选择。延迟可以测量,而且通常比人们预期的更低。使用加元计费可以方便会计处理。在考虑其他因素之前,先确定第一点是否适用于您。
本文介绍一般情况下规则的运作方式,不构成法律建议。如果隐私法对您的组织具有约束力,请咨询法律顾问。
数据驻留:唯一的硬性要求
PIPEDA(《个人信息保护与电子文件法》)是加拿大联邦私营部门隐私法。该法不要求个人信息留在加拿大境内。它将把数据发送给境外处理方视为用于处理的传输:您的组织仍需对数据负责,处理方必须提供同等程度的保护,并且您必须向相关人员公开说明存在此类传输。加拿大隐私专员办公室曾在 2019 年就收紧相关要求展开咨询,但随后维持了现有立场。因此,常见的“PIPEDA 要求数据必须存储在加拿大”这一说法是错误的,尽管许多托管服务宣传材料都在重复这一说法。
实际的数据驻留规则确实存在,但适用范围更窄。
- 魁北克第 25 号法案要求,在将个人信息发送到省外之前进行评估,并确保信息在接收地获得充分保护。该条款自 2023 年 9 月起生效。这要求完成文档工作并作出能够自圆其说的决定,而不是全面禁止。
- 公共部门规则约束公共机构及为其提供服务的公司。Nova Scotia 的 PIIDPA 限制在加拿大境外存储个人信息。British Columbia 的 FIPPA 也曾有类似规定,直到 2021 年修订后,才允许在完成评估后进行境外存储。
- 联邦政府项目遵循加拿大政府的云计算政策,该政策要求 Protected B 及更高级别的数据留在加拿大境内。
- 各省的健康隐私法还会对健康记录可以存储的位置规定额外条件,而且各省规定不同。
- 实际上,客户合同和公共招标是最常见的驱动因素。安全问卷中写明“静态数据存储在加拿大”,对您的约束力与法律法规相同,因为您已经签署了该问卷。
实际判断很简单:您能指出具体条款吗?如果组织中没有人能说出要求数据存储在加拿大的法律或合同,那么您选择加拿大只是出于延迟和价格考虑。
加拿大数据中心是否不受美国法律管辖?
不能仅凭其位于加拿大来判断。美国《云法案》(Clarifying Lawful Overseas Use of Data Act)适用于由美国服务提供商占有、保管或控制的数据,无论硬件位于何处。因此,由美国公司运营的多伦多区域也在该法案的管辖范围内。如果实际要求涉及外国法律程序,而不是地理位置,那么关键在于谁运营该服务,以及谁持有加密密钥。建筑物位于加拿大并不能单独回答这个问题。
路由是第二个容易忽略的问题。两个加拿大城市之间的网络流量经常会经过美国,因为历史上美国一直拥有成本较低的对等互联。研究人员将其称为回旋路由。在向任何人保证数据包不会离开加拿大之前,请先运行 traceroute。
traceroute vps.example.com跃点名称中可能包含 nyc、chi 或 ash 等城市代码。这些名称只能作为提示,而且可能过时,因此应将其视为向服务提供商询问的依据,而不是证明。对于传输中的数据,可靠的保障是由您控制的加密,而不是地图。如果您希望在自己的计算机之间建立专用路径,自托管 WireGuard VPN 可以提供一条不受光纤经过哪个国家影响的路径。
延迟:测量,不要假设
光在光纤中的传播速度约为每毫秒200 km,因此距离每增加100 km,在不考虑任何设备的情况下,往返延迟大约增加1 ms。多伦多到温哥华的直线距离约为3,400 km,经过光缆的距离更长,因此理论下限接近40 ms。实际路径的延迟会更高。
The data behind this chart
[
{
"label": "Toronto",
"rtt_ms": 3
},
{
"label": "Montreal",
"rtt_ms": 12
},
{
"label": "New York",
"rtt_ms": 18
},
{
"label": "Chicago",
"rtt_ms": 24
},
{
"label": "Northern Virginia",
"rtt_ms": 26
},
{
"label": "Dallas",
"rtt_ms": 42
},
{
"label": "Vancouver",
"rtt_ms": 62
},
{
"label": "London",
"rtt_ms": 88
},
{
"label": "Frankfurt",
"rtt_ms": 98
}
]这些是多伦多网络连接良好的消费者线路通常公布的数据。它们只能作为起点,不能视为保证值。实际数值取决于您的接入网络和服务提供商的对等互联情况,并且会随时间变化。
有两行数据值得仔细比较。多伦多到蒙特利尔约为 12 ms,距离足够近,因此在大多数情况下,这两座城市可以视为同一区域。多伦多到温哥华约为 62 ms,高于多伦多到北弗吉尼亚的 26 ms。在加拿大境内,并不等于靠近您的用户。
不过,最后一公里通常才是主要因素。家庭光纤会增加几毫秒。线路繁忙时,有线网络增加的延迟更多。移动网络本身会增加数十毫秒。多伦多的手机用户访问多伦多服务器时,延迟可能为50 ms;将服务器迁移到纽约,只会使其体验改变几个百分点。
如何从用户所在位置测试延迟
首先确定用户实际所在的位置。您的分析数据已经按城市或地区细分会话。请以此为依据,不要根据办公室所在位置猜测。
然后从这些位置进行测量。您无法在渥太华的办公桌旁测试温哥华的延迟。可以在目标城市租用按小时计费的 VPS,运行 20 分钟后销毁。也可以请同事或客户运行一条命令。还可以使用免费的 RIPE Atlas 测量网络,网址为 https://atlas.ripe.net。该网络在加拿大各城市部署了探针,可让您从这些位置运行 ping。
sudo apt update && sudo apt install -y mtr-tiny traceroute iperf3
ping -c 20 vps.example.com查看最后两行。
20 packets transmitted, 20 received, 0% packet loss, time 19031ms
rtt min/avg/max/mdev = 17.412/18.006/19.882/0.594 msavg 是主要数值。mdev 是抖动,即数据包之间的延迟差异。在较短路径上,任何丢包都值得排查。高抖动对语音和游戏的影响大于略高的平均延迟,因为接收端必须按照最慢数据包而不是典型数据包进行缓冲。
mtr --report --report-cycles 50 vps.example.commtr 会显示每一跳的丢包情况。如果它因权限错误退出,请使用 sudo 运行。中间跳经常显示并非真实的丢包,因为路由器会将自己生成的 ICMP 响应置于最低优先级。只有一直持续到最后一行的丢包,才是您的流量实际遭受的丢包。先查看最底部一行,再逐行向上检查。
当 ICMP 被阻止或受到速率限制时,请改为测量实际协议的耗时。
curl -o /dev/null -s -w 'dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' https://vps.example.com/每个字段都是从请求开始计算的累计秒数。connect 减去 dns 是一次 TCP 往返。tls 减去 connect 是握手耗时。ttfb 减去 tls 是另一次往返加上应用程序响应所需的时间。大多数网站的慢速问题都发生在最后这个时间间隔中。在较短路径上,ttfb 为 0.8 s 表示应用程序存在问题,将服务器移到其他城市不会改善这一点。
要测量吞吐量,请在 VPS 上运行服务器,并从用户所在位置运行客户端。iperf3 监听 TCP 5201,因此请在测试期间 使用 ufw 开放端口,完成后再次关闭该端口。
iperf3 -siperf3 -c vps.example.com -t 20
iperf3 -c vps.example.com -t 20 -R
iperf3 -c vps.example.com -t 20 -P 8-R 会反转传输方向,因此可以同时测量下载和上传。-P 8 会打开 8 个并行流。如果 8 个流比 1 个流快很多,限制因素就是长路径上的 TCP 窗口,而不是链路本身,因为单个流在每次往返中只能传输一个窗口的数据。在温哥华路径上,同样大小的窗口每秒传输的数据量大约只有纽约路径的三分之一。长距离备份也遵循相同规律。因此,即使线路速度很快,针对远端目标执行 使用 restic 进行异地备份 仍会感觉很慢。
在 iperf3 运行期间,在第二个终端中持续运行 ping。如果传输期间往返延迟从 20 ms 升至 300 ms,说明您自己的接入设备存在缓冲膨胀问题,迁移到任何数据中心都无法解决。
请多次测量,并在晚上测量。晚上 9pm 的拥塞情况才是用户实际面对的情况。凌晨 4am 的数据则是销售页面更愿意引用的数字。
往返时间对工作负载的影响
冷启动页面加载需要经过 4 次往返,浏览器才能开始绘制内容。
The data behind this chart
[
{
"label": "DNS lookup",
"toronto_to_new_york_ms": 18,
"toronto_to_vancouver_ms": 62
},
{
"label": "TCP handshake",
"toronto_to_new_york_ms": 18,
"toronto_to_vancouver_ms": 62
},
{
"label": "TLS 1.3 handshake",
"toronto_to_new_york_ms": 18,
"toronto_to_vancouver_ms": 62
},
{
"label": "Request and first byte",
"toronto_to_new_york_ms": 18,
"toronto_to_vancouver_ms": 62
},
{
"label": "All four round trips",
"toronto_to_new_york_ms": 72,
"toronto_to_vancouver_ms": 248
}
]DNS 查询发送到解析器,而不是您的服务器。解析结果通常已缓存,因此后续访问可以跳过这一步。按端到端延迟计算,冷启动加载在前往 New York 的路径上会先产生 72 ms 的延迟,在前往 Vancouver 的路径上会先产生 248 ms 的延迟。与单次 400 ms 的数据库查询相比,这两个数值都微不足道。连接建立后,HTTP/2 和 HTTP/3 可以通过同一连接同时传输多个请求,因此这项开销只需支付一次,而不是每个文件支付一次。将静态资源放在 CDN(内容分发网络)上后,源站所在城市对这些资源不再有任何影响。因此,即使欧洲访问者到 Toronto 的延迟为 98 ms,仍然可以快速加载页面。
实时多人游戏则相反,因为往返时间就是游戏体验。在快节奏动作游戏中,低于约 50 ms 通常感觉即时;达到约 80 ms 时,玩家开始察觉延迟;超过 120 ms 后,玩家会将问题归咎于服务器。在这种情况下,区域确实决定产品体验是否良好。节奏较慢的服务器宽容得多,因此在 VPS 上运行 Minecraft 服务器可以承受足以破坏射击游戏体验的距离。
数据库场景中,区域选择会造成严重影响。不要将应用部署在一个区域,而将数据库部署在另一个区域。每次查询都是一次往返。一个页面执行 40 次查询,就要支付 40 次往返:每次 18 ms 时,总延迟接近 1 秒;每次 62 ms 时,总延迟超过 2 秒。即使数据库与应用位于同一台服务器上,该页面的性能分析结果也只有 30 ms。将数据异步复制到其他区域适用于只读副本和灾难恢复。跨越长距离执行同步提交,则会将这段路径的延迟增加到每一次写入中。
交互式会话介于两者之间。SSH 在约 100 ms 的延迟下仍然舒适,超过这一数值后会出现明显卡顿,因为每次按键都要等待回显返回。mosh 会在本地进行预测,从而隐藏大部分延迟。Webhook 和内部 API 始终应与其调用的服务位于同一区域。
账单、货币和税费
使用加元付款可以避免发卡机构收取的外币交易费。截至 2026 年 8 月,该费用通常约为 2.5%。这也可以让您的账目统一使用一种货币。加拿大服务商会开具包含 GST 或 HST 的发票,已注册企业可以将其作为进项税额抵免申报。这是财务问题,应由财务因素决定,绝不应决定数据包的去向。要了解服务器的实际成本,以及如何比较套餐并避免受续费价格影响,请阅读 VPS 每月实际成本。
更小的市场会带来哪些代价
加拿大的托管市场相对于美国较小。客观建议也应说明您需要放弃什么。
- 争夺您预算的提供商更少,因此对于同一档次的机器,每 GB RAM 或磁盘的价格通常更高。
- 容量主要集中在多伦多和蒙特利尔,温哥华和卡尔加里的容量较少。用于故障转移的第二个加拿大区域通常意味着较长的网络路径,或者仍然需要离开加拿大。
- 小型区域主机商可能只在一栋建筑中运行,并且仅依赖一两家上游运营商。请询问有多少家运营商,以及其中一家发生故障时会怎样。
- 硬件选项较少。在美国区域更容易找到大型实例和 GPU 机器,因此您想要的规格和城市可能没有 GPU VPS。
- 小型主机商的支持覆盖范围需要实际确认,而不能只看营销宣传。请询问什么时候有工作人员值班。
蒙特利尔在价格方面是例外。魁北克的水力发电成本较低,冬季也能降低冷却成本,因此蒙特利尔地区拥有大量容量,价格可以与美国区域竞争。如果您的要求是位于加拿大,而不是指定某个城市,请从这里开始。
如果加拿大 VPS 层级对您的工作负载来说过小,请先比较 VPS 与专用服务器,再决定问题是否出在加拿大这个国家。
在加拿大使用 VPS 托管是正确选择的情况
- 法规、合同或公共部门政策明确要求使用加拿大。请在加拿大托管。本文其他内容均不适用。您还应要求提供商以书面形式确认数据驻留承诺。
- 用户集中在加拿大某个城市,且工作负载受延迟限制,例如多人游戏、语音、远程桌面或交易。请在最近的城市托管,并在签约前测量两种方案。
- 用户分布在全国各地。多伦多或蒙特利尔覆盖的人口比例最大。在静态资源前接入 CDN,比迁移源站更能改善温哥华访客的体验。
- 其他所有情况,也就是大多数情况。根据价格和实际获得的硬件进行选择,然后确认凌晨 2 点的支持情况。先对候选方案进行基准测试,因为规格表相同的两个方案,性能并不一定相同:如何正确对 VPS 进行基准测试。
无论选择哪种方案,都要在决策旁记录原因。下一个需要确认是否应在加拿大托管的人,应该得到明确答案,而不是猜测。如果答案曾经写在合同条款中,之后还必须有人能再次找到它。服务器创建后,新 VPS 上线后的前 10 分钟 对安全性的影响,远大于服务器所在的城市。
FAQ
PIPEDA 是否要求我的数据必须留在加拿大?
不要求。PIPEDA(《个人信息保护与电子文件法》)没有针对私营部门的数据驻留规定。将个人信息发送给其他国家的处理者属于为处理目的进行的传输:您的组织仍需对数据负责,处理者必须提供同等程度的保护,并且您必须向相关人员公开说明会发生此类传输。加拿大隐私专员办公室曾在2019年就改变这一立场开展咨询,但之后维持了原立场。驻留要求来自其他规定,例如魁北克 Law 25 的评估要求、新斯科舍省的 PIIDPA 等公共部门法律、加拿大政府的云计算指引,或您与客户签订的合同中的相关条款。
加拿大用户会注意到服务器位于美国吗?
对于普通 Web 应用,不会。从多伦多到纽约的往返时间约为 18 ms,到北弗吉尼亚约为 26 ms;两者都短于多伦多到温哥华的 62 ms。用户会先注意到服务器响应时间和页面大小,很久之后才会注意到 20 ms 的网络延迟。但在实时游戏、语音通话以及需要一方对另一方做出反应的场景中,用户确实会注意到延迟。
加拿大境内的数据中心是否不受美国法律管辖?
不一定。美国 CLOUD Act 适用于美国服务提供商占有、托管或控制的数据,无论服务器位于何处。因此,由美国公司运营的加拿大区域仍受该法律覆盖。如果您真正关注的是外国法律程序,应考察谁在运营服务以及谁持有加密密钥,而不是只看建筑物的地址。使用由您自行持有的密钥进行加密,会改变服务提供商能够交出的数据范围。
如何测量我不居住城市的延迟?
在该城市租用按小时计费的 VPS,运行 ping -c 20 和 mtr --report --report-cycles 50,测试到您自己服务器的连接,然后销毁该 VPS。RIPE Atlas 网络是免费的替代方案,它在加拿大各城市部署了探针。如果 ICMP 被阻止,可以改用 curl -o /dev/null -s -w '%{time_connect} %{time_starttransfer}\n' https://your.server/ 测量实际请求的耗时。该命令会提供 TCP 往返时间以及到第一个字节的完整耗时。