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
530
1
Share
#kichijojipm Database on Kubernetesのお話(短縮版)
CNDTで話した内容のRecapです。15分用。
tzkoba
August 02, 2019
More Decks by tzkoba
See All by tzkoba
The State of Distibuted Database In Japan
tzkoba
1
1.5k
#CloudNativeDB NewSQLへの誘い
tzkoba
4
3.4k
Cloud Native時代のデータベース
tzkoba
13
15k
2020年DBプラットフォーム (超個人的)5大ニュース
tzkoba
0
1.2k
PostgreSQLプラットフォームの徹底比較(コンテナからクラウドまで)
tzkoba
6
11k
Kubernetesでストレージ?そもそも何に使えるの?
tzkoba
0
1.3k
データ損失を回避しよう 各DBの機能比較
tzkoba
3
2.2k
昨今のデータデバイス(アーカイブ編)
tzkoba
3
1.7k
理解して拡げる分散システムの基礎知識
tzkoba
21
11k
Other Decks in Technology
See All in Technology
Kubernetesの「隠れメモリ消費」によるNode共倒れと、Request適正化という処方箋
g0xu
0
160
DMBOKを使ってレバレジーズのデータマネジメントを評価した
leveragestech
0
490
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
160
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
300
GitHub Actions侵害 — 相次ぐ事例を振り返り、次なる脅威に備える
flatt_security
11
6.9k
GitHub Advanced Security × Defender for Cloudで開発とSecOpsのサイロを超える: コードとクラウドをつなぐ、開発プラットフォームのセキュリティ
yuriemori
1
120
【Oracle Cloud ウェビナー】データ主権はクラウドで守れるのか?NTTデータ様のOracle Alloyで実現するソブリン対応クラウドの最適解
oracle4engineer
PRO
3
120
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.3k
Bref でサービスを運用している話
sgash708
0
210
Tour of Agent Protocols: MCP, A2A, AG-UI, A2UI with ADK
meteatamel
0
160
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
120
Featured
See All Featured
The Language of Interfaces
destraynor
162
26k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
A Tale of Four Properties
chriscoyier
163
24k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
How to make the Groovebox
asonas
2
2.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
260
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
For a Future-Friendly Web
brad_frost
183
10k
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