Azure Managed Instance for Apache Cassandra は、純粋なオープンソースの Apache Cassandra クラスター用のフル マネージド サービスです。 また、このサービスを使用すると、各ワークロードの特定のニーズに応じて構成をオーバーライドして、柔軟性と制御を最大限に高めることができます。
このクイックスタートでは、Azure portal を使用して、Azure Managed Instance for Apache Cassandra クラスターを作成する方法について説明します。
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
マネージド インスタンス クラスターを作成する
Azure portal にサインインします。
検索バーで、 Managed Instance for Apache Cassandra を検索し、結果を選択します。
[Create Managed Instance for Apache Cassandra cluster]\(Apache Cassandra クラスターのマネージド インスタンスの作成\) を選択します。
[ Create Managed Instance for Apache Cassandra]\(Apache Cassandra のマネージド インスタンスの作成 \) ウィンドウで、次の情報を入力します。
サブスクリプション: ドロップダウン リストから、Azure サブスクリプションを選択します。
リソース グループ: 新しいリソース グループを作成するか、既存のリソース グループを使用するかを指定します。 リソース グループは、Azure ソリューションの関連するリソースを保持するコンテナーです。
クラスター名: クラスターの名前を入力します。
場所: クラスターをデプロイする場所を選択します。
Cassandra のバージョン: デプロイする Apache Cassandra のバージョンを選択します。
拡張機能: 追加する拡張機能 ( Cassandra Lucene Index など) を選択します。
初期 Cassandra 管理者パスワード: クラスターの作成に使用するパスワードを入力します。
Cassandra 管理者パスワードの確認: パスワードを再入力します。
仮想ネットワーク: 既存の仮想ネットワークとサブネットを選択するか、新しく作成します。
ロールの割り当て: 仮想ネットワークには、マネージド Cassandra クラスターのデプロイを許可するための特別なアクセス許可が必要です。 新しい仮想ネットワークを作成する場合、またはアクセス許可を適用せずに既存の仮想ネットワークを使用する場合は、このボックスをオンのままにします。 以前に Azure SQL Managed Instance Cassandra クラスターをデプロイした仮想ネットワークを使用する場合は、このオプションをオフにします。
仮想プライベート ネットワークを使用する場合は、別の接続を開く必要はありません。
Azure Managed Instance for Apache Cassandra のデプロイには、インターネット アクセスが必要です。 インターネットへのアクセスが制限されている環境では、デプロイは失敗します。 マネージド Cassandra が正常に動作するために必要な次の重要な Azure サービスへの仮想ネットワーク内のアクセスをブロックしていないことを確認します。 詳細については、「 必要な送信ネットワーク規則」を参照してください。
Azure Storage
Azure Key Vault
Azure 仮想マシンのスケールセット
Azure Monitor
Microsoft Entra ID
Microsoft Defender for Cloud
自動レプリケート: 使用する自動複製の形式を選択します。 詳細については、「 ターンキー レプリケーション」を参照してください。
スケジュール イベント戦略: クラスターがスケジュールされたイベントに使用する戦略。
ヒント
StopANY
は、ノードのスケジュールされたイベントがある場合にノードを停止します。StopByRack
は、特定のスケジュールされたイベントの特定のラック内のノードのみを停止します。 たとえば、異なるラック内のノードに対して複数のイベントが同時にスケジュールされている場合、1 つのラック内のノードのみが停止します。 他のラック内の他のノードは遅延します。
[ データ センター ] タブを選択します。
次の情報を入力してください。
データ センター名: テキスト フィールドにデータセンター名を入力します。
可用性ゾーン: 可用性ゾーンを有効にする場合は、このチェック ボックスをオンにします。
SKU サイズ: 使用可能な仮想マシン (VM) 製品レベルのサイズから選択します。
LシリーズのVM製品ティアを使用して、ライトスルーキャッシュ(パブリックプレビュー)を導入しました。 この実装は、末尾の待機時間を最小限に抑え、特に読み取り集中型ワークロードの読み取りパフォーマンスを向上することを目的としています。 これらの特定の製品レベルには、ローカルに接続されたディスクが装備されています。これにより、読み取り操作の IOPS が向上し、テール待機時間が短縮されます。
ライトスルー キャッシュは、サービスレベル契約 (SLA) なしで提供されます。 運用環境のワークロード用にはお勧めしません。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
可用性ゾーンは、すべてのリージョンでサポートされているわけではありません。 可用性ゾーンがサポートされていないリージョンを選択すると、デプロイは失敗します。 詳細については、 Azure リージョンの一覧を参照してください。
可用性ゾーンが正常にデプロイされた場合、特定のリージョン内のすべてのゾーンでコンピューティング リソースが利用できるかどうかも影響を受けます。 選択した製品レベル (容量) がすべてのゾーンで使用できない場合、デプロイが失敗する可能性があります。
[確認と作成>作成] を選択します。
クラスターの作成には最大 15 分かかる場合があります。
デプロイが完了したら、リソース グループを確認して、新しく作成されたマネージド インスタンス クラスターを確認します。
クラスター ノードを参照するには、クラスター リソースに移動し、[ データ センター ] ウィンドウを開きます。
データセンターのスケーリング
1 つのデータセンターでクラスターをデプロイした後は、水平方向または垂直方向にスケーリングできます。 データセンターを強調表示し、[ スケール] を選択します。
水平スケール
ノードをスケールアウトまたはスケールインするには、スライダーを目的の数値に移動します。 値を編集することもできます。 完了したら、[ スケール] を選択します。
垂直スケール
ノードの製品レベルのサイズをスケールアップまたはスケールダウンするには、 SKU サイズ ドロップダウン リストからオプションを選択します。 完了したら、[ スケール] を選択します。
スケーリング操作にかかる時間は、さまざまな要因によって異なります。 操作には数分かかる場合があります。 スケール操作が完了したことを Azure から通知された場合、すべてのノードが Cassandra リングに参加したわけではありません。 ノードはすべて 正常 状態を示し、データセンターの状態が [成功] と表示されると、ノードは完全に委託されます。
スケーリングはオンライン操作であり、修正プログラムの適用について説明したのと同じ方法で動作します。 詳細については、「 修正プログラムの適用」を参照してください。
データセンターの追加
別のデータセンターを追加するには、[ データ センター ] ウィンドウで [ 追加] を選択します。
別のリージョンにデータセンターを追加する場合は、別の仮想ネットワークを選択する必要があります。 この仮想ネットワークが、以前に作成されたプライマリ リージョンの仮想ネットワークに接続されていることを確認します。 また、データセンターをホストする他の仮想ネットワークがマネージド インスタンス クラスター内にあることを確認します。 詳細については、「 仮想ネットワークピアリングを使用して仮想ネットワークを接続する」を参照してください。
マネージド インスタンス クラスターのデプロイを試みる前に、仮想ネットワークに適切なロールを適用したことを確認します。 次の Azure CLI コマンドを使用します。
az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>
適切なフィールドに記入してください。
データセンター名: ドロップダウン リストから Azure サブスクリプションを選択します。
可用性ゾーン: このデータセンターで可用性ゾーンを有効にする場合に選択します。
場所: データセンターがデプロイされている場所。
SKU サイズ: 使用可能な VM 製品レベルのサイズから選択します。
いいえ 数: 各 Cassandra ノードに接続する p30 ディスクの数を選択します。
いいえ 数: このデータセンターにデプロイする Cassandra ノードの数を選択します。
仮想ネットワーク: 既存の仮想ネットワークとサブネットを選択します。
Azure portal では、データセンターを追加するときに新しい仮想ネットワークを作成することはできません。 既存の仮想ネットワークを選択する必要があり、データセンターがデプロイされているターゲット サブネット間に接続があることを確認する必要があります。 前に説明したように、デプロイを許可するために、仮想ネットワークに適切なロールを適用する必要もあります。
データセンターがデプロイされると、[ データ センター ] ウィンドウですべてのデータセンター情報を表示できるようになります。
データセンター間のレプリケーションを確保するには、 Cassandra Query Language Shell (CQLSH) に接続し、次の CQL クエリを使用して、クラスター全体のすべてのデータセンターを含むように各キースペースのレプリケーション戦略を更新します。 システム テーブルは自動的に更新されます。
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc': 3, 'dc2': 3};
データが既に存在するクラスターにデータセンターを追加する場合は、
rebuild
実行して履歴データをレプリケートします。 Azure CLI で次のコマンドを使用し、新しいデータセンターの各ノードでnodetool rebuild
を実行します。 このアクションは、<new dc ip address>
をノードの IP アドレスに置き換え、<olddc>
を既存のデータセンターの名前に置き換えます。az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <new dc ip address> \ --command-name nodetool --arguments rebuild="" "<olddc>"=""
キースペース レプリケーションの変更を適用するまで、アプリケーション クライアントが新しいデータセンターに書き込むのを許可しないでください。 それ以外の場合、リビルドは機能せず、チームがrepair
を実行できるようにサポート リクエストを作成する必要があります。
Cassandra の構成を更新する
Azure portal または CLI コマンド を使用して、データセンター上の Cassandra YAML 構成を更新できます。 ポータルで設定を更新するには:
[ 設定] で、[ Cassandra の構成] を選択します。 構成を変更するデータセンターを強調表示し、[ 更新] を選択します。
開いたウィンドウで、次に示すように、YAML 形式でフィールド名を入力します。 次に、[更新] を選択します。
更新が完了すると、オーバーライドされた値が Cassandra の [構成 ] ウィンドウに表示されます。
オーバーライドされた Cassandra 構成値のみが Azure portal に表示されます。
指定した Cassandra YAML 設定が、デプロイした Cassandra のバージョンに適していることを確認します。 詳細については、 Cassandra v3.11 の設定については Cassandra v3.11 、 v4.0 の場合は Cassandra v4.0 を参照してください。 次の YAML 設定を更新することはできません。
cluster_name
seed_provider
initial_token
autobootstrap
client_encryption_options
server_encryption_options
transparent_data_encryption_options
audit_logging_options
authenticator
authorizer
role_manager
storage_port
ssl_storage_port
native_transport_port
native_transport_port_ssl
listen_address
listen_interface
broadcast_address
hints_directory
data_file_directories
commitlog_directory
cdc_raw_directory
saved_caches_directory
endpoint_snitch
partitioner
rpc_address
rpc_interface
Cassandra のバージョンを更新する
Cassandra 5.0 と Turnkey バージョンの更新プログラムは、パブリック プレビュー段階です。 これらの機能は SLA なしで提供されます。 運用環境のワークロードには、これらの機能はお勧めしません。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
インプレース メジャー バージョンのアップグレードは、ポータルから直接、または Azure CLI、Terraform、または Azure Resource Manager テンプレートを使用して実行できます。
[ 概要 ] タブで、[ 更新] を選択します。
ドロップダウン リストから Cassandra バージョンを選択します。
バージョンをスキップしないでください。 1 つのバージョンから別のバージョンにのみ更新することをお勧めします。 たとえば、3.11 から 4.0 または 4.0 から 4.1 に更新します。
[ 更新] を選択して保存します。
ターンキー レプリケーション
Cassandra 5.0 では、マルチリージョン クラスターをデプロイするための合理化されたアプローチが導入されています。これにより、利便性と効率が向上します。 ターンキー レプリケーション機能を使用する場合は、マルチリージョン クラスターの設定と管理の方がアクセシビリティが高くなります。 分散環境全体で、よりスムーズな統合と操作を実現できます。
この更新プログラムにより、複数のリージョン構成のデプロイと保守に関連する複雑さが軽減されます。 ユーザーは、Cassandra の機能をより簡単かつ効果的に使用できます。
- なし: [自動レプリケート ] オプションは [なし] に設定されています。
- システム キースペース: すべてのシステム キースペース (
system_auth
、system_traces
、system_auth
) を自動複製します。 - すべてのキースペース: すべてのキースペースを自動複製し、新しいキースペースが作成されているかどうかを監視してから、自動複製設定を自動的に適用します。
自動複製のシナリオ
新しいデータセンターを追加すると、Cassandra の自動複製機能が nodetool rebuild
シームレスに実行され、追加されたデータセンター間でのデータのレプリケーションが正常に行われます。 データセンターを削除すると、キースペースから特定のデータセンターが自動的に削除されます。
オンプレミスでホストされているデータセンターなどの外部データセンターの場合は、外部データセンタープロパティを使用してキースペースに含めます。 このアプローチにより、Cassandra は、これらの外部データセンターを再構築プロセスのソースとして組み込むことができます。
[自動レプリケート] を [すべてのキースペース] に設定すると、キースペースのレプリケーションが次の内容に変更されます。
WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'on-prem-datacenter-1' : 3, 'mi-datacenter-1': 3 }
このトポロジが必要でない場合は、 SystemKeyspaces を使用して自分で調整し、 nodetool rebuild
を Azure Managed Instance for Apache Cassandra クラスターで手動で実行します。
クラスターの割り当てを解除する
非運用環境の場合は、クラスター内のリソースを一時停止または割り当て解除して、リソースの課金を回避できます。 ストレージに対して引き続き課金されます。 最初に、[ クラスターの種類] を [非運用] に変更し、[ 割り当ての解除] を選択します。
非運用クラスターの種類は、開発コストを節約するためにのみ使用します。 このクラスターの種類には、より小さな製品レベルが付属している場合があります。 運用環境のワークロードの実行には使用しないでください。
- 非運用として定義されているクラスターの種類には、SLA の保証は適用されません。
- 割り当て解除中にスキーマまたは書き込み操作を実行しないでください。 このアクションにより、データが失われる可能性があります。 まれに、スキーマの破損が発生する可能性があります。これには、サポート チームによる手動による介入が必要です。
トラブルシューティング
Azure CLI を使用するときに仮想ネットワークにアクセス許可を適用するときにエラーが発生した場合は、Azure portal から同じアクセス許可を手動で適用できます。 このようなエラーの例として、" e5007d2c-4b13-4a74-9b6a-605d99f03501
のグラフ データベースにユーザーまたはサービス プリンシパルが見つかりません" があります。詳細については、「 Azure portal を使用して Azure Cosmos DB サービス プリンシパルを追加する」を参照してください。
Azure Cosmos DB のロールの割り当ては、デプロイの目的にのみ使用されます。 Azure Managed Instanced for Apache Cassandra には、Azure Cosmos DB へのバックエンドの依存関係はありません。
クラスターに接続する
Azure Managed Instance for Apache Cassandra では、パブリック IP アドレスを持つノードは作成されません。 新しく作成した Cassandra クラスターに接続するには、仮想ネットワーク内に別のリソースを作成します。 このリソースは、Apache のオープンソース クエリ ツール CQLSH がインストールされているアプリケーションまたは VM である可能性があります。 テンプレートを使用して Ubuntu VM をデプロイできます。
CQLSH から接続する
VM がデプロイされたら、Secure Shell を使用してマシンに接続します。 CQLSH をインストールするには、次のコマンドを使用します。
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl
アプリケーションから接続する
CQLSH と同様に、サポートされている Apache Cassandra クライアント ドライバー のいずれかを使用してアプリケーションから接続する場合、トランスポート層セキュリティ/Secure Sockets Layer (TLS/SSL) 暗号化を有効にし、証明書の検証を無効にする必要があります。 Azure Managed Instance for Apache Cassandra への接続に使用されるサンプルについては、 Java、 .NET、 Node.js、 Python に関するページを参照してください。
クラスター ノードの IP アドレスを適切なドメインにマップしない限り、証明書検証は機能しないため、無効にすることをお勧めします。 内部ポリシーで任意のアプリケーションに対して TLS/SSL 証明書の検証を実行する必要がある場合は、各ノードの hosts ファイルに 10.0.1.5 host1.managedcassandra.cosmos.azure.com
などのエントリを追加して、このセットアップを容易にします。 この方法を使用する場合は、ノードをスケールアップするたびに新しいエントリを追加する必要もあります。
Java の場合は、アプリケーションが末尾の待機時間に影響を受けやすい 投機的実行ポリシー を有効にすることをお勧めします。 このアプローチのしくみを示すデモと、ポリシーを有効にする方法については、「 デモ: 投機的実行を実装する」を参照してください。
ほとんどの場合、Azure Managed Instance for Apache Cassandra に接続するために証明書 (rootCA
、node
、client
、truststore
など) を構成またはインストールする必要はありません。 TLS/SSL 暗号化を有効にするには、クライアントが使用しているランタイムの既定の信頼ストアとパスワードを使用します。 その環境では、Azure Managed Instance for Apache Cassandra 証明書が信頼されます。 まれに、証明書が信頼されていない場合は、信頼ストアに証明書を追加する必要があります。 サンプル コードについては、 Java、 .NET、 Node.js、 Python に関するページを参照してください。
クライアント証明書の構成 (省略可能)
クライアント証明書の構成は省略可能です。 上記の手順が完了した場合、クライアント アプリケーションは Azure Managed Instance for Apache Cassandra に接続できます。 必要に応じて、認証用のクライアント証明書を作成して構成することもできます。 一般に、証明書を作成する方法は 2 つあります。
- 自己署名証明書: ノードごとに証明機関 (CA) のないプライベート証明書とパブリック証明書。 この場合は、すべてのパブリック証明書が必要です。
- CA によって署名された証明書: 自己署名 CA またはパブリック CA によって発行された証明書。 この場合は、ルート CA 証明書とすべての中継局 (該当する場合) が必要です。 詳細については、「 運用環境用に SSL 証明書を準備する」を参照してください。
クライアントからノードへの証明書認証または相互トランスポート層セキュリティ (mTLS) を実装する場合は、Azure CLI を使用して証明書を提供します。 次のコマンドは、マネージド インスタンス クラスターの信頼ストアにクライアント証明書をアップロードして適用します。 cassandra.yaml
設定を編集する必要はありません。 コマンドを適用した後、クラスターでは、クライアントが接続するときに Cassandra で証明書を検証する必要があります。 詳細については、Cassandra client_encryption_optionsのrequire_client_auth: true
を参照してください。
resourceGroupName='<Resource_Group_Name>'
clusterName='<Cluster Name>'
az managed-cassandra cluster update \
--resource-group $resourceGroupName \
--cluster-name $clusterName \
--client-certificates /usr/csuser/clouddrive/rootCert.pem /usr/csuser/clouddrive/intermediateCert.pem
リソースをクリーンアップする
このマネージド インスタンス クラスターを引き続き使用しない場合は、次の手順に従って削除します。
- Azure portal の左側のメニューにある [リソース グループ] を選択します。
- 一覧から、このクイック スタート用に作成したリソース グループを選択します。
- リソース グループの [概要] ペインで、 [リソース グループの削除] を選択します。
- 次のウィンドウで、削除するリソース グループの名前を入力し、[削除] を選択 します。