Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

スケーリングとベンチマーク

最終更新 Markdown で表示Agent セットアップ

Cloudflare の Keyless SSL は、垂直スケーリングと水平スケーリング、および可能な箇所での事前計算(ECDSA など)を使い、あらゆる規模のワークロードに対応できるよう設計されています。鍵サーバーのアーキテクチャの目標は、レイテンシを抑えつつ、1 秒あたりの署名処理数を最大化することです。

各鍵サーバーはワーカープールモデルを使います。受信したクライアント接続は、接続ごとの reader/writer goroutine のペアが処理し、暗号処理はグローバルプールから取り出した別のワーカー goroutine で行います。

必要に応じて、複数の鍵サーバーをデプロイし、希望する ingress のロードバランシング構成で振り分けられます。完全な高可用性を確保するには、想定ワークロードの 2 倍を処理できる台数の鍵サーバーをデプロイしてください。


鍵の種類

鍵サーバーは ECDSA と RSA の両方に対応します。ただし RSA の署名は計算コストが 桁違いに高い ため、デプロイする鍵サーバーの台数を計画するときは、使う鍵の種類を考慮してください。

ECDSA の署名は 2 ステップに分けられます。最初のステップ(あとで秘密鍵と署名対象メッセージに使う乱数の生成)が計算コストの大半を占めるため、これらの乱数を事前生成してレイテンシを大きく下げています。ECDSA の署名リクエストは、RSA の署名リクエストとは別のワーカープールで計算を分離し、できるだけ高速に保ちます。

詳細は gokeyless サーバーの readme を参照してください。


ベンチマーク

当時の最新世代の、コンピューティング最適化 EC2 インスタンス(c5.xlarge)上で、Cloudflare の gokeyless bench ツール を使ってベンチマークを実施しました。このインスタンスは 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 はコアあたり 1 つのワーカー goroutine(4 個)で動き、オペレーティングシステムのスレッド上限はコア数と同じです(この場合は GOMAXPROCS=4)。前述のとおり、ECDSA の署名性能は RSA を大きく上回ります。結果 では、この c5.xl マシンの各コアが 1 秒あたり 10,000 回を超える ECDSA 署名と、およそ 200 回の RSA 署名を処理できることが示されています。

デプロイを計画するときは、特定の鍵サーバーで終端すると見込む、1 秒あたりの新規 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.

役に立ちましたか?