Cassandra on Kubernets- K8ssandra
by
CassandraCommunityJP
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Cassandra on Kubernetes k8ssandraの紹介
Slide 2
Slide 2 text
森下 雄貴 ソリューションアーキテクト / DataStax • Apache Cassandra™ コミッター • Google Cloud Professional Cloud Architect 2 @yukim https://zenn.dev/yukim
Slide 3
Slide 3 text
3 クラウドネイティブでスケーラブルなデータストア + 管理ツールと簡単なデータアクセス
Slide 4
Slide 4 text
+ =
Slide 5
Slide 5 text
k8ssandra.io
Slide 6
Slide 6 text
K8ssandraでセットアップされるコンポーネント 6 Helmでのパッケージング cass-operatorで管理されるクラウドネイティブDB Reaper Medusa メトリクス収集と可視化 外部からのアクセスを提供するKubernetes Ingress (必 要に応じて) REST, GraphQL, ドキュメントAPIでのデータアクセス データ同期とバックアップ/復元を担う管理ツール
Slide 7
Slide 7 text
K8ssandraコンポーネントの役割 7 Kubernetesクラスター データゲートウェイ NoSQL DB Web / モバイル アプリ ユーザー Ingress マイクロサービス オペレーター Reaper Medusa オブジェクトストア データ同期 バックアップと復元 デプロイ メトリクスUI メトリクスDB
Slide 8
Slide 8 text
k8ssandraの(基本的な)インストール 8 helm repo add k8ssandra https://helm.k8ssandra.io/stable helm repo update helm install demo k8ssandra/k8ssandra
Slide 9
Slide 9 text
ローカル環境 (開発用) クラウド環境 (本番) 9 ローカル環境およびクラウドへのインストール https://github.com/k8ssandra/k8ssandra-terraform
Slide 10
Slide 10 text
インストールガイド - docs.k8ssandra.io/install
Slide 11
Slide 11 text
Kubernetes上でのスケーラブルなデータ層 アプリケーション データ インフラ マイクロサービス データゲートウェイ NoSQLデータベース コンテナオーケストレーション クラウド Web / モバイル アプリ 11
Slide 12
Slide 12 text
Apache Cassandra™ - NoSQL分散データベース ● 2010年からApacheトップレベルプ ロジェクト ● 最新バージョン: 4.0 ● 分散データベース ● 柔軟なスケーラビリティ ● ハイパフォーマンス ● 高可用性/耐障害性 ● パーティション単位でレコードを保持
Slide 13
Slide 13 text
https://github.com/k8ssandra/cass-operator cass-operatorの機能: ● CassandraDatacenter カスタムリソース定義(CRD)の提供 ○ クラスタートポロジーの設定(DC/ラック) ○ cassandra.yamlやjvm-server.optionsの設定 ○ ローリングリスタート ● ノードのブートストラップ管理 ● シードノードの自動選定 ● クラスターのスケールアウト ● ノードの自動置き換え ● 初期スーパーユーザーの自動作成 ● ノードのヘルスチェック cass-operator: Cassandraクラスターのデプロイを簡単に! 13
Slide 14
Slide 14 text
AZをラックに割り当て
Slide 15
Slide 15 text
Cassandra Management API 15 Cassandra Management API Service CASSANDRA mgmt-api https://github.com/k8ssandra/management-api-for-apache-cassandra
Slide 16
Slide 16 text
モニタリング 16 https://github.com/datastax/metric-collector-for-apache-cassandra
Slide 17
Slide 17 text
K8ssandraとkube-prometheus-stack
Slide 18
Slide 18 text
デモ: 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
Slide 19
Slide 19 text
デモ: 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ファイルを編集し、<>を取得したIPアドレスで置き換え 4. k8ssandraのデプロイ > helm repo add k8ssandra https://helm.k8ssandra.io/stable > helm repo update > helm install demo k8ssandra/k8ssandra -f k8ssandra-setup.yaml
Slide 20
Slide 20 text
デモ: K8ssandraセットアップ 4. GrafanaダッシュボードとReaperをブラウザで確認 (ReaperはCassandraクラスターがデプロイされた後に起動します。) ● Grafana: http://grafana.<>.nip.io ● Reaper: http://reaper.<>.nip.io/webui/
Slide 21
Slide 21 text
デモ: 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
Slide 22
Slide 22 text
Apache Cassandra™ リニアスケーラビリティ― 22
Slide 23
Slide 23 text
デモ: クラスターの拡張 1. k8ssandraの設定ファイルを編集し、既存のデプロイをアップグレード 1. yamlファイルをダウンロード https://gist.github.com/yukim/85849e261048deea9335d3a427fcd99a#file-k8ssandra-expand-yaml 2. yamlファイルを編集し、<>を取得したIPアドレスで置き換え 3. k8ssandraの更新 > helm update demo k8ssandra/k8ssandra -f k8ssandra-expand.yaml 2. Grafanaダッシュボードとnodetoolでの確認
Slide 24
Slide 24 text
https://stargate.io
Slide 25
Slide 25 text
なぜStargateなのか カジュアルな開発者 ● 新しいクエリ言語を習得する必要が ある ● データがどのように保存されている か気にしない ● 開発のためにローカルにデータベー スをインストールする必要がある 25 SRE、オペレーター、DBAs ● DBに直接アクセスさせたくない ● アプリのためにポート0-65536を開 けなくてはならない... CIO、アーキテクト ● APIを作成するためにさらに開発者 を雇うべきか...
Slide 26
Slide 26 text
Stargate REST API ● 既存のCQLスキーマへRESTful にアクセス。スキーマの作成も 可能。 ● APIに慣れている開発者向け ● Swaggerを統合 クイックスタート: https://stargate.io/docs/stargate/1.0/quickstart/quick_start-rest.html
Slide 27
Slide 27 text
Stargate GraphQL API ● 既存のCQLスキーマをGraphQL で公開 ● どの項目を取得したいかを細か く制御可能 ● 複数のデータをジョインする機 能(フェデレーション)も開発中 ● GraphQL playgroundの提供 クイックスタート: https://stargate.io/docs/stargate/1.0/quickstart/quick_start-graphql.html
Slide 28
Slide 28 text
Stargate Document API ● スキーマレス! ● JSONドキュメントを直接書 き込み ● Cassandraのテーブルに フィールドごとに細かく格納 クイックスタート: https://stargate.io/docs/stargate/1.0/quickstart/quick_start-document.html
Slide 29
Slide 29 text
Stargate APIs APIの拡張 ストレージの 拡張 Cassandra 3.11 Cassandra 4.0 DataStax Enterprise 6.8 REST GraphQL Document API Cassandra Query Language (CQL) GRPC (incubating) 外部認証との 連携
Slide 30
Slide 30 text
デモ: 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
Slide 31
Slide 31 text
まとめ ● CassandraはスケーラブルなNoSQLデータベース ○ Kubernetesと組み合わせて、データベースもクラウドネイティブ ● K8ssandraはCassandra運用に必要な機能をパッケージ ○ クラスターのセットアップから自動化 ● 開発者がすぐに使えるデータアクセスAPI、Stargateも提供
Slide 32
Slide 32 text
宣伝 https://astra.datastax.com ● DataStaxが提供するサーバーレスのCassandraデータベース ○ 自前でCassandra運用したくない ○ 今あるCassandraを移行してTCOを下げたい ○ Stargate APIを利用して、サーバーレスで素早くアプリを開発したい ● メールアドレス、GitHubアカウント、Googleアカウントで無料サインアップ ● クレジットカード登録なしで毎月$25分(ストレージ40GB、3000万Readリクエスト、450万Writeリクエ スト相当) 使えます ● Apache Pulsarによるサーバーレスメッセージストリーミングもベータテスト中