ScalarDB Cluster の制作チェックリスト
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このチェックリストは、実稼働環境に ScalarDB Cluster をデプロイする際の推奨事項を提供します。
あなたが始める前に
このチェックリストでは、推奨される管理対象 Kubernetes クラスターに ScalarDB Cluster をデプロイしていることを前提としています。
実稼働チェックリスト: ScalarDB Cluster
以下は、運用環境で ScalarDB Cluster をセットアップする際の推奨事項のチェックリストです。
ポッドと Kubernetes ワーカーノードの数
Kubernetes クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための podAntiAffinity
のサンプル構成を参照できます。
ワーカーノードを異なるアベイラビリティゾーン (AZ) に配置すると、AZ の障害に耐えることができます。
ワーカーノードの仕様
商用ライセンスの観点から、ScalarDB Cluster を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。また、ScalarDB Cluster ポッド以外の一部のポッドがワーカーノード上に存在します。
つまり、次のコンポーネントは1つのワーカーノード上で実行できます。
- ScalarDB Cluster ポッド (2vCPU / 4GB)
- Envoy プロキシ (
indirect
クライアントモードを使用する場合、または Java 以外のプログラミング言語を使用する場合) - アプリケーションポッド (同じワーカーノード上でアプリケーションのポッドを実行することを選択した場合)
- 監視コンポーネント (
kube-prometheus-stack
などの監視コンポーネントをデプロイする場合) - Kubernetes コンポーネント
direct-kubernetes
モードを使用する場合は、Envoy ポッドをデプロイする必要はありません。
これを念頭に置いて、ポッドと Kubernetes ワーカーノードの数で説明されているように、少なくとも 4vCPU / 8GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。
ただし、実稼働環境では、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが最小限です。システムのワークロードに応じて、Kubernetes クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDB Cluster ポッド、アプリケーションのポッドなど) も考慮する必要があります。また、Horizontal Pod Autoscaling (HPA) などの機能を使用してポッドを自動的にスケーリングすることを計画している場合は、ワーカーノード上のポッドの最大数を考慮してワーカーノードのリソースを決定する必要があります。
通信網
ScalarDB Cluster はインターネットアクセス経由でユーザーに直接サービスを提供しないため、Kubernetes クラスターはプライベートネットワーク上に作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDB Cluster にアクセスすることをお勧めします。
監 視とログ記録
デプロイされたコンポーネントを監視し、そのログを収集する必要があります。詳細については、Kubernetes クラスター上の Scalar 製品の監視および `Kubernetes クラスター上の Scalar 製品からのログの収集](./K8sLogCollectionGuide.mdx)を参照してください。
バックアップと復元
バックエンドデータベースで自動バックアップ機能とポイントインタイムリカバリ (PITR) 機能を有効にする必要があります。詳細については、ScalarDB/ScalarDL 導入用のデータベースのセットアップを参照してください。
運用チェックリスト: ScalarDB Cluster にアクセスするクライアントアプリケーション
以下は、実稼働環境で ScalarDB Cluster にアクセスするクライアントアプリケーションをセットアップする際の推奨事項のチェックリストです。
クライアントモード (Java クライアントライブラリのみ)
アプリケーションに Java を使用する場合、公式の Java クライアントライブラリを使用できます。この場合、direct-kubernetes mode
または indirect mode
の2つのクライアントモードのいずれかを選択できます。
パフォーマンスの観点から、direct-kubernetes
モードの使用をお勧めします。direct-kubernetes
モードを使用するには、アプリケーションポッドを ScalarDB Cluster ポッドと同じ Kubernetes クラスターにデプロイする必要があります。この場合、Envoy ポッドをデプロイする必要はありません。
何らかの理由で Java アプリケーションポッドを ScalarDB Cluster ポッドと同じ Kubernetes クラスターにデプロイできない場合は、indirect
モードを使用する必要があります。この場合、Envoy ポッドをデプロイする必要があります 。
クライアントモード設定は Java クライアントライブラリ専用です。アプリケーションに Java 以外のプログラミング言語を使用する場合 (基本的に、gRPC API または gRPC SQL API をプログラミング言語から直接使用する場合)、そのような構成は存在しません。この場合、Envoy ポッドをデプロイする必要があります。
トランザクションマネージャーの構成 (Java クライアントライブラリのみ)
クライアントアプリケーションは、常に ScalarDB Cluster を通じてデータベースにアクセスする必要があります。リクエストが適切に実行されていることを確認するには、クライアントアプリケーションのプロパティファイルをチェックし、CRUD API の使用時に scalar.db.transaction_manager=cluster
が設定されていることを確認します。
実稼働環境に推奨
本番環境では推奨されません (テスト目的のみ)
SQL 接続構成 (Java クライアントライブラリのみ)
クライアントアプリケーションは、常に ScalarDB Cluster を通じてデータベースにアクセスする必要があります。リクエストが適切に実行されていることを確認するには、クライアントアプリケーションのプロパティファイルをチェックし、SQL API を使用するときに scalar.db.sql.connection_mode=cluster
が設定されていることを確認します。