Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SSLセッションキャッシュを共有したいだけの人生だった
Search
Yusuke Nojima
February 08, 2016
Technology
6
2.9k
SSLセッションキャッシュを共有したいだけの人生だった
@nojima (Cybozu, Inc)
nginx tech talks
2016-02-08
http://eventdots.jp/event/578421
Yusuke Nojima
February 08, 2016
Tweet
Share
More Decks by Yusuke Nojima
See All by Yusuke Nojima
インフラ自動化の落とし穴と宣言的アーキテクチャ
nojima
24
12k
Nginx Hacking Guide
nojima
0
690
Other Decks in Technology
See All in Technology
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
440
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
920
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
110
AIのグローバルトレンド2025 #scrummikawa / global ai trend
kyonmm
PRO
1
280
2つのフロントエンドと状態管理
mixi_engineers
PRO
3
100
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
12
4.7k
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
540
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
370
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
160
ハードウェアとソフトウェアをつなぐ全てを内製している企業の E2E テストの作り方 / How to create E2E tests for a company that builds everything connecting hardware and software in-house
bitkey
PRO
1
130
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Producing Creativity
orderedlist
PRO
347
40k
Become a Pro
speakerdeck
PRO
29
5.5k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Embracing the Ebb and Flow
colly
87
4.8k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Six Lessons from altMBA
skipperchong
28
4k
Transcript
SSLセッションキャッシュを 共有したいだけの人生だった @nojima Cybozu, Inc. nginx Tech Talks 2016-02-09 nginx
Tech Talks 1
SSL のハンドシェイクに 265ms もかかっている とあるサイトに SSL で接続してみる 2016-02-09 nginx Tech
Talks 2
265ms → 138ms (だいたい半分) になった!! もう一度接続してみる 2016-02-09 nginx Tech Talks
3
Why? • SSL セッションキャッシュのおかげ • SSL ハンドシェイクで共有したパラメータ (共有鍵とか) をキャッシュ しておく。
• 次回同じセッションIDで接続してきたクライアントに対しては パラメータの共有を省いて、いきなり TLS セッションを開始する。 • 効果 • ラウンドトリップが1往復分減る → レイテンシ減 • サーバ側の計算が減る → スループット増 ※ ブラウザによっては SSL セッションチケットという別の仕組みでセッション再開できるが、 IE や iOS Safari は対応していない。 2016-02-09 nginx Tech Talks 4
ところが nginx の標準機能では、 複数のサーバ間でセッションキャッシュを 共有できない!!! 2016-02-09 nginx Tech Talks 5
Client Layer 4 Load Balancer nginx-1 nginx-2 nginx-3 ① 最初のコネクションが
nginx-1 に割り振られる ② nginx-1 にセッションがキャッシュされる ③ 二回目のコネクションが nginx-3 に割り振られる ④ キャッシュがないので セッション再開できない!!! DC 2016-02-09 nginx Tech Talks 6
というわけで nginx の SSL セッションキャッシュを 共有できるようにするパッチを書いた。 2016-02-09 nginx Tech Talks
7
nginx-ssl-scache-sync-module • nginx が SSL セッションキャッシュを保存する処理にフック して、別のサーバの nginx に対してセッションキャッシュを 送り付ける仕組み。
• サイボウズの本番環境で使うために作った。 • 以下の URL で公開中 • https://gist.github.com/nojima/daac8c5710a2766bd638 • 1.9.10 より新しい nginx には当たらないので注意。多分そのうち直し ます。 2016-02-09 nginx Tech Talks 8
nginx-1 nginx-2 nginx-3 session cache ① SSL接続 が来る ② セッション
キャッシュ が生成される cache ③ 非同期に セッション キャッシュを 送りつける cache cache Client ④ 再び SSL 接続が来る ⑤ セッションが再開できる! session cache DC 2016-02-09 nginx Tech Talks 9
nginx-ssl-scache-sync-module • よかった点 • パフォーマンス向上 • 前述のとおり、キャッシュによってサーバのスループットが上がる。 • レイテンシも減るが、日本だとあまり実感できない。 •
Just Works!! • サイボウズの本番環境で1年間運用。トラブルなし。 • よくない点 • スケールしない • nginx サーバ台数に比例してセッションを共有する通信の負荷が上がってしまう。 2016-02-09 nginx Tech Talks 10
ところで H2O は? • H2O はセッションキャッシュの共有を標準でサポートしている。 • しかも memcached を使う方式なのでサーバ台数が増えても
大丈夫。 • 自分たちが memcached を使わなかったのは、OpenSSL の制約の都合 上実装できないと思っていたから。 • しかし、H2O は驚きのスーパーハックで解決していた: https://github.com/h2o/h2o/issues/118 2016-02-09 nginx Tech Talks 11
今日言いたかったこと 誰か H2O 方式のセッションキャッシュ 共有モジュールを書いてくれ!!!! (or ngx_ssl_session_fetch_by_lua に期待) 2016-02-09 nginx
Tech Talks 12
WE ARE HIRING サイボウズはインフラエンジニアを 募集しております 2016-02-09 nginx Tech Talks 13