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 Kubernets- K8ssandra
Search
CassandraCommunityJP
July 27, 2021
Technology
0
610
Cassandra on Kubernets- K8ssandra
Cassandra Meetup in Tokyo, Summer 2021
・K8ssandra
クラウドネイティブでスケーラブルなデータストア +管理ツールと簡単なデータアクセス
CassandraCommunityJP
July 27, 2021
Tweet
Share
More Decks by CassandraCommunityJP
See All by CassandraCommunityJP
Azure Managed Instance for Apache Cassandra
cassandracommunityjp
0
230
Transaction Management on Cassandra
cassandracommunityjp
0
340
運用中システムにおける6億レコードのデータ移行に関する課題と解決
cassandracommunityjp
0
350
Cassandraの活用とその事例
cassandracommunityjp
0
530
Microsoft Azureを基盤としたライフサイエンス業界事例でのCassandra / DataStax Enterpriseの活用
cassandracommunityjp
0
220
Microsoft Azure で実現する Cassandra とその活用事例
cassandracommunityjp
0
380
Troubleshooting Apache Cassandra
cassandracommunityjp
0
350
Cassandra Summit Tokyo 2017 Keynote
cassandracommunityjp
0
450
Aaron Morton
cassandracommunityjp
0
68
Other Decks in Technology
See All in Technology
新規事業におけるGORM+SQLx併用アーキテクチャ
hacomono
PRO
0
330
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
230
能登半島地震において デジタルができたこと・できなかったこと
ditccsugii
0
250
セキュアな認可付きリモートMCPサーバーをAWSマネージドサービスでつくろう! / Let's build an OAuth protected remote MCP server based on AWS managed services
kaminashi
3
350
Introduction to Bill One Development Engineer
sansan33
PRO
0
300
Performance Insights 廃止から Database Insights 利用へ/transition-from-performance-insights-to-database-insights
emiki
0
310
そのWAFのブロック、どう活かす? サービスを守るための実践的多層防御と思考法 / WAF blocks defense decision
kaminashi
0
200
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
610
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
470
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
AI時代こそ求められる設計力- AWSクラウドデザインパターン3選で信頼性と拡張性を高める-
kenichirokimura
3
350
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
For a Future-Friendly Web
brad_frost
180
10k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Bash Introduction
62gerente
615
210k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
Being A Developer After 40
akosma
91
590k
GitHub's CSS Performance
jonrohan
1032
470k
Mobile First: as difficult as doing things right
swwweet
225
10k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Transcript
Cassandra on Kubernetes k8ssandraの紹介
森下 雄貴 ソリューションアーキテクト / DataStax • Apache Cassandra™ コミッター •
Google Cloud Professional Cloud Architect 2 @yukim https://zenn.dev/yukim
3 クラウドネイティブでスケーラブルなデータストア + 管理ツールと簡単なデータアクセス
+ =
k8ssandra.io
K8ssandraでセットアップされるコンポーネント 6 Helmでのパッケージング cass-operatorで管理されるクラウドネイティブDB Reaper Medusa メトリクス収集と可視化 外部からのアクセスを提供するKubernetes Ingress (必
要に応じて) REST, GraphQL, ドキュメントAPIでのデータアクセス データ同期とバックアップ/復元を担う管理ツール
K8ssandraコンポーネントの役割 7 Kubernetesクラスター データゲートウェイ NoSQL DB Web / モバイル アプリ
ユーザー Ingress マイクロサービス オペレーター Reaper Medusa オブジェクトストア データ同期 バックアップと復元 デプロイ メトリクスUI メトリクスDB
k8ssandraの(基本的な)インストール 8 helm repo add k8ssandra https://helm.k8ssandra.io/stable helm repo update
helm install demo k8ssandra/k8ssandra
ローカル環境 (開発用) クラウド環境 (本番) 9 ローカル環境およびクラウドへのインストール https://github.com/k8ssandra/k8ssandra-terraform
インストールガイド - docs.k8ssandra.io/install
Kubernetes上でのスケーラブルなデータ層 アプリケーション データ インフラ マイクロサービス データゲートウェイ NoSQLデータベース コンテナオーケストレーション クラウド Web
/ モバイル アプリ 11
Apache Cassandra™ - NoSQL分散データベース • 2010年からApacheトップレベルプ ロジェクト • 最新バージョン: 4.0
• 分散データベース • 柔軟なスケーラビリティ • ハイパフォーマンス • 高可用性/耐障害性 • パーティション単位でレコードを保持
https://github.com/k8ssandra/cass-operator cass-operatorの機能: • CassandraDatacenter カスタムリソース定義(CRD)の提供 ◦ クラスタートポロジーの設定(DC/ラック) ◦ cassandra.yamlやjvm-server.optionsの設定 ◦
ローリングリスタート • ノードのブートストラップ管理 • シードノードの自動選定 • クラスターのスケールアウト • ノードの自動置き換え • 初期スーパーユーザーの自動作成 • ノードのヘルスチェック cass-operator: Cassandraクラスターのデプロイを簡単に! 13
AZをラックに割り当て
Cassandra Management API 15 Cassandra Management API Service CASSANDRA mgmt-api
https://github.com/k8ssandra/management-api-for-apache-cassandra
モニタリング 16 https://github.com/datastax/metric-collector-for-apache-cassandra
K8ssandraとkube-prometheus-stack
デモ: K8ssandraセットアップ 1. GKEの3ノードのリージョンクラスターをus-west1に作成(事前に準備済み) > gcloud container clusters create k8ssandra-demo
--region us-west1 --machine-type "e2-standard-8" --num-nodes 1 > gcloud container clusters get-credentials k8ssandra-demo --region us-west1 2. Traefikのインストール > helm repo add traefik https://helm.traefik.io/traefik > helm repo update > helm install traefik traefik/traefik
デモ: K8ssandraセットアップ 3. k8ssandraの設定ファイルを作成し、デプロイ 1. yamlファイルをダウンロード https://gist.github.com/yukim/85849e261048deea9335d3a427fcd99a#file-k8ssandra-setup-yaml 2. TraefikのExternal IPを取得
kubectl get svc/traefik --template "{{(index .status.loadBalancer.ingress 0).ip}}" 3. yamlファイルを編集し、<<external_ip_address>>を取得したIPアドレスで置き換え 4. k8ssandraのデプロイ > helm repo add k8ssandra https://helm.k8ssandra.io/stable > helm repo update > helm install demo k8ssandra/k8ssandra -f k8ssandra-setup.yaml
デモ: K8ssandraセットアップ 4. GrafanaダッシュボードとReaperをブラウザで確認 (ReaperはCassandraクラスターがデプロイされた後に起動します。) • Grafana: http://grafana.<<external_ip_address>>.nip.io • Reaper:
http://reaper.<<external_ip_address>>.nip.io/webui/
デモ: K8ssandraセットアップ 5. CQLSHとnodetoolの利用 1. CQLスーパーユーザーとJMXユーザーの認証情報を取得 $username = $(kubectl get
secret demo-superuser --template "{{.data.username}}" | base64 -d) $password = $(kubectl get secret demo-superuser --template "{{.data.password}}" | base64 -d) $jmxuser = $(kubectl get secret demo-reaper-jmx --template "{{.data.username}}" | base64 -d) $jmxpass = $(kubectl get secret demo-reaper-jmx --template "{{.data.password}}" | base64 -d) 2. CQLSH実行 kubectl exec -it demo-dc1-us-west1-a-sts-0 -c cassandra -- cqlsh -u $username -p $password 3. nodetool実行 kubectl exec -it demo-dc1-us-west1-a-sts-0 -c cassandra -- nodetool -u $jmxuser -pw $jmxpass status
Apache Cassandra™ リニアスケーラビリティ― 22
デモ: クラスターの拡張 1. k8ssandraの設定ファイルを編集し、既存のデプロイをアップグレード 1. yamlファイルをダウンロード https://gist.github.com/yukim/85849e261048deea9335d3a427fcd99a#file-k8ssandra-expand-yaml 2. yamlファイルを編集し、<<external_ip_address>>を取得したIPアドレスで置き換え 3.
k8ssandraの更新 > helm update demo k8ssandra/k8ssandra -f k8ssandra-expand.yaml 2. Grafanaダッシュボードとnodetoolでの確認
https://stargate.io
なぜStargateなのか カジュアルな開発者 • 新しいクエリ言語を習得する必要が ある • データがどのように保存されている か気にしない • 開発のためにローカルにデータベー
スをインストールする必要がある 25 SRE、オペレーター、DBAs • DBに直接アクセスさせたくない • アプリのためにポート0-65536を開 けなくてはならない... CIO、アーキテクト • APIを作成するためにさらに開発者 を雇うべきか...
Stargate REST API • 既存のCQLスキーマへRESTful にアクセス。スキーマの作成も 可能。 • APIに慣れている開発者向け •
Swaggerを統合 クイックスタート: https://stargate.io/docs/stargate/1.0/quickstart/quick_start-rest.html
Stargate GraphQL API • 既存のCQLスキーマをGraphQL で公開 • どの項目を取得したいかを細か く制御可能 •
複数のデータをジョインする機 能(フェデレーション)も開発中 • GraphQL playgroundの提供 クイックスタート: https://stargate.io/docs/stargate/1.0/quickstart/quick_start-graphql.html
Stargate Document API • スキーマレス! • JSONドキュメントを直接書 き込み • Cassandraのテーブルに
フィールドごとに細かく格納 クイックスタート: https://stargate.io/docs/stargate/1.0/quickstart/quick_start-document.html
Stargate APIs APIの拡張 ストレージの 拡張 Cassandra 3.11 Cassandra 4.0 DataStax
Enterprise 6.8 REST GraphQL Document API Cassandra Query Language (CQL) GRPC (incubating) 外部認証との 連携
デモ: Stargate Document API 1. Swagger UIの確認 kubectl port-forward svc/demo-dc1-stargate-service
8082:8082 ブラウザでアクセス: http://localhost:8082/swager-ui 2. 認証APIを利用して認証トークンを取得 https://stargate.io/docs/stargate/1.0/quickstart/quick_start-document.html#_generate_an_auth_token 3. JSONドキュメントを格納する名前空間を作成 https://stargate.io/docs/stargate/1.0/quickstart/quick_start-document.html#_creating_a_namespace 4. JSONドキュメントの格納と取得 https://stargate.io/docs/stargate/1.0/quickstart/quick_start-document.html#_writing_documents
まとめ • CassandraはスケーラブルなNoSQLデータベース ◦ Kubernetesと組み合わせて、データベースもクラウドネイティブ • K8ssandraはCassandra運用に必要な機能をパッケージ ◦ クラスターのセットアップから自動化 •
開発者がすぐに使えるデータアクセスAPI、Stargateも提供
宣伝 https://astra.datastax.com • DataStaxが提供するサーバーレスのCassandraデータベース ◦ 自前でCassandra運用したくない ◦ 今あるCassandraを移行してTCOを下げたい ◦ Stargate
APIを利用して、サーバーレスで素早くアプリを開発したい • メールアドレス、GitHubアカウント、Googleアカウントで無料サインアップ • クレジットカード登録なしで毎月$25分(ストレージ40GB、3000万Readリクエスト、450万Writeリクエ スト相当) 使えます • Apache Pulsarによるサーバーレスメッセージストリーミングもベータテスト中