跳转到内容
搜索文档

扩展和基准测试

最后更新 查看 MarkdownAgent 设置

Cloudflare 的 Keyless SSL 技术旨在通过垂直和水平扩展以及尽可能使用预计算技术(例如 ECDSA)来扩展以容纳任何规模的工作负载。密钥服务器架构设计的目标是在最大化每秒签名操作的同时最小化延迟。

每个密钥服务器使用工作池模型,传入的客户端连接由其自己的一对 reader/writer goroutine 处理,密码工作在从全局池中提取的单独 worker goroutine 中完成。

在需要时,可以部署多个密钥服务器,并使用您首选的入口负载均衡配置在它们之间进行平衡。为了实现完全高可用性,请确保部署足够的密钥服务器以处理预期工作负载的两倍。


密钥类型

密钥服务器同时支持 ECDSA 和 RSA 密钥,但 RSA 的签名计算成本高出一个数量级,因此在规划部署中密钥服务器数量时请考虑所用密钥类型。

ECDSA 签名可分为两个步骤。由于第一步——生成随机值(稍后与私钥和要签名的消息一起使用)——代表大部分计算成本,我们预先生成这些随机值以显著降低延迟。ECDSA 签名请求使用单独的工作池与 RSA 签名请求进行计算隔离,以尽可能保持其快速。

更多详情可在 gokeyless 服务器 readme 文件 中找到。


基准测试

我们使用 Cloudflare 的 gokeyless bench 工具 在当时最新一代的计算优化 EC2 实例(c5.xlarge)上进行了基准测试。该实例具有由 3.0 GHz Intel Xeon 处理器驱动的 4 个 vCPU:

c5$ cat /proc/cpuinfo|grep "model name"
model name	: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name	: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name	: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name	: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz

默认情况下,bench 以每个核心一个 worker goroutine(4)运行,操作系统线程的最大数量等于核心总数(在本例中为 GOMAXPROCS=4)。如预期并如上所述,ECDSA 签名性能远超 RSA。结果显示,此 c5.xl 机器的每个核心可执行超过 10,000 次 ECDSA 签名操作/秒,以及大约 200 次 RSA 签名操作/秒。

规划部署时,请确定您期望使用给定密钥服务器终止的每秒最大新 TLS 连接数,并相应扩展。为了实现完全高可用性,每个运行 keyless 的数据中心应能够终止您预期的完整工作负载。

结果

ECDSA

c5$ bench -ski $ECDSA_SKI -op ECDSA-SHA256 -bandwidth -duration 60s
Total operations completed: 2661570
Average operation duration: 22.543µs

RSA

c5$ bench -ski $RSA_SKI -op RSA-SHA256 -bandwidth -duration 60s
Total operations completed: 46560
Average operation duration: 1.288659ms.

这篇文档对您有帮助吗?