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
300
運用中システムにおける6億レコードのデータ移行に関する課題と解決
cassandracommunityjp
0
300
Cassandraの活用とその事例
cassandracommunityjp
0
450
Microsoft Azureを基盤としたライフサイエンス業界事例でのCassandra / DataStax Enterpriseの活用
cassandracommunityjp
0
200
Microsoft Azure で実現する Cassandra とその活用事例
cassandracommunityjp
0
320
Troubleshooting Apache Cassandra
cassandracommunityjp
0
310
Cassandra Summit Tokyo 2017 Keynote
cassandracommunityjp
0
380
Aaron Morton
cassandracommunityjp
0
64
Other Decks in Technology
See All in Technology
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
650
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.2k
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
390
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
130
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
130
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Scaling GitHub
holman
458
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
What's in a price? How to price your products and services
michaelherold
243
12k
A designer walks into a library…
pauljervisheath
204
24k
Music & Morning Musume
bryan
46
6.2k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Agile that works and the tools we love
rasmusluckow
327
21k
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によるサーバーレスメッセージストリーミングもベータテスト中