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 Virtual Network。 オンプレミス環境を 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 のデプロイには、インターネット アクセスが必要です。 インターネットへのアクセスが制限されている環境では、デプロイは失敗します。 マネージド Cassandra が正常に動作するために必要な次の Azure サービスへの仮想ネットワーク内のアクセスをブロックしていないことを確認します。
- Azure Storage
- Azure KeyVault
- Azure 仮想マシン スケール セット (VMSS)
- Azure 監視
- マイクロソフト エントラ ID
- Azure セキュリティ
これらの特定のアクセス許可を仮想ネットワークに適用します。 マネージド インスタンスには、これらのインスタンスが必要です。
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='3.11' # 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 \ --debug
次の構成を使用して、3 つの仮想マシンを含むクラスターのデータセンターを作成します。
VM サイズ: Standard E8s v5
Datadisks: デプロイされた各仮想マシンに接続された 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
注意
--sku
の値は、次の使用可能な VM サイズから選択できます。- Standard_E8s_v5
- Standard_E16s_v5
- Standard_E20s_v5
- Standard_E32s_v5
既定では、
--availability-zone
はfalse
に設定されます。 可用性ゾーンを有効にするには、true
に設定します。 可用性ゾーンは、サービスの可用性を高めるのに役立ちます。 詳細については、 オンライン サービスの SLA を参照してください。警告
可用性ゾーンは、すべての Azure リージョンでサポートされているわけではありません。 可用性ゾーンがサポートされていないリージョンを選択すると、デプロイは失敗します。 サポートされているリージョンについては、 Azure リージョンの一覧を参照してください。
可用性ゾーンが正常にデプロイされた場合、選択したリージョン内のすべてのゾーンでコンピューティング リソースが利用できる可能性があります。 選択した仮想マシンのサイズが選択したリージョンで使用できない場合、デプロイは失敗します。
データセンターが作成されたら、 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 クラスターに接続するには、同じ仮想ネットワーク内に別のリソースを作成する必要があります。 たとえばアプリケーション リソースや、Apache のオープンソース クエリ ツール CQLSH がインストールされている仮想マシン リソースです。
Ubuntu 仮想マシンは、Resource Manager テンプレートを使用してデプロイできます。
注意
Python のバージョンに関する 既知の問題 があるため、Python3.10.12 に付属する Ubuntu 22.04 イメージを使用するか、 Python 仮想環境 を使用して CQLSH を実行することをお勧めします。
CQLSH からの接続
仮想マシンのデプロイ後、SSH を使用してそのマシンに接続し、CQLSH をインストールします。次のコマンドはその例です。
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
引き続きサポートされている Cassandra のバージョンを確認し、必要なバージョンを選択します。 安定したバージョンを使用することをお勧めします。
Cassandra ドキュメントの公式手順に従って CQLSH を取得するには、 Cassandra ライブラリをインストールします。
ドキュメントで説明されているように、cqlsh を使用して接続します。
アプリケーション からの接続:
CQLSH と同様に、サポートされている Apache Cassandra クライアント ドライバー のいずれかを使用してアプリケーションから接続するには、SSL を有効にし、証明書の検証を無効にする必要があります。 サンプルについては、 Java、 .NET、 Node.js、 Python を参照してください。
クラスター ノードの IP アドレスを適切なドメインにマップしない限り、証明書の検証が機能しないため、証明書の検証を無効にすることをお勧めします。 任意のアプリケーションに対して SSL 証明書の検証を行うことを義務付ける内部ポリシーがある場合は、各ノードの hosts ファイルに 10.0.1.5 host1.managedcassandra.cosmos.azure.com
などのエントリを追加することで容易に行うことができます。 この方法を使用する場合は、ノードをスケールアップするたびに新しいエントリを追加する必要もあります。
Java では、アプリケーションが末尾の待機時間に影響を受けやすい 投機的実行ポリシー を有効にすることを強くお勧めします。 このしくみとポリシーを有効にする方法を示すデモについては、「 投機的実行ポリシーの実装」を参照してください。
注意
通常、Azure Managed Instance for Apache Cassandra に接続するために、証明書、rootCA、ノード、クライアント、またはトラストストアを構成する必要はありません。 SSL 暗号化では、既定のトラストストアとクライアントが選択したランタイム パスワードが使用されます。 サンプル コードについては、 Java、 .NET、 Node.js、 Python) を参照してください。 証明書は既定で信頼されます。 そうでない場合は、トラストストアに追加します。
クライアント証明書を構成する (省略可能)
クライアント証明書の構成は省略可能です。 クライアント アプリケーションは、上記の手順に従っている限り、Azure Managed Instance for Apache Cassandra に接続できます。 必要に応じて、認証用のクライアント証明書を作成して構成することもできます。 一般に、証明書を作成するには、次の 2 つの方法があります。
自己署名証明書: 各ノードのプライベート証明書とパブリック証明書 (CA なし)。 この場合、すべてのパブリック証明書が必要です。
CA によって署名された証明書: 自己署名 CA またはパブリック CA によって発行されます。 このセットアップには、ルート CA 証明書とすべての中間証明書 (該当する場合) が必要です。 詳細については、 実稼働用の SSL 証明書の準備を参照してください。
クライアントからノードへの証明書認証または相互トランスポート層セキュリティ (mTLS) を実装するには、Azure CLI を使用して証明書を指定します。 次のコマンドは、Cassandra マネージド インスタンス クラスターのトラストストアにクライアント証明書をアップロードして適用します。 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 CLI を使用して仮想ネットワークにアクセス許可を適用するときにエラーが発生した場合は、Azure portal から同じアクセス許可を手動で適用できます。 このようなエラーの例として、 "e5007d2c-4b13-4a74-9b6a-605d99f03501" のグラフ データベースでユーザーまたはサービス プリンシパルが見つかりません。 詳細については、「 Azure portal を使用して Azure Cosmos DB サービス プリンシパルを追加する」を参照してください。
注意
Azure Cosmos DB のロールの割り当ては、デプロイの目的にのみ使用されます。 Azure Managed Instance for Apache Cassandra には、Azure Cosmos DB に対するバックエンドの依存関係はありません。
リソースをクリーンアップする
不要になったら、az group delete
コマンドを使用して、リソース グループとマネージド インスタンス、およびすべての関連リソースを削除できます。
az group delete --name <Resource_Group_Name>
次のステップ
このクイックスタートでは、Azure CLI を使用して、Azure Managed Instance for Apache Cassandra クラスターを作成する方法について学習しました。 これで、クラスターの操作を開始できます。