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
540
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
200
Transaction Management on Cassandra
cassandracommunityjp
0
310
運用中システムにおける6億レコードのデータ移行に関する課題と解決
cassandracommunityjp
0
310
Cassandraの活用とその事例
cassandracommunityjp
0
460
Microsoft Azureを基盤としたライフサイエンス業界事例でのCassandra / DataStax Enterpriseの活用
cassandracommunityjp
0
200
Microsoft Azure で実現する Cassandra とその活用事例
cassandracommunityjp
0
340
Troubleshooting Apache Cassandra
cassandracommunityjp
0
320
Cassandra Summit Tokyo 2017 Keynote
cassandracommunityjp
0
390
Aaron Morton
cassandracommunityjp
0
65
Other Decks in Technology
See All in Technology
Yahoo! ズバトクにおけるフロントエンド開発
lycorptech_jp
PRO
0
110
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
190
生成AIのガバナンスの全体像と現実解
fnifni
1
230
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
590
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
310
UI State設計とテスト方針
rmakiyama
4
860
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
310
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
520
事業貢献を考えるための技術改善の目標設計と改善実績 / Targeted design of technical improvements to consider business contribution and improvement performance
oomatomo
0
170
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
39
17k
1等無人航空機操縦士一発試験 合格までの道のり ドローンミートアップ@大阪 2024/12/18
excdinc
0
190
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
120
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Unsuck your backbone
ammeep
669
57k
The Cost Of JavaScript in 2023
addyosmani
46
7k
Side Projects
sachag
452
42k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
4 Signs Your Business is Dying
shpigford
182
21k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
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によるサーバーレスメッセージストリーミングもベータテスト中