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
480
#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.3k
#CloudNativeDB NewSQLへの誘い
tzkoba
4
3.3k
Cloud Native時代のデータベース
tzkoba
13
15k
2020年DBプラットフォーム (超個人的)5大ニュース
tzkoba
0
1.2k
PostgreSQLプラットフォームの徹底比較(コンテナからクラウドまで)
tzkoba
6
11k
Kubernetesでストレージ?そもそも何に使えるの?
tzkoba
0
1.2k
データ損失を回避しよう 各DBの機能比較
tzkoba
3
2.1k
昨今のデータデバイス(アーカイブ編)
tzkoba
3
1.6k
理解して拡げる分散システムの基礎知識
tzkoba
21
11k
Other Decks in Technology
See All in Technology
サービスを止めるな! DDoS攻撃へのスマートな備えと最前線の事例
coconala_engineer
1
180
20250708オープンエンドな探索と知識発見
sakana_ai
PRO
4
1k
安定した基盤システムのためのライブラリ選定
kakehashi
PRO
3
130
全部AI、全員Cursor、ドキュメント駆動開発 〜DevinやGeminiも添えて〜
rinchsan
10
5.1k
ABEMAの本番環境負荷試験への挑戦
mk2taiga
5
1.3k
ソフトウェアテストのAI活用_ver1.25
fumisuke
1
610
An introduction to Claude Code SDK
choplin
2
1.1k
ClaudeCodeにキレない技術
gtnao
1
860
united airlines ™®️ USA Contact Numbers: Complete 2025 Support Guide
flyunitedhelp
1
470
AWS 怖い話 WAF編 @fillz_noh #AWSStartup #AWSStartup_Kansai
fillznoh
0
130
CDK Toolkit Libraryにおけるテストの考え方
smt7174
1
550
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
13k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Agile that works and the tools we love
rasmusluckow
329
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
750
Building Applications with DynamoDB
mza
95
6.5k
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