Azure Managed Instance for Apache Cassandra は、純粋なオープンソースの Apache Cassandra クラスター用のフル マネージド サービスです。 また、このサービスを使用すると、各ワークロードの特定のニーズに応じて構成をオーバーライドして、柔軟性と制御を最大限に高めることができます。
このクイックスタートでは、Azure CLI コマンドを使用して、Azure Managed Instance for Apache Cassandra でクラスターを作成する方法について説明します。 また、データセンターを作成し、データセンター内でノードをスケールアップまたはスケールダウンする方法についても説明します。
前提条件
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI リファレンス コマンドをローカル環境で実行したい場合は、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時に求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
インストールされているバージョンと依存ライブラリを調べるには、az version を実行します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- セルフホステッド環境またはオンプレミス環境への接続で Azure 仮想ネットワーク を使用します。 オンプレミス環境を Azure に接続する方法の詳細については、「オンプレミス ネットワークを Azure に接続する」を参照してください。
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
重要
この記事では、Azure CLI バージョン 2.30.0 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
マネージド インスタンス クラスターを作成する
Azure portal にサインインします。
Azure CLI でサブスクリプション ID を設定します。
az account set --subscription <Subscription_ID>リソース グループ内に専用サブネットを持つ仮想ネットワークを作成します。
az network vnet create --name <VNet_Name> --location eastus2 \ --resource-group <Resource_Group_Name> --subnet-name <Subnet Name>Azure Managed Instance for Apache Cassandra のインスタンスをデプロイするには、インターネット アクセスが必要です。 インターネットへのアクセスが制限されている環境では、デプロイは失敗します。 Azure Managed Instance for Apache Cassandra が正常に動作するために必要な次の Azure サービスへの仮想ネットワーク内のアクセスをブロックしていないことを確認します。
- Azure Storage
- Azure Key Vault
- Azure 仮想マシンのスケールセット
- Azure Monitor
- Microsoft Entra ID
- Microsoft Defender for Cloud
これらの特定のアクセス許可を仮想ネットワークに適用します。 マネージド インスタンスには、これらのインスタンスが必要です。
az role assignment createコマンドを使用し、<subscriptionID>、<resourceGroupName>、および<vnetName>を適切な値に置き換えます。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>assigneeとroleの値は固定値です。 これらの値は、コマンドで説明したとおりに入力します。 これを行わないと、クラスターの作成時にエラーが発生します。 このコマンドの実行時にエラーが発生した場合は、そのコマンドを実行するためのアクセス許可がない可能性があります。 アクセス許可については、Azure 管理者にお問い合わせください。az managed-cassandra cluster create コマンドを使用して、新しく作成した仮想ネットワークにクラスターを作成します。
delegatedManagementSubnetId変数の値を指定して、次のコマンドを実行します。 (delegatedManagementSubnetIdの値は、アクセス許可が適用されたのと同じ仮想ネットワーク名です)。resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster_Name>' location='eastus2' delegatedManagementSubnetId='/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/<VNet name>/subnets/<subnet name>' initialCassandraAdminPassword='myPassword' cassandraVersion='5.0' # set to 4.0 for a Cassandra 4.0 cluster az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --initial-cassandra-admin-password $initialCassandraAdminPassword \ --cassandra-version $cassandraVersion \ --debug3 つの仮想マシン (VM) を持つクラスター用のデータセンターを作成します。 次の構成を使用します。
- VM サイズ: Standard E8s v5
- データ ディスク: デプロイされた各 VM に接続された 4 つの P30 ディスク
すべての情報が設定されたら、 az managed-cassandra datacenter create コマンドを使用します。
dataCenterName='dc1' dataCenterLocation='eastus2' virtualMachineSKU='Standard_D8s_v4' noOfDisksPerNode=4 az managed-cassandra datacenter create \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --data-center-location $dataCenterLocation \ --delegated-subnet-id $delegatedManagementSubnetId \ --node-count 3 \ --sku $virtualMachineSKU \ --disk-capacity $noOfDisksPerNode \ --availability-zone false次の使用可能な VM サイズから
--skuの値を選択します。- Standard_E8s_v5
- Standard_E16s_v5
- Standard_E20s_v5
- Standard_E32s_v5
既定では、
--availability-zoneはfalseに設定されています。 可用性ゾーンを有効にするには、trueに設定します。 可用性ゾーンは、サービスの可用性を高めるのに役立ちます。 詳細については、「オンラインサービスのサービス レベル アグリーメント」を参照してください。可用性ゾーンは、すべての Azure リージョンでサポートされているわけではありません。 可用性ゾーンがサポートされていないリージョンを選択すると、デプロイは失敗します。 サポートされているリージョンについては、 Azure リージョンの一覧を参照してください。
可用性ゾーンが正常にデプロイされた場合、選択したリージョン内のすべてのゾーンでコンピューティング リソースが使用可能になる可能性があります。 選択した VM サイズが、選択したリージョンで使用できない場合、デプロイは失敗します。
データセンターが作成されたら、 az managed-cassandra datacenter update コマンドを実行して、クラスターをスケールダウンまたはスケールアップできます。
node-countパラメーターの値を目的の値に変更します。resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster Name>' dataCenterName='dc1' dataCenterLocation='eastus2' az managed-cassandra datacenter update \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --node-count 9
クラスターへの接続
Azure Managed Instance for Apache Cassandra では、パブリック IP アドレスを持つノードは作成されません。 新しい Cassandra クラスターに接続するには、同じ仮想ネットワーク内に別のリソースを作成する必要があります。 このリソースには、 Cassandra クエリ言語シェル (CQLSH) がインストールされているアプリケーションまたは VM を指定できます。 CQLSH は Apache オープンソース クエリ ツールです。
Azure Resource Manager テンプレートを使用して、Ubuntu VM をデプロイできます。
Python のバージョンに関する 既知の問題 があるため、Python3.10.12 に付属する Ubuntu 22.04 イメージまたは Python 仮想環境 を使用して CQLSH を実行することをお勧めします。
CQLSH から接続する
VM がデプロイされたら、Secure Shell を使用してマシンに接続し、CQLSH をインストールします。 次のコマンドを使用します。
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
引き続きサポートされている Cassandra のバージョンを確認し、必要なバージョンを選択します。 安定したバージョンを使用することをお勧めします。
CQLSH を取得するには、Cassandra ライブラリをインストールします。 Cassandra ドキュメントの公式手順に従います。
アプリケーションから接続する
CQLSH と同様に、サポートされている Apache Cassandra クライアント ドライバー のいずれかを使用してアプリケーションから接続する場合、トランスポート層セキュリティ/Secure Sockets Layer (TLS/SSL) 暗号化を有効にし、証明書の検証を無効にする必要があります。 サンプルについては、 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 暗号化では、既定の信頼ストアとクライアントが選択したランタイム パスワードが使用されます。 サンプル コードについては、 Java、 .NET、 Node.js、 Python) を参照してください。 証明書は既定で信頼されます。 そうでない場合は、信頼ストアに追加します。
クライアント証明書の構成 (省略可能)
クライアント証明書の構成は省略可能です。 クライアント アプリケーションは、上記の手順に従った後、Azure Managed Instance for Apache Cassandra に接続できます。 必要に応じて、認証用のクライアント証明書を作成して構成することもできます。 一般に、証明書を作成する方法は 2 つあります。
- 自己署名証明書: ノードごとに証明機関 (CA) のないプライベート証明書とパブリック証明書。 この場合、すべてのパブリック証明書が必要です。
- CA によって署名された証明書: 自己署名 CA またはパブリック CA によって発行された証明書。 このセットアップには、ルート CA 証明書とすべての中間証明書 (該当する場合) が必要です。 詳細については、「 運用環境用に SSL 証明書を準備する」を参照してください。
クライアントからノードへの証明書認証または相互トランスポート層セキュリティを実装するには、Azure CLI を使用して証明書を指定します。 次のコマンドは、クライアント証明書をアップロードし、Azure Managed Instance for Apache Cassandra クラスターの信頼ストアに適用します。
cassandra.yaml設定を変更する必要はありません。 証明書が適用された後、クラスターでは、Cassandra がクライアント接続中に証明書を検証する必要があります。 詳細については、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 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 へのバックエンドの依存関係はありません。
リソースをクリーンアップする
リソースが不要になったら、 az group delete コマンドを使用して、リソース グループ、マネージド インスタンス、およびすべての関連リソースを削除します。
az group delete --name <Resource_Group_Name>
次のステップ
このクイックスタートでは、Azure CLI を使用して、Apache Cassandra クラスター用の Azure Managed Instance を作成する方法について説明しました。 これで、クラスターの操作を開始できます。