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
Cassandra on Kubernetes
Search
Yuki Morishita
January 14, 2022
Technology
2
140
Cassandra on Kubernetes
Cloud Native Database Meetup #3 での発表資料です。
https://cndata.connpass.com/event/231621/
#cloudnativedb
Yuki Morishita
January 14, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
よくわからんサービスについての問い合わせが来たときの強い味方 Amazon Q について
kazzpapa3
0
220
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
1
570
Product Engineer Night #6プロダクトエンジニアを育む仕組み・施策
hacomono
PRO
1
470
Fargateを使った研修の話
takesection
0
120
[JAWS-UG金沢支部×コンテナ支部合同企画]コンテナとは何か
furuton
3
260
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.6k
物価高なラスベガスでの過ごし方
zakky
0
380
10分でわかるfreee エンジニア向け会社説明資料
freee
18
520k
AIを駆使したゲーム開発戦略: 新設AI組織の取り組み / sge-ai-strategy
cyberagentdevelopers
PRO
1
130
「 SharePoint 難しい」ってよく聞くけど、そんなに言うなら8歳の息子に試してもらった
taichinakamura
1
630
「最高のチューニング」をしないために / hack@delta 24.10
fujiwara3
21
3.5k
Autify Company Deck
autifyhq
1
39k
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
RailsConf 2023
tenderlove
29
880
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Designing for Performance
lara
604
68k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.6k
GraphQLとの向き合い方2022年版
quramy
43
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
Happy Clients
brianwarren
97
6.7k
Transcript
Cassandra on Kubernetes k8ssandraを用いた運用のベストプラクティス Cloud Native Database Meetup #3
森下 雄貴 ソリューションアーキテクト / DataStax • Apache Cassandraコミッター @yukim https://zenn.dev/yukim
DataStax 製品・サービス コミュニティー 技術サポート パッケージ製品 クラウドサービス エンタープライズ オープンソース Better Time
to market/value
• Apacheトップレベルプロジェクト(2010年~) • 最新バージョン: 4.0.1 • スケーラビリティ、ハイパフォーマンス、高可用性/耐障害性 Apache Cassandra -
NoSQL分散データベース https://cassandra.apache.org/
Kubernetes - コンテナ管理基盤 https://kubernetes.io/ja/
+ =
Cassandra on Kubernetes - StatefulSet • StatefulSetの利用 ◦ 公式ウェブサイトにチュートリアルがある ◦
https://kubernetes.io/docs/tutorials/state ful-application/cassandra/ • スケールアウトもできる ◦ replicas: 3 -> 4 apiVersion: apps/v1 kind: StatefulSet metadata: name: cassandra labels: app: cassandra spec: serviceName: cassandra replicas: 3 selector: matchLabels: app: cassandra template: metadata: labels: app: cassandra spec: …
Cassandra on Kubernetes • Cassandraの運用はスケールアウトだけではない ◦ 可用性を高めるために複数のアベイラビリティゾーン、データセンターに拡張したい ◦ 障害からの復帰 ◦
定常的な運用コマンドの実行 ◦ データ同期 ◦ バックアップ …
クラウドネイティブでスケーラブルなデータストア + 管理ツールと簡単なデータアクセス
https://k8ssandra.io/
K8ssandraでセットアップされるコンポーネント Helmでのパッケージング cass-operatorで管理されるクラウドネイティブDB Reaper Medusa メトリクス収集と可視化 外部からのアクセスを提供するKubernetes Ingress (必 要に応じて)
gRPC/REST/GraphQL/ドキュメントAPIでのデータアクセス データ同期とバックアップ/復元を担う管理ツール
K8ssandraコンポーネントの役割 Kubernetesクラスター データゲートウェイ NoSQL DB Web / モバイル アプリ ユーザー
Ingress マイクロサービス オペレーター Reaper Medusa オブジェクトストア データ同期 バックアップと復元 デプロイ メトリクスUI メトリクスDB
k8ssandraの(基本的な)インストール helm repo add k8ssandra https://helm.k8ssandra.io/stable helm repo update helm
install demo k8ssandra/k8ssandra
❯ kubectl get pods NAME READY STATUS RESTARTS AGE demo-cass-operator-5697bd5ff9-92x42
1/1 Running 0 91s demo-crd-upgrader-job-k8ssandra-jkvlq 0/1 Completed 0 60m demo-dc1-default-sts-0 2/2 Running 0 79s demo-dc1-stargate-864475cbfd-kb9rv 1/1 Running 3 91s demo-grafana-6d58c8578-wmcns 2/2 Running 0 91s demo-kube-prometheus-stack-operator-8574b9dbc4-79sjd 1/1 Running 0 91s demo-reaper-operator-85bbdd8974-8bcfm 1/1 Running 0 91s prometheus-demo-kube-prometheus-stack-prometheus-0 2/2 Running 1 84s
❯ kubectl get pods NAME READY STATUS RESTARTS AGE demo-cass-operator-5697bd5ff9-92x42
1/1 Running 0 91s demo-crd-upgrader-job-k8ssandra-jkvlq 0/1 Completed 0 60m demo-dc1-default-sts-0 2/2 Running 0 79s demo-dc1-stargate-864475cbfd-kb9rv 1/1 Running 3 91s demo-grafana-6d58c8578-wmcns 2/2 Running 0 91s demo-kube-prometheus-stack-operator-8574b9dbc4-79sjd 1/1 Running 0 91s demo-reaper-operator-85bbdd8974-8bcfm 1/1 Running 0 91s prometheus-demo-kube-prometheus-stack-prometheus-0 2/2 Running 1 84s
❯ helm upgrade demo k8ssandra/k8ssandra --reuse-values --set \ cassandra.datacenters\[0\].size=3,cassandra.datacenters\[0\].name=dc1 ...
❯ kubectl get pods NAME READY STATUS RESTARTS AGE demo-cass-operator-5697bd5ff9-92x42 1/1 Running 0 12h demo-crd-upgrader-job-k8ssandra-hbxph 0/1 Completed 0 4h demo-dc1-default-sts-0 2/2 Running 0 12h demo-dc1-default-sts-1 2/2 Running 0 4h demo-dc1-default-sts-2 2/2 Running 0 4h demo-dc1-stargate-864475cbfd-kb9rv 1/1 Running 3 12h demo-grafana-6d58c8578-wmcns 2/2 Running 0 12h demo-kube-prometheus-stack-operator-8574b9dbc4-79sjd 1/1 Running 0 12h demo-reaper-operator-85bbdd8974-8bcfm 1/1 Running 0 12h prometheus-demo-kube-prometheus-stack-prometheus-0 2/2 Running 1 12h
ローカル環境 (開発用) クラウド環境 (本番) ローカル環境およびクラウドへのインストール https://github.com/k8ssandra/k8ssandra-terraform
インストールガイド - docs.k8ssandra.io/install
Kubernetes上でのスケーラブルなデータ層 アプリケーション データ インフラ マイクロサービス データゲートウェイ NoSQLデータベース コンテナオーケストレーション クラウド Web
/ モバイル アプリ
K8ssandraでセットアップされるコンポーネント Helmでのパッケージング cass-operatorで管理されるクラウドネイティブDB Reaper Medusa メトリクス収集と可視化 外部からのアクセスを提供するKubernetes Ingress (必 要に応じて)
gRPC/REST/GraphQL/ドキュメントAPIでのデータアクセス データ同期とバックアップ/復元を担う管理ツール
https://github.com/k8ssandra/cass-operator cass-operatorの機能: • CassandraDatacenter カスタムリソース定義(CRD)の提供 ◦ クラスタートポロジーの設定(DC/ラック) ◦ cassandra.yamlやjvm-server.optionsの設定 ◦
ローリングリスタート • ノードのブートストラップ管理 • シードノードの自動選定 • クラスターのスケールアウト • ノードの自動置き換え • 初期スーパーユーザーの自動作成 • ノードのヘルスチェック cass-operator: Cassandraクラスターのデプロイを簡単に!
Cassandra Management API Cassandra Management API Service CASSANDRA mgmt-api https://github.com/k8ssandra/management-api-for-apache-cassandra
AZをラックに割り当て
Prometheus/Grafanaによるモニタリング https://github.com/datastax/metric-collector-for-apache-cassandra MCAC (java agent) collectd OS 起動
Stargate - https://stargate.io https://stargate.io/docs/stargate/1.0/concepts/concepts.html
Stargate APIs APIの拡張 ストレージの 拡張 Cassandra 3.11 Cassandra 4.0 DataStax
Enterprise 6.8 REST GraphQL Document API Cassandra Query Language (CQL) GRPC 外部認証との 連携
Try Stargate on DataStax Astra! https://astra.datastax.com サーバーレスのApache Cassandraデータベース • Stargate経由でのアクセスなので、CQLのほ
か、各種APIを利用可能 • 無料サインアップで毎月$25までのクレジット分 を利用可能
データ同期とバックアップ/復元 データの同期 • cassandra-reaper • nodetool repair の スケジューリング
データ同期とバックアップ/復元 バックアップと復元 • Medusa for Apache Cassandra • Google Cloud
Storage や Amazon S3、S3互換のストレージへCassandraのデータファイルを バックアップ • k8ssandraからは、medusa-operatorが提供するバックアップおよび復元用のカスタムリソースを利 用してバックアップ、復元を行う。 • helm install my-backup k8ssandra/backup … • helm install my-restore k8ssandra/restore --set backup.name=backup1 ...
k8ssandraの次期バージョン - k8ssandra-operator • Helmだけでは機能追加が複雑化 ◦ 複雑な構成(マルチデータセンター対応な ど)をもっと簡単に実現したい • k8ssandra-operatorの開発
https://github.com/k8ssandra/k8ssandra-o perator ◦ 複雑な機能をプログラミング言語を用いて 実現できる ◦ 複数オペレーターの統合 ▪ Stargate、Reaper、Medusaなどの CRDを提供
まとめ • CassandraはスケーラブルなNoSQLデータベース ◦ Kubernetes上でデータベース層もスケーラブルに • K8ssandraはCassandra運用に必要な機能をパッケージ ◦ クラスターのセットアップから運用までをカバーするコンポーネントのセットアップ ◦
クラスターの拡張、データ同期、バックアップなど運用を自動化 • 開発者がすぐに使えるデータアクセスAPI、Stargateも提供 • 次期バージョンはより複雑な構成を簡単にできるよう開発がすすめられている
Thank you!