Bagikan melalui


Buat eksperimen kekacauan yang menggunakan kesalahan layanan langsung dengan Azure CLI

Anda dapat menggunakan eksperimen chaos untuk memverifikasi bahwa aplikasi Anda tahan terhadap kegagalan dengan menyebabkan kegagalan tersebut dalam lingkungan yang terkendali. Dalam artikel ini, Anda menyebabkan failover Azure Cosmos DB multi-baca dan tulis tunggal dengan menggunakan eksperimen chaos dan Azure Chaos Studio. Menjalankan eksperimen ini dapat membantu Anda bertahan melawan kehilangan data ketika peristiwa failover terjadi.

Anda dapat menggunakan langkah-langkah yang sama ini untuk menyiapkan dan menjalankan eksperimen untuk kesalahan langsung layanan apa pun. Kesalahan langsung layanan berjalan langsung terhadap sumber daya Azure tanpa perlu instrumentasi, tidak seperti kesalahan berbasis agen, yang memerlukan penginstalan agen chaos.

Prasyarat

  • Langganan Azure. Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.
  • Akun Azure Cosmos DB. Jika Anda tidak memiliki akun Azure Cosmos DB, Anda dapat membuatnya.
  • Setidaknya satu membaca dan satu menulis pengaturan wilayah untuk akun Azure Cosmos DB Anda.

Membuka Azure Cloud Shell

Azure Cloud Shell adalah shell interaktif gratis yang dapat Anda gunakan untuk menjalankan langkah dalam artikel ini. Shell ini memiliki alat Azure umum yang telah dipasang sebelumnya dan dikonfigurasi untuk digunakan dengan akun Anda.

Untuk membuka Cloud Shell, pilih Coba di sudut kanan atas blok kode. Anda juga dapat membuka Cloud Shell di tab browser terpisah dengan membuka Bash. Pilih Salin untuk menyalin blok kode, tempel ke Cloud Shell, dan pilih Masukkan untuk menjalankannya.

Jika Anda ingin menginstal dan menggunakan CLI secara lokal, tutorial ini memerlukan Azure CLI versi 2.0.30 atau yang lebih baru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Catatan

Instruksi ini menggunakan terminal Bash di Cloud Shell. Beberapa perintah mungkin tidak berfungsi seperti yang dijelaskan jika Anda menjalankan CLI secara lokal atau di terminal PowerShell.

Aktifkan Chaos Studio di akun Azure Cosmos DB Anda

Chaos Studio tidak dapat menyuntikkan kesalahan terhadap sumber daya kecuali sumber daya tersebut ditambahkan ke Chaos Studio terlebih dahulu. Anda menambahkan sumber daya ke Chaos Studio dengan membuat target dan kemampuan pada sumber daya. Akun Azure Cosmos DB hanya memiliki satu jenis target (service-direct) dan satu kemampuan (failover). Sumber daya lain mungkin memiliki hingga dua jenis target. Salah satu jenis target adalah untuk kesalahan langsung layanan. Jenis target lain adalah untuk kesalahan berbasis agen. Sumber daya lain mungkin memiliki banyak kemampuan lain.

  1. Buat target dengan mengganti $RESOURCE_ID dengan ID sumber daya sumber daya yang Anda tambahkan. Ganti $TARGET_TYPE dengan jenis target yang Anda tambahkan:

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE?api-version=2023-11-01" --body "{\"properties\":{}}"
    

    Misalnya, jika Anda menambahkan komputer virtual sebagai target langsung layanan:

    az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. Buat kemampuan pada target dengan mengganti $RESOURCE_ID dengan ID sumber daya sumber daya yang Anda tambahkan. Ganti $TARGET_TYPE dengan jenis target yang Anda tambahkan. Ganti $CAPABILITY dengan nama kemampuan kesalahan yang Anda aktifkan.

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE/capabilities/$CAPABILITY?api-version=2023-11-01" --body "{\"properties\":{}}"
    

    Misalnya, jika Anda mengaktifkan kemampuan matikan komputer virtual:

    az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2023-11-01" --body "{\"properties\":{}}"
    

Anda sekarang telah berhasil menambahkan akun Azure Cosmos DB Anda ke Chaos Studio.

Membuat eksperimen

Sekarang Anda dapat membuat eksperimen Anda. Eksperimen chaos mendefinisikan tindakan yang ingin Anda ambil terhadap sumber daya target. Tindakan diatur dan dijalankan secara berurutan. Eksperimen chaos juga mendefinisikan tindakan yang ingin Anda ambil terhadap cabang, yang berjalan secara paralel.

  1. Rumuskan JSON eksperimen Anda dimulai dengan sampel JSON berikut. Ubah JSON agar sesuai dengan eksperimen yang ingin Anda jalankan dengan menggunakan Create Experiment API dan pustaka kesalahan.

    {
      "location": "eastus",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "steps": [
          {
            "name": "Step1",
            "branches": [
              {
                "name": "Branch1",
                "actions": [
                  {
                    "type": "continuous",
                    "selectorId": "Selector1",
                    "duration": "PT10M",
                    "parameters": [
                      {
                        "key": "readRegion",
                        "value": "East US 2"
                      }
                    ],
                    "name": "urn:csci:microsoft:cosmosDB:failover/1.0"
                  }
                ]
              }
            ]
          }
        ],
        "selectors": [
          {
            "id": "Selector1",
            "type": "List",
            "targets": [
              {
                "type": "ChaosTarget",
                "id": "/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB"
              }
            ]
          }
        ]
      }
    }
    
  2. Buat eksperimen dengan menggunakan Azure CLI. Ganti $SUBSCRIPTION_ID, $RESOURCE_GROUP, dan $EXPERIMENT_NAME dengan properti untuk eksperimen Anda. Pastikan Anda telah menyimpan dan mengunggah JSON eksperimen Anda. Perbarui experiment.json dengan nama file JSON Anda.

    az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
    

    Setiap eksperimen membuat identitas terkelola yang ditetapkan oleh sistem yang sesuai. Perhatikan ID utama untuk identitas ini dalam respons untuk langkah berikutnya.

Memberikan izin eksperimen ke akun Azure Cosmos DB Anda

Saat membuat eksperimen chaos, Chaos Studio membuat identitas terkelola yang ditetapkan sistem yang mengeksekusi kesalahan pada sumber daya target Anda. Identitas ini harus diberi izin yang sesuai ke sumber daya target agar eksperimen berhasil berjalan.

Berikan akses eksperimen ke sumber daya Anda dengan menggunakan perintah berikut. Ganti $EXPERIMENT_PRINCIPAL_ID dengan ID utama dari langkah sebelumnya. Ganti $RESOURCE_ID dengan ID sumber daya sumber daya target. Dalam hal ini, ini adalah ID sumber daya instans Azure Cosmos DB. Ubah peran ke peran bawaan yang sesuai untuk jenis sumber daya tersebut. Jalankan perintah ini untuk setiap sumber daya yang ditargetkan dalam eksperimen Anda.

az role assignment create --role "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Jalankan eksperimen Anda

Anda sekarang siap untuk menjalankan eksperimen Anda. Untuk melihat efeknya, kami sarankan Anda membuka gambaran umum akun Azure Cosmos DB dan masuk ke Mereplikasi data secara global di tab browser terpisah. Refresh secara berkala selama eksperimen untuk menampilkan pertukaran wilayah.

  1. Mulai eksperimen dengan menggunakan Azure CLI. Ganti $SUBSCRIPTION_ID, $RESOURCE_GROUP, dan $EXPERIMENT_NAME dengan properti untuk eksperimen Anda.

    az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2023-11-01
    
  2. Responsnya mencakup URL status yang dapat Anda gunakan untuk menanyakan status eksperimen saat eksperimen berjalan.

Langkah berikutnya

Sekarang setelah Anda menjalankan eksperimen langsung layanan Azure Cosmos DB, Anda siap untuk: