Slide 1

Slide 1 text

Cassandra on Kubernetes k8ssandraを用いた運用のベストプラクティス Cloud Native Database Meetup #3

Slide 2

Slide 2 text

森下 雄貴 ソリューションアーキテクト / DataStax • Apache Cassandraコミッター @yukim https://zenn.dev/yukim

Slide 3

Slide 3 text

DataStax 製品・サービス コミュニティー 技術サポート パッケージ製品 クラウドサービス エンタープライズ オープンソース Better Time to market/value

Slide 4

Slide 4 text

● Apacheトップレベルプロジェクト(2010年~) ● 最新バージョン: 4.0.1 ● スケーラビリティ、ハイパフォーマンス、高可用性/耐障害性 Apache Cassandra - NoSQL分散データベース https://cassandra.apache.org/

Slide 5

Slide 5 text

Kubernetes - コンテナ管理基盤 https://kubernetes.io/ja/

Slide 6

Slide 6 text

+ =

Slide 7

Slide 7 text

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: …

Slide 8

Slide 8 text

Cassandra on Kubernetes ● Cassandraの運用はスケールアウトだけではない ○ 可用性を高めるために複数のアベイラビリティゾーン、データセンターに拡張したい ○ 障害からの復帰 ○ 定常的な運用コマンドの実行 ○ データ同期 ○ バックアップ …

Slide 9

Slide 9 text

クラウドネイティブでスケーラブルなデータストア + 管理ツールと簡単なデータアクセス

Slide 10

Slide 10 text

https://k8ssandra.io/

Slide 11

Slide 11 text

K8ssandraでセットアップされるコンポーネント Helmでのパッケージング cass-operatorで管理されるクラウドネイティブDB Reaper Medusa メトリクス収集と可視化 外部からのアクセスを提供するKubernetes Ingress (必 要に応じて) gRPC/REST/GraphQL/ドキュメントAPIでのデータアクセス データ同期とバックアップ/復元を担う管理ツール

Slide 12

Slide 12 text

K8ssandraコンポーネントの役割 Kubernetesクラスター データゲートウェイ NoSQL DB Web / モバイル アプリ ユーザー Ingress マイクロサービス オペレーター Reaper Medusa オブジェクトストア データ同期 バックアップと復元 デプロイ メトリクスUI メトリクスDB

Slide 13

Slide 13 text

k8ssandraの(基本的な)インストール helm repo add k8ssandra https://helm.k8ssandra.io/stable helm repo update helm install demo k8ssandra/k8ssandra

Slide 14

Slide 14 text

❯ 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

Slide 15

Slide 15 text

❯ 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

Slide 16

Slide 16 text

❯ 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

Slide 17

Slide 17 text

ローカル環境 (開発用) クラウド環境 (本番) ローカル環境およびクラウドへのインストール https://github.com/k8ssandra/k8ssandra-terraform

Slide 18

Slide 18 text

インストールガイド - docs.k8ssandra.io/install

Slide 19

Slide 19 text

Kubernetes上でのスケーラブルなデータ層 アプリケーション データ インフラ マイクロサービス データゲートウェイ NoSQLデータベース コンテナオーケストレーション クラウド Web / モバイル アプリ

Slide 20

Slide 20 text

K8ssandraでセットアップされるコンポーネント Helmでのパッケージング cass-operatorで管理されるクラウドネイティブDB Reaper Medusa メトリクス収集と可視化 外部からのアクセスを提供するKubernetes Ingress (必 要に応じて) gRPC/REST/GraphQL/ドキュメントAPIでのデータアクセス データ同期とバックアップ/復元を担う管理ツール

Slide 21

Slide 21 text

https://github.com/k8ssandra/cass-operator cass-operatorの機能: ● CassandraDatacenter カスタムリソース定義(CRD)の提供 ○ クラスタートポロジーの設定(DC/ラック) ○ cassandra.yamlやjvm-server.optionsの設定 ○ ローリングリスタート ● ノードのブートストラップ管理 ● シードノードの自動選定 ● クラスターのスケールアウト ● ノードの自動置き換え ● 初期スーパーユーザーの自動作成 ● ノードのヘルスチェック cass-operator: Cassandraクラスターのデプロイを簡単に!

Slide 22

Slide 22 text

Cassandra Management API Cassandra Management API Service CASSANDRA mgmt-api https://github.com/k8ssandra/management-api-for-apache-cassandra

Slide 23

Slide 23 text

AZをラックに割り当て

Slide 24

Slide 24 text

Prometheus/Grafanaによるモニタリング https://github.com/datastax/metric-collector-for-apache-cassandra MCAC (java agent) collectd OS 起動

Slide 25

Slide 25 text

Stargate - https://stargate.io https://stargate.io/docs/stargate/1.0/concepts/concepts.html

Slide 26

Slide 26 text

Stargate APIs APIの拡張 ストレージの 拡張 Cassandra 3.11 Cassandra 4.0 DataStax Enterprise 6.8 REST GraphQL Document API Cassandra Query Language (CQL) GRPC 外部認証との 連携

Slide 27

Slide 27 text

Try Stargate on DataStax Astra! https://astra.datastax.com サーバーレスのApache Cassandraデータベース ● Stargate経由でのアクセスなので、CQLのほ か、各種APIを利用可能 ● 無料サインアップで毎月$25までのクレジット分 を利用可能

Slide 28

Slide 28 text

データ同期とバックアップ/復元 データの同期 ● cassandra-reaper ● nodetool repair の スケジューリング

Slide 29

Slide 29 text

データ同期とバックアップ/復元 バックアップと復元 ● 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 ...

Slide 30

Slide 30 text

k8ssandraの次期バージョン - k8ssandra-operator ● Helmだけでは機能追加が複雑化 ○ 複雑な構成(マルチデータセンター対応な ど)をもっと簡単に実現したい ● k8ssandra-operatorの開発 https://github.com/k8ssandra/k8ssandra-o perator ○ 複雑な機能をプログラミング言語を用いて 実現できる ○ 複数オペレーターの統合 ■ Stargate、Reaper、Medusaなどの CRDを提供

Slide 31

Slide 31 text

まとめ ● CassandraはスケーラブルなNoSQLデータベース ○ Kubernetes上でデータベース層もスケーラブルに ● K8ssandraはCassandra運用に必要な機能をパッケージ ○ クラスターのセットアップから運用までをカバーするコンポーネントのセットアップ ○ クラスターの拡張、データ同期、バックアップなど運用を自動化 ● 開発者がすぐに使えるデータアクセスAPI、Stargateも提供 ● 次期バージョンはより複雑な構成を簡単にできるよう開発がすすめられている

Slide 32

Slide 32 text

Thank you!