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
#kichijojipm Database on Kubernetesのお話(短縮版)
Search
tzkoba
August 02, 2019
Technology
1
460
#kichijojipm Database on Kubernetesのお話(短縮版)
CNDTで話した内容のRecapです。15分用。
tzkoba
August 02, 2019
Tweet
Share
More Decks by tzkoba
See All by tzkoba
The State of Distibuted Database In Japan
tzkoba
1
1.2k
#CloudNativeDB NewSQLへの誘い
tzkoba
4
3.2k
Cloud Native時代のデータベース
tzkoba
13
15k
2020年DBプラットフォーム (超個人的)5大ニュース
tzkoba
0
1.1k
PostgreSQLプラットフォームの徹底比較(コンテナからクラウドまで)
tzkoba
6
10k
Kubernetesでストレージ?そもそも何に使えるの?
tzkoba
0
1.2k
データ損失を回避しよう 各DBの機能比較
tzkoba
3
1.9k
昨今のデータデバイス(アーカイブ編)
tzkoba
3
1.6k
理解して拡げる分散システムの基礎知識
tzkoba
21
11k
Other Decks in Technology
See All in Technology
php-conference-nagoya-2025
fuwasegu
0
140
NFV基盤のOpenStack更新 ~9世代バージョンアップへの挑戦~
vtj
0
330
あれは良かった、あれは苦労したB2B2C型SaaSの新規開発におけるCloud Spanner
hirohito1108
2
890
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
遷移の高速化 ヤフートップの試行錯誤
narirou
5
850
Windows の新しい管理者保護モード
murachiakira
0
190
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
6
2k
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
270
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
250
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
6
1.5k
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
250
Amazon Aurora のバージョンアップ手法について
smt7174
1
110
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
22
1.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
430
YesSQL, Process and Tooling at Scale
rocio
172
14k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Music & Morning Musume
bryan
46
6.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Rails Girls Zürich Keynote
gr2m
94
13k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
360
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Transcript
Cloud Native Storageが拓く Database on Kubernetesの未来 吉祥寺.pm #19 2019/8/2 @tzkb
2 自己紹介 名 前: Takahiro Kobayashi 職 種:
DBを中心としたインフラエンジニア 好 物: 速いDB、太い帯域、小さなレイテンシ 出没する場所 Oracle、PostgreSQL、Kubernetesなどの勉強会
3 PostgreSQL on Kubernetes、色々やってます CloudNativeDays Tokyo 2019 Cloud Native Storageが拓く
Database on Kubernetesの未来 PGConf.Asia 2019 @Bali Building PostgreSQL as a Service with Kubernetes + =∞
4 アジェンダ 1. そもそもKubernetesって何? 2. Kubernetes上でデータベースを動かす際の課題 3. Database on Kubernetesの検証
HAパターン Replication(Operator)パターン 4. DBプラットフォームとしてのKubernetes
5 1. そもそもKubernetesって何?
6 Kubernetesを知っていますか? 「おれがKubernetesだ。」 「Kubernetes、完全に理解した。」 「Kubernetes、なにもわからない。」
7 Kubernetes=コンテナ・オーケストレーター コンテナ コンテナ コンテナ コンテナ コンテナ • 軽量VMであるコンテナを良い感じに管理してくれる。 特徴として以下がある。
• 宣言的設定 構築手順を定めるのではなく、 状態を定義する。 • 自己修復 上記の状態に自動で復旧 • Immutable Drop & Create PetではなくCattle
8 Kubernetesはデータベースに不向き? Node Node Node Master Slave Replicate • DBやSDSは、K8sで扱うには向いていないとされてきた。
特徴が足枷に。 • 宣言的設定 • 自己修復 一貫性を担保するために、リカ バリ手順が必要 起動順序などが問われるケース もある • Immutable データ消失はありえない ペット的な扱いが必要
10 Storageにも色々あるけれど • CNCFという団体で定めたLandscapeにStorageも沢山。 • ただ、今までのストレージと何が違うのか分かりづらい。
11 Compute Control plane Data plane Kubernetesから使える2種類のストレージ Controler Controler •
K8sがストレージのどこまでを管理する/できるかで違いがある。 Kubernetes Ready Kubernetes Native
12 2. Kubernetes上で データベースを動かす際の課題
13 Kubernetesの本質は分散システム • K8sクラスタはetcdを中心とした分散システムとして構築される。 • つまりノードが未応答の際に、 – ネットワーク分断? – プロセス(kubelet)障害?
– ノード障害? どれに該当するか、判断が難しい。 • ディスクリソースがattachされて いれば、その状態も把握する必要 がある。 永続ボリュームを利用する workloadが嫌われる理由はこれ。 FailOver?
14 解はあるのか?DBアーキテクトは知っている。 • 状態がわからないなら、安全側に倒して 処理を継続させたら良いんじゃない? • 共有リソースをつくらなければ 良いんじゃない? • それってクラスタリングでは昔から
やっていることだよね。
15 分散システムへの対応① HA構成におけるFencing VIP Linux-HA Controller Controller << 状態不明なマスターが発生したら>> ①
強制的にノードの電源落とす i. プロセスを確実に停止 ii. ストレージのマウントを外す iii. VIPを外す ② その上で別ノードでリソースを 獲得して、マスターを起動 ※強制電源断はHWベンダ提供の管理ポートや クラウドAPIを通して行われる。 • 障害ノードをフェンスで囲うこと(隔離) =Fencing
16 分散システムへの対応② Replicationにおけるリーダー選出 WAL データは最新、 リーダーに選出。 他はスレーブ。 • 複数候補から常に1台のマスタ を選出
• 元マスタが復帰後もスレーブに なっていることを通知する <<状態不明なマスタが発生したら>> ① 残ったスレーブから1台の リーダーを選出する ② 選出されたらマスターへ昇格 ③ 復帰ノードはスレーブになる • アルゴリズムとしてはPaxos、Raftなどが有名。 マスタ スレーブ
17 3. Database on Kubernetesの検証
18 HA構成パターン(i): Replicas:1 • PostgreSQLはStatefulSet、PVとしてRook/Cephを用いる。 • DBもストレージも全て K8sで管理するHA構成 • 共有ディスクはCeph
• kube-fencingでNode 障害時のFencing << 課題 >> • 複雑すぎるCeph • ネットワーク越しのIO による性能劣化 kube-fencing
19 HA構成パターン(ii): Replicas:1 kube-fencing • LINSTORがProvisioning/AttachするDRBDボリュームを用いる。 • DBもストレージも全て K8sで管理するHA構成 •
DRBDでデータ冗長化 • シンプル • ReadはローカルIO、 性能面でCephに優る << 課題 >> • スケール上限あり
20 (参考)SDS別のベンチマーク結果 シングル構成(EBS) Rook/Ceph DRBD 1インスタンス 5インスタンス 2インスタンス 100 37.8
77.1 • pgbenchによる簡易ベンチマークでは以下のような差が出た。 TPS
21 Replicationパターン(Operator): • KubeDBはPostgreSQLに限らず、様々なDBを扱えるOperator。 kubedb-operator -0 -1 -2 postgres snapshot
dormantdabases • KubeDBでは – PostgreSQL – MySQL – Redis 等のCRDが準備済。 • kubedb-operatorが PostgreSQLのSRを構成。 • SnapshotのCRDもあり、 バックアップ・リストア が可能。 S3等にスナップショット の保存が可能
22 4. DBプラットフォームとしてのKubernetes
23 ここまで見てきたこと DBクラスタリングをKubernetes Nativeで行うことに ついては、SDSやFencingなど部品が揃いつつある。 Replication構成をK8s化する試みは続いており、 Operatorを利用してDBAタスクを自動化する流れが 生まれてきている。
しかし、それで終わりではない(かも知れない)。 Cloud Native Storage + + = ???
24 DB/Storage プラットフォームとしてのKubernetes DBaaS by Kubernetes STaaS by Kubernetes <<DBaaSの基本要素>>
• HA • Replication • DB Operator <<STaaSの基本要素>> • シンプルな冗長化 • 分散ストレージ • 互換性の高いIF(CSI) • “Platform for Platforms”として、K8sが各Serviceを支える。
Building PostgreSQL as a Service with Kubernetes PGConf.Asia 2019 2019/9/9
@tzkb
26 Questions? @tzkb @tzkoba