Mat*_*dan 5 ssl openssl amazon-ec2
我最近设置了一个基于 Node.js 的 Web 套接字服务器,该服务器已经过测试,可以在一个小型 EC2 实例 (m1.small) 上每秒处理大约 2,000 个新连接请求。考虑到 m1.small 实例的成本,以及将多个实例置于支持 WebSocket 的代理服务器(例如 HAProxy)之后的能力,我们对结果非常满意。
但是,我们意识到我们还没有使用 SSL 进行任何测试,因此研究了许多 SSL 选项。很明显,在代理服务器上终止 SSL 连接是理想的,因为这样代理服务器可以检查流量并插入 X-Forward-For 之类的标头,以便服务器知道请求来自哪个 IP。
我查看了 Pound、stunnel 和 Stud 的 SSL 终止解决方案,所有这些都允许终止 443 上的传入连接,然后传递到端口 80 上的 HAProxy,然后将连接传递到 Web 服务器。然而不幸的是,我发现将流量发送到 c1.medium(高 CPU)实例上的 SSL 终止代理服务器会非常迅速地消耗所有 CPU 资源,并且每秒只有 50 个左右的请求。我尝试使用上面列出的所有三个解决方案,并且所有这些解决方案的表现与我假设的大致相同,无论如何它们都依赖于 OpenSSL。我尝试使用 64 位非常大的 High CPU 实例 (c1.xlarge),发现性能仅与成本成线性关系。因此,根据 EC2 定价,我需要为每秒 200 个 SSL 请求支付大约 600p/m 的费用,而不是 2 的 60p/m,每秒 000 个非 SSL 请求。当我们开始计划每秒接受 1,000 或 10,000 次请求时,前一种价格很快在经济上变得不可行。
我还尝试使用 Node.js 的 https 服务器终止 SSL,其性能与 Pound、stunnel 和 Stud 非常相似,因此该方法没有明显优势。
所以我希望有人能提供帮助,建议我如何解决这个荒谬的成本,我们必须吸收以提供 SSL 连接。我听说 SSL 硬件加速器提供了更好的性能,因为该硬件专为 SSL 加密和解密而设计,但由于我们目前所有服务器都使用 Amazon EC2,除非我们有单独的数据,否则不能选择使用 SSL 硬件加速器以物理服务器为中心。我只是想看看亚马逊、谷歌、Facebook 等公司如何在成本如此高的情况下通过 SSL 提供所有流量。那里必须有更好的解决方案。
任何建议或想法将不胜感激。
谢谢马特
首先,祝你开始基准测试。我的直觉让我想知道你正在使用什么密钥大小。在我看来,您每秒应该能够终止超过 200 个连接。如果您使用的密钥大小大于 1024,请注意性能会很快下降。
如果您使用较小的密钥但仍然遇到问题,我会仔细研究 EC2 提供的 GPU 产品。在每秒达到一定数量的连接后, SSLShader可能是一种经济有效的转换。
此外,调查 @ceejayoz 提到的 Elastic Load Balancer 也有其价值。
| 归档时间: |
|
| 查看次数: |
3987 次 |
| 最近记录: |