Szybki start: tworzenie klastra z wieloma regionami przy użyciu usługi Azure Managed Instance dla usługi Apache Cassandra
Azure Managed Instance for Apache Cassandra to w pełni zarządzana usługa dla czystych klastrów Apache Cassandra typu open source. Usługa umożliwia również zastępowanie konfiguracji w zależności od konkretnych potrzeb każdego obciążenia, co pozwala na maksymalną elastyczność i kontrolę w razie potrzeby.
W tym przewodniku Szybki start pokazano, jak za pomocą poleceń interfejsu wiersza polecenia platformy Azure skonfigurować klaster z wieloma regionami na platformie Azure.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.30.0 lub nowszej. Jeśli używasz usługi Azure Cloud Shell, najnowsza wersja jest już zainstalowana.
Usługa Azure Virtual Network z łącznością ze środowiskiem własnym lub lokalnym. Aby uzyskać więcej informacji na temat łączenia środowisk lokalnych z platformą Azure, zobacz artykuł Łączenie sieci lokalnej z platformą Azure .
Konfigurowanie środowiska sieciowego
Ponieważ wszystkie centra danych aprowizowane za pomocą tej usługi muszą być wdrażane w dedykowanych podsieciach przy użyciu iniekcji sieci wirtualnej, należy skonfigurować odpowiednią komunikację równorzędną sieci przed wdrożeniem. W tym przewodniku Szybki start utwórz klaster z dwoma centrami danych w oddzielnych regionach: Wschodnie stany USA i Wschodnie stany USA 2. Najpierw utwórz sieci wirtualne dla każdego regionu.
Zaloguj się w witrynie Azure Portal.
Utwórz grupę zasobów o nazwie cassandra-mi-multi-region:
az group create --location eastus2 --name cassandra-mi-multi-region
Utwórz pierwszą sieć wirtualną w regionie Wschodnie stany USA 2 z dedykowaną podsiecią:
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
Utwórz drugą sieć wirtualną w regionie Wschodnie stany USA z dedykowaną podsiecią:
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
Uwaga
Jawnie dodajemy różne zakresy adresów IP, aby zapewnić brak błędów podczas komunikacji równorzędnej.
Należy połączyć pierwszą sieć wirtualną z drugą siecią wirtualną:
az network vnet peering create \ --resource-group cassandra-mi-multi-region \ --name MyVnet1ToMyVnet2 \ --vnet-name vnetEastUs2 \ --remote-vnet vnetEastUs \ --allow-vnet-access \ --allow-forwarded-traffic
Aby połączyć dwie sieci wirtualne, utwórz kolejną komunikację równorzędną między drugą siecią wirtualną a pierwszą:
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
Uwaga
Jeśli dodasz więcej regionów, każda sieć wirtualna wymaga komunikacji równorzędnej z niej do wszystkich innych sieci wirtualnych i wszystkich innych sieci wirtualnych.
Sprawdź dane wyjściowe poprzedniego polecenia. Upewnij się, że wartość "peeringState" ma teraz wartość "Connected". Możesz również sprawdzić ten wynik, uruchamiając następujące polecenie:
az network vnet peering show \ --name MyVnet1ToMyVnet2 \ --resource-group cassandra-mi-multi-region \ --vnet-name vnetEastUs2 \ --query peeringState
Zastosuj pewne specjalne uprawnienia do obu sieci wirtualnych. Wystąpienie zarządzane platformy Azure dla usługi Apache Cassandra wymaga tych uprawnień. Uruchom następujące polecenie. Zastąp
<SubscriptionID>
element identyfikatorem subskrypcji: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
Uwaga
Wartości
assignee
irole
w poprzednim poleceniu są stałymi wartościami. Wprowadź te wartości dokładnie tak, jak w poleceniu.
Jeśli wystąpią błędy podczas uruchamiania az role assignment create
polecenia , być może nie masz uprawnień do jego uruchomienia. Sprawdź się z administratorem, aby uzyskać uprawnienia.
Tworzenie klastra z wieloma regionami
Wdróż zasób klastra. Zastąp
<Subscription ID>
ciąg identyfikatorem subskrypcji. Wdrożenie może potrwać od pięciu do 10 minut: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
Po utworzeniu zasobu klastra możesz utworzyć centrum danych. Najpierw utwórz centrum danych w regionie Wschodnie stany USA 2. Zastąp
<SubscriptionID>
ciąg identyfikatorem subskrypcji. Ta akcja może potrwać do 10 minut: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
Utwórz centrum danych w regionie Wschodnie stany USA. Zastąp
<SubscriptionID>
ciąg identyfikatorem subskrypcji.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
Uwaga
Wartość dla
--sku
programu można wybrać z następujących dostępnych jednostek SKU:- Standard_E8s_v4
- Standard_E16s_v4
- Standard_E20s_v4
- Standard_E32s_v4
- Standardowa_DS13_v2
- Standardowa_DS14_v2
- Standard_D8s_v4
- Standard_D16s_v4
- Standard_D32s_v4
Należy również pamiętać, że
--availability-zone
ustawiono wartośćfalse
. Aby włączyć strefy dostępności, ustaw tę opcję natrue
. Strefy dostępności zwiększają dostępność umowy SLA usługi. Aby uzyskać więcej informacji, zobacz Sla for Azure Managed Instance for Apache Cassandra (Umowa SLA dla usługi Azure Managed Instance dla usługi Apache Cassandra).Ostrzeżenie
Strefy dostępności nie są obsługiwane we wszystkich regionach. Wdrożenia kończą się niepowodzeniem, jeśli wybierzesz region, w którym strefy dostępności nie są obsługiwane. Aby uzyskać informacje o obsługiwanych regionach, zobacz Regiony platformy Azure ze strefami dostępności.
Pomyślne wdrożenie stref dostępności podlega również dostępności zasobów obliczeniowych we wszystkich strefach w danym regionie. Wdrożenia mogą zakończyć się niepowodzeniem, jeśli wybrana jednostka SKU lub pojemność nie jest dostępna we wszystkich strefach.
Po utworzeniu drugiego centrum danych pobierz stan węzła, aby sprawdzić, czy wszystkie węzły cassandra zostały pomyślnie wyświetlone:
resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' az managed-cassandra cluster status\ --cluster-name $clusterName \ --resource-group $resourceGroupName
Następnie nawiąż połączenie z klastrem przy użyciu protokołu CQLSH i użyj następującego zapytania CQL, aby zaktualizować strategię replikacji w każdej przestrzeni kluczy, aby uwzględnić wszystkie centra danych w klastrze (tabele systemowe zostaną zaktualizowane automatycznie):
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
Na koniec, jeśli dodasz centrum danych do klastra, w którym znajdują się już dane, musisz uruchomić
rebuild
polecenie w celu replikowania danych historycznych. W tym przypadku przyjmiemy, żedc-eastus2
centrum danych zawiera już dane. W interfejsie wiersza polecenia platformy Azure uruchom poniższe polecenie, aby wykonać polecenienodetool rebuild
w każdym węźle w nowymdc-eastus
centrum danych, zastępując element<ip address>
adresem IP węzła:az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "dc-eastus2"=""
Ostrzeżenie
Nie należy zezwalać klientom aplikacji na zapisywanie w nowym centrum danych do momentu zastosowania zmian replikacji przestrzeni kluczy. W przeciwnym razie ponowne kompilowanie nie będzie działać i musisz utworzyć wniosek o pomoc techniczną, aby nasz zespół mógł działać
repair
w Twoim imieniu.
Rozwiązywanie problemów
Jeśli wystąpi błąd podczas stosowania uprawnień do sieci wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure, możesz ręcznie zastosować to samo uprawnienie w witrynie Azure Portal. Przykładem błędu może być nie można odnaleźć użytkownika lub jednostki usługi w grafowej bazie danych "e5007d2c-4b13-4a74-9b6a-605d99f03501". Aby uzyskać więcej informacji, zobacz Dodawanie jednostki usługi Azure Cosmos DB przy użyciu witryny Azure Portal.
Uwaga
Przypisanie roli usługi Azure Cosmos DB jest używane tylko do celów wdrażania. Wystąpienie zarządzane platformy Azure dla usługi Apache Cassandra nie ma zależności zaplecza w usłudze Azure Cosmos DB.
Czyszczenie zasobów
Jeśli nie zamierzasz nadal używać tego klastra wystąpień zarządzanych, usuń go, wykonując następujące czynności:
- W menu po lewej stronie witryny Azure Portal wybierz pozycję Grupy zasobów.
- Z listy wybierz grupę zasobów utworzoną na potrzeby tego przewodnika Szybki start.
- W okienku Przegląd grupy zasobów wybierz pozycję Usuń grupę zasobów.
- W następnym oknie wprowadź nazwę grupy zasobów do usunięcia, a następnie wybierz pozycję Usuń.
Następne kroki
W tym przewodniku Szybki start przedstawiono sposób tworzenia klastra z wieloma regionami przy użyciu interfejsu wiersza polecenia platformy Azure i wystąpienia zarządzanego platformy Azure dla usługi Apache Cassandra. Teraz możesz rozpocząć pracę z klastrem.