Azure Managed Instance for Apache Cassandra は、純粋なオープンソースの Apache Cassandra クラスター用のフル マネージド サービスです。 また、このサービスを使用すると、各ワークロードの特定のニーズに応じて構成をオーバーライドして、柔軟性と制御を最大限に高めることができます。
このクイックスタートでは、Azure CLI のコマンドを使用して Azure にマルチリージョン クラスターを構成する方法について説明します。
前提条件
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 CLI バージョン 2.30.0 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
- セルフホステッド環境またはオンプレミス環境への接続で Azure 仮想ネットワーク を使用します。 オンプレミス環境を Azure に接続する方法の詳細については、「オンプレミス ネットワークを Azure に接続する」を参照してください。
ネットワーク環境を設定する
このサービスでプロビジョニングされたすべてのデータセンターは、仮想ネットワークインジェクションを使用して専用サブネットにデプロイする必要があるため、デプロイの前に適切なネットワーク ピアリングを構成します。 このクイックスタートでは、米国東部と米国東部 2 の別々のリージョンに 2 つのデータセンターがあるクラスターを作成します。 まず、リージョンごとに仮想ネットワークを作成します。
Azure portal にサインインします。
cassandra-mi-multi-regionという名前のリソース グループを作成します。az group create --___location eastus2 --name cassandra-mi-multi-region専用サブネットを使用して、米国東部 2 で最初の仮想ネットワークを作成します。
az network vnet create \ --name vnetEastUs2 \ --___location eastus2 \ --resource-group cassandra-mi-multi-region \ --address-prefix 10.0.0.0/16 \ --subnet-name dedicated-subnet専用サブネットを使用して、米国東部に 2 つ目の仮想ネットワークを作成します。
az network vnet create \ --name vnetEastUs \ --___location eastus \ --resource-group cassandra-mi-multi-region \ --address-prefix 192.168.0.0/16 \ --subnet-name dedicated-subnetピアリングでエラーが発生しないように、異なる IP アドレス範囲を明示的に追加します。
最初の仮想ネットワークを 2 つ目の仮想ネットワークにピアリングします。
az network vnet peering create \ --resource-group cassandra-mi-multi-region \ --name MyVnet1ToMyVnet2 \ --vnet-name vnetEastUs2 \ --remote-vnet vnetEastUs \ --allow-vnet-access \ --allow-forwarded-traffic2 つの仮想ネットワークを接続するには、2 つ目の仮想ネットワークと最初の仮想ネットワークの間に別のピアリングを作成します。
az network vnet peering create \ --resource-group cassandra-mi-multi-region \ --name MyVnet2ToMyVnet1 \ --vnet-name vnetEastUs \ --remote-vnet vnetEastUs2 \ --allow-vnet-access \ --allow-forwarded-trafficリージョンを追加すると、各仮想ネットワークから他のすべての仮想ネットワークへのピアリングと、他のすべての仮想ネットワークからその仮想ネットワークへのピアリングが必要になります。
前のコマンドの出力をチェックします。
peeringStateの値がConnectedされていることを確認します。 この結果は、次のコマンドを実行して確認することもできます。az network vnet peering show \ --name MyVnet1ToMyVnet2 \ --resource-group cassandra-mi-multi-region \ --vnet-name vnetEastUs2 \ --query peeringState両方の仮想ネットワークに特別なアクセス許可を適用します。 Azure Managed Instance for Apache Cassandra には、これらのアクセス許可が必要となります。 次のコマンドを実行します。
<SubscriptionID>をサブスクリプション ID で置き換えます。az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2 az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs前のコマンドの
assigneeとroleの値は固定値です。 コマンドに示されているように、これらの値を正確に入力します。
az role assignment create の実行時にエラーが発生した場合、それを実行するためのアクセス許可が不足していることが考えられます。 管理者にアクセス許可を申請してください。
マルチリージョン クラスターを作成する
クラスター リソースをデプロイします。
<Subscription ID>は、サブスクリプション ID で置き換えてください。 デプロイには 5 ~ 10 分かかる場合があります。resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' ___location='eastus2' delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet' initialCassandraAdminPassword='myPassword' az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --___location $___location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --initial-cassandra-admin-password $initialCassandraAdminPassword \ --debugクラスター リソースが作成されたら、データセンターを作成する準備ができました。 まず、米国東部 2 にデータセンターを作成します。
<SubscriptionID>は、サブスクリプション ID で置き換えてください。 この操作には最大 10 分かかることがあります。resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' dataCenterName='dc-eastus2' dataCenterLocation='eastus2' delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet' 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米国東部にデータセンターを作成します。
<SubscriptionID>をサブスクリプション ID で置き換えます。resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' dataCenterName='dc-eastus' dataCenterLocation='eastus' delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs/subnets/dedicated-subnet' 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の値は、次の利用可能な製品レベルから選択できます。- Standard_E8s_v4
- Standard_E16s_v4
- Standard_E20s_v4
- Standard_E32s_v4
- Standard_DS13_v2
- Standard_DS14_v2
- Standard_D8s_v4
- Standard_D16s_v4
- Standard_D32s_v4
--availability-zoneがfalseに設定されていることにも注意してください。 可用性ゾーンを有効にするには、trueに設定します。 可用性ゾーンにより、サービスの可用性サービス レベル アグリーメント (SLA) が向上します。 詳細については、「 Azure Managed Instance for Apache Cassandra のサービス レベル アグリーメント」を参照してください。可用性ゾーンは、すべてのリージョンでサポートされているわけではありません。 可用性ゾーンがサポートされていないリージョンを選択すると、デプロイは失敗します。 サポートされるリージョンについては、「可用性ゾーンを含む Azure のリージョン」を参照してください。
可用性ゾーンが正常にデプロイされた場合、特定のリージョン内のすべてのゾーンでコンピューティング リソースが利用できるかどうかも影響を受けます。 選択した製品レベル (容量) がすべてのゾーンで使用できない場合、デプロイが失敗する可能性があります。
2 つ目のデータセンターが作成されたら、ノードの状態を取得して、すべての Cassandra ノードが正常に起動したことを確認します。
resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' az managed-cassandra cluster status\ --cluster-name $clusterName \ --resource-group $resourceGroupName次に、CQLSH を使用して クラスターに接続します。 次の CQL クエリを使用して、クラスター全体のすべてのデータセンターを含むように各キースペースのレプリケーション戦略を更新します (システム テーブルは自動的に更新されます)。
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};最後に、データが既に含まれているクラスターにデータセンターを追加する場合は、
rebuildを実行して履歴データをレプリケートする必要があります。 この場合は、dc-eastus2データセンターに既にデータがあるとします。 Azure CLI で、次のコマンドを実行して、新しいdc-eastusデータセンター内の各ノードでnodetool rebuildを実行します。<ip address>をノードの IP アドレスに置き換えます。az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "dc-eastus2"=""キースペース レプリケーションの変更を適用するまで、アプリケーション クライアントが新しいデータセンターに書き込むのを許可しないでください。 それ以外の場合、リビルドは機能しません。 その後、サポート リクエスト を作成して、チームが
repairを実行できるようにする必要があります。
トラブルシューティング
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 portal の左側のメニューにある [リソース グループ] を選択します。
- 一覧から、このクイック スタート用に作成したリソース グループを選択します。
- リソース グループの [概要] ペインで、 [リソース グループの削除] を選択します。
- 次のウィンドウで、削除するリソース グループの名前を入力し、[削除] を選択 します。
次のステップ
このクイックスタートでは、Azure CLI と Azure Managed Instance for Apache Cassandra を使用してマルチリージョン クラスターを作成する方法について説明しました。 これで、クラスターの操作を開始できます。