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
20180530LINEDeveloperMeetupRedis-redis-for-mack...
Search
i2tsuki
May 30, 2018
Technology
0
480
20180530LINEDeveloperMeetupRedis-redis-for-mackerelio
【東京】LINE Developer Meetup #36 - Redis - での発表スライド (Mackerel を支える Redis の技術) です。
i2tsuki
May 30, 2018
Tweet
Share
More Decks by i2tsuki
See All by i2tsuki
6 年の間 SRE がゼロだったプロダクトに Embedded SRE として入って やったこと、感じたこと、これから
i2tsuki
2
110
ソーシャルゲームの長期運用 を目指すための SRE の取り組み - 10 周年を⽬指すコトダマンの場合 -
i2tsuki
5
2.7k
AWS Startup.fm 企業の上場時に必要な監査要件とマネジメントサービスによる解決
i2tsuki
0
120
BuildKit を使った Scala アプリケーションのテストと高速化 @ Docker Meetup Kansai #2
i2tsuki
1
600
Mackerel's monitoring and checks
i2tsuki
1
7.1k
Mackerel インフラ基盤 AWS 移行の舞台裏
i2tsuki
6
10k
Python Web Application Monitoring in Mackerel
i2tsuki
1
6.1k
Other Decks in Technology
See All in Technology
改竄して学ぶコンテナサプライチェーンセキュリティ ~コンテナイメージの完全性を目指して~/tampering-container-supplychain-security
mochizuki875
1
360
個人から巡るAI疲れと組織としてできること - AI疲れをふっとばせ。エンジニアのAI疲れ治療法 ショートセッション -
kikuchikakeru
4
1.7k
国産クラウドを支える設計とチームの変遷 “技術・組織・ミッション”
kazeburo
4
4.5k
Building AI Applications with Java, LLMs, and Spring AI
thomasvitale
1
210
AI時代の戦略的アーキテクチャ 〜Adaptable AI をアーキテクチャで実現する〜 / Enabling Adaptable AI Through Strategic Architecture
bitkey
PRO
12
5.6k
不確実性に備える ABEMA の信頼性設計とオブザーバビリティ基盤
nagapad
3
2.8k
Quarkusで作るInteractive Stream Application
joker1007
0
160
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
410
組織の“見えない壁”を越えよ!エンタープライズシフトに必須な3つのPMの「在り方」変革 #pmconf2025
masakazu178
1
460
【M3】攻めのセキュリティの実践!プロアクティブなセキュリティ対策の実践事例
axelmizu
0
170
米軍Platform One / Black Pearlに学ぶ極限環境DevSecOps
jyoshise
2
510
プロダクト負債と歩む持続可能なサービスを育てるための挑戦
sansantech
PRO
1
520
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
57k
Balancing Empowerment & Direction
lara
5
760
Raft: Consensus for Rubyists
vanstee
140
7.2k
Fireside Chat
paigeccino
41
3.7k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
670
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Become a Pro
speakerdeck
PRO
29
5.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Transcript
Mackerel を支える - Redis の技術 - 株式会社はてな Webオペレーションエンジニア 大野一樹 (id:kizkoh)
LINE Developer Meetup #36 - Redis - 1
About Me • 大野 一樹 (@kizkoh / id:kizkoh) • 株式会社はてな
Web オペレーションエンジニア • mackerel.io のサービス設計、運用をメインで担当 • 最近の活動: K8S オペレーション、 コンテナ 2
Agenda • Microservices コンポーネントを支える Redis 事例 • 時系列データベースを支える Redis Cluster
事例 • Redis, Redis Cluster の監視、モニタリング • Redis 活用の次の一歩 3
https://mackerel.io 4
5
About Mackerel • サーバモニタリング、監視のための SaaS • サーバにあるエージェントからメトリックを投稿 • mackerel.io でのグラフ閲覧、1
分粒度 • zabbix, ganglia, prometheus のようなサービス 6
Mackerel を支える 3 つの Redis 7
Three Redis in Mackerel 8 Redis Session Store Database Cache
2 Nodes Redis Message Queue 3 Nodes Redis Cluster Time Series Database 3 Nodes x 13 Shards
Three Redis in Mackerel 9 Redis Session Store Database Cache
2 Nodes Redis Message Queue 3 Nodes Redis Cluster Time Series Database 3 Nodes x 13 Shards
メッセージキューとしての Redis 事例 10
Message Queue in Mackerel • Message Queue Pub/Sub Model (Not
Rescue) ◦ HTTP 経由でメッセージング (Microservices) ◦ 外形監視、 {AWS, Azure}インテグレーション 11 HTTP Requests Publish Job Subscribe Job
Message Queue in Mackerel • 独自の Pub/Sub モデル (リスト型オブジェクト) ◦
数分間ごとに実行されるメッセージキュー 12 HTTP Requests Publish Job Subscribe Job
Redis HA (High Availability) in Mackerel • Redis Sentinel を使わないレプリケーション
◦ keepalived + Route Table + swiro hatena/swiro: swiro - A switching route tool for AWS 13 keepalived (master) keepalived (backup) Replication AWS VPC Route table
時系列データベースを支える Redis Cluster 事例 14
Key Factor of Time Series Database(TSDB) • メトリックを時系列に保存するための DB, KVS
◦ Key: metric name + time, Value: metric value 15
Time Series Database (TSDB) in Mackerel 16 Writer Endpoint Reader
Endpoint Redis Cluster DynamoDB S3 Lambda Lambda (Trigger by TTL expire) Kinesis Streams
Service Dashboard in mackerel.io 17
Redis Cluster is Cache for TSDB • Redis Cluster は時系列データベースのキャッシュ
• データアクセス頻度 vs コストモデル 18 High Cost 50 GB Medium Cost 500 GB Low Cost 2 TB
Redis Cluster Workload • 時系列データベースのワークロード ◦ Cluster: single cluster, 13
Shard, 39 Node ◦ 60min, 6hour, 1week, 1month, 1 year のデータ ▪ 1 粒度だけど粒度は丸められている ▪ 同じホストメトリックは同じシャードに配置 ◦ 1 分点、書き込み中心のワークロード ▪ Write Heavy Workload 19
Redis Cluster の運用 20
Why We don’t use Elasticache Cluster? • Redis Cluster on
EC2 ◦ Elasticache で作成できる上限は 15 シャード ◦ インスタンスタイプの微調整ができない ◦ トラブルが起こったときにわかりづらい ▪ パケットキャプチャ、トラフィック解析 ▪ Lambda, Redis Cluster 間のトラブルシュート 21
• chef を使って EC2 上に Redis Cluster を構築 ◦ 社内は
chef がプロビジョニングのスタンダード ◦ エージェントをインストール、メトリック取得 ◦ 1 ホスト複数 redis-server プロセス同居 • クラスターへのジョインは自作ツールを利用 ◦ ノード ID を意識しないオペレーション Redis Cluster の運用とモニタリング/監視のコツ – Itsuki – Medium Redis Cluster on EC2 22
Bottleneck of Redis Cluster • 書き込み Heavy ◦ メトリックが増えるとメモリがあふれる ◦
CPU がボトルネック ▪ Redis のシングルスレッド性能頭打ち ▪ 書き込みエラーになると Lambda が詰まる 過剰なメトリック投稿 >> 過剰読み取りアクセス 23
Bottleneck of Redis Cluster • 書き込み Heavy ◦ Redis への書き込みが詰まる時
▪ Redis の CPU が限界値、 Full Resync 問題 ▪ Lambda でエラーが発生する ◦ Kinesis での Lambda Function のエラー処理 ▪ 自動的にリトライ処理がされる ▪ Redis への書き込みがされるまでリトライ => 書き込み失敗によるデータロストは発生しない 24
Retransmit of Metrics • メトリックの再送 ◦ サービスがダウン(メンテナンス)していた場合 ▪ エージェントがメトリックをバッファ(保留) ▪
エージェントがメトリックを再送 25 mackerel.io
Retransmit of Metrics • メトリックの再送 ◦ メトリックの再送が完了するまでの間 ▪ メトリック投稿が 1.5
倍になる ▪ Redis Cluster への書き込みが増加する 26 mackerel.io
Retransmit of Metrics • メトリックの再送時の Redis Cluster CPU 27
Efforts to Reduce CPU Load • CPU 負荷を抑えるための Redis Lua
◦ メトリック書き込み負荷,、読み込み負荷が高い ◦ Redis Lua で同じホストのメトリックを操作 ▪ 同じホストの複数メトリックを Redis Lua で処理 28 HMSET KEY [FIELD VALUE ...] EVAL(MultiHmSet)
Mackerel を使った Redis の監視 29
Monitor Redis Metrics on mackerel.io • mackerel-plugin-redis を使うと取得できる ◦ INFO
コマンドで取得できるメトリックを可視化 30
Replication Monitor on mackerel.io • mackerel-plugin-redis でのレプリケーション監視 ◦ slave{x}_offset_delay を可視化
31
Redis 活用の次の一歩 32
Next Steps for Redis in Mackerel • CloudNative & Managed
Service ◦ Message Queue ▪ nats.io, SQS, Redis on K8S ◦ Redis Cluster ▪ Elasticache Cluster, DynamoDB DAX ◦ Redis 5.0 ?? 33
まとめ 34
Conclusion • Mackerel の Redis 事例 ◦ Message Queue &
Redis Cluster • Redis Monitoring on mackerel.io • Redis for CloudNative era. 35
AWS Summit Tokyo にも出展中です!! 36