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.6k
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
580
Other Decks in Technology
See All in Technology
内製化を目指す事業会社が、システム開発会社と共に進める「開発生産性改善」の取り組み事例 #devsumi
yuwji
1
170
チームビルディングは"感性"で向き合おう / Team Building with Awareness
kohzas
0
280
Privacy Sandbox on Android / DroidKaigi 2024
7pairs
1
280
2ヶ月かかるDBアップグレード検証を最大2週間に短縮した自作Go製CLIツール「Platinum」を紹介する / Introducing Go CLI tool "Platinum" for shortened DB upgrade validation
vtryo
2
120
Discovering AI Models
picardparis
4
3.9k
「家族アルバム みてね」における運用管理・ オブザーバビリティの全貌 / Overview of Operation Management and Observability in FamilyAlbum
isaoshimizu
4
170
DuckDB雑紹介(1.1対応版)@DuckDB座談会
ktz
6
1.4k
Classmethod AI Talks(CATs) #1 司会進行スライド(2024.09.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol1_2024-09-19
shinyaa31
0
250
LINEヤフーのフロントエンド組織・体制の紹介
lycorp_recruit_jp
1
1.2k
不動産 x AIことはじめ~データの真価を拓くために
estie
0
130
20240911_New_Relicダッシュボード活用例
speakerdeckfk
0
110
QAに対する超個人的な解釈 / Personal Take on QA
toma_sm
1
160
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
327
20k
Fantastic passwords and where to find them - at NoRuKo
philnash
48
2.8k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
5
490
Intergalactic Javascript Robots from Outer Space
tanoku
268
26k
Bash Introduction
62gerente
608
210k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
The Invisible Customer
myddelton
119
13k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
38
9.2k
Large-scale JavaScript Application Architecture
addyosmani
508
110k
Art, The Web, and Tiny UX
lynnandtonic
294
20k
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