Azure Managed Instance for Apache Cassandra は、純粋なオープン ソースの Apache Cassandra クラスター用のフル マネージド サービスです。 また、このサービスを使用すると、各ワークロードの特定のニーズに応じて構成をオーバーライドして、柔軟性と制御を最大限に高めることができます。
このクイック スタートでは、Azure CLI コマンドを使用して、Apache Cassandra のAzure Managed Instanceを使用してクラスターを作成する方法について説明します。 また、データセンターを作成し、データセンター内でノードをスケールアップまたはスケールダウンする方法についても説明します。
前提条件
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Get started with Azure Cloud Shell」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLIinstallします。 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 サブスクリプションがない場合は、開始する前に free アカウントを作成します。
重要
この記事では、Azure CLI バージョン 2.30.0 以降が必要です。 Azure Cloud Shellを使用している場合は、最新バージョンが既にインストールされています。
マネージド インスタンス クラスターを作成する
Azure ポータルにサインインします。
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>Apache Cassandra のAzure Managed Instanceのインスタンスをデプロイするには、インターネット アクセスが必要です。 インターネットへのアクセスが制限されている環境では、デプロイは失敗します。 仮想ネットワーク内で、Apache Cassandra が正常に動作するために必要な Azure Managed Instance の次の 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 ディスクが接続されます。 ストレージのサイズを設定する際は、使用率が最大で50%になるように計画し、システムサービスによるトゥームストーンとディスク使用量に十分な余裕を確保します。 さらに、バックアップでは、Blob Storage に永続化される前に、ローカル ディスク領域が一時的に消費されます。
すべての情報が設定されたら、 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のバージョンに関するknown の問題があるため、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の場合は、アプリケーションが末尾の待機時間に影響を受けやすい特別な実行ポリシーを有効にすることをお勧めします。 このアプローチのしくみを示すデモと、ポリシーを有効にする方法については、「投機的実行ポリシーの実装を参照してください。
通常、Apache Cassandra のAzure Managed Instanceに接続するために、証明書 (rootCA、node、client、truststore など) を構成する必要はありません。 TLS/SSL 暗号化では、既定の信頼ストアとクライアントが選択したランタイム パスワードが使用されます。 サンプル コードについては、Java、.NET、Node.js、および Python) を参照してください。 証明書は既定で信頼されます。 そうでない場合は、信頼ストアに追加します。
クライアント証明書の構成 (省略可能)
クライアント証明書の構成は省略可能です。 クライアント アプリケーションは、上記の手順に従った後、apache Cassandra のAzure Managed Instanceに接続できます。 必要に応じて、認証用のクライアント証明書を作成して構成することもできます。 一般に、証明書を作成する方法は 2 つあります。
- 自己署名証明書: ノードごとに証明機関 (CA) のないプライベート証明書とパブリック証明書。 この場合、すべてのパブリック証明書が必要です。
- CA によって署名された証明書: 自己署名 CA またはパブリック CA によって発行された証明書。 このセットアップには、ルート CA 証明書とすべての中間証明書 (該当する場合) が必要です。 詳細については、「 運用環境用に SSL 証明書を準備する」を参照してください。
クライアントからノードへの証明書認証または相互トランスポート層セキュリティを実装するには、Azure CLIを使用して証明書を指定します。 次のコマンドは、クライアント証明書をアップロードし、Apache Cassandra クラスターのAzure Managed Instanceの信頼ストアに適用します。
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 ポータルから同じアクセス許可を手動で適用できます。 このようなエラーの例として、"e5007d2c-4b13-4a74-9b6a-605d99f03501 のグラフ データベースでユーザーまたはサービス プリンシパルが見つかりません" があります。詳細については、「Azure ポータルを使用して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を作成する方法について説明しました。 これで、クラスターの操作を開始できます。
Azure Databricks を使用して、管理された Apache Spark クラスターを展開します