Azure'da Azure'a çoğaltmada Ulaşım hizmeti otomatik güncelleştirmesi

Azure Site Recovery, sorunları düzeltmek ve mevcut özellikleri geliştirmek veya yenilerini eklemek için aylık sürüm temposunu kullanır. Hizmetle ilgili güncel kalmak için her ay düzeltme eki dağıtımını planlamanız gerekir. Her yükseltmeyle ilişkili ek yükü önlemek için, Site Recovery'nin bileşen güncelleştirmelerini yönetmesine izin vekleyebilirsiniz.

Azure'dan Azure'a olağanüstü durum kurtarma mimarisinde belirtildiği gibi, Ulaşım hizmeti bir Azure bölgesinden diğerine çoğaltma etkinleştirilen tüm Azure sanal makinelerine (VM) yüklenir. Otomatik güncelleştirmeleri kullandığınızda, her yeni sürüm Ulaşım hizmeti uzantısını güncelleştirir.

Dekont

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Otomatik güncelleştirmeler nasıl çalışır?

Site Recovery'yi güncelleştirmeleri yönetmek için kullandığınızda, kasayla aynı abonelikte oluşturulan bir otomasyon hesabı aracılığıyla genel bir runbook (Azure hizmetleri tarafından kullanılır) dağıtır. Her kasa bir otomasyon hesabı kullanır. Bir kasadaki her VM için runbook etkin otomatik güncelleştirmeleri denetler. Ulaşım hizmeti uzantısının daha yeni bir sürümü varsa güncelleştirme yüklenir.

Varsayılan runbook zamanlaması, çoğaltılan VM'nin coğrafyasının saat diliminde her gün saat 12:00'de gerçekleşir. Runbook zamanlamasını otomasyon hesabı aracılığıyla da değiştirebilirsiniz.

Dekont

Güncelleştirme Paketi 35'den başlayarak, güncelleştirmeler için kullanılacak mevcut bir otomasyon hesabını seçebilirsiniz. Güncelleştirme Paketi 35'inden önce Site Recovery, otomasyon hesabını varsayılan olarak oluşturmuştur. Bu seçeneği yalnızca bir VM için çoğaltmayı etkinleştirdiğinizde belirleyebilirsiniz. Çoğaltma etkinleştirilmiş bir VM için kullanılamaz. Seçtiğiniz ayar aynı kasada korunan tüm Azure VM'leri için geçerlidir.

Otomatik güncelleştirmeleri açmak için Azure VM'lerinizin yeniden başlatılması gerekmez veya devam eden çoğaltmayı etkilemez.

Otomasyon hesabındaki iş faturalaması, bir ay içinde kullanılan iş çalışma zamanı dakikalarının sayısını temel alır. İş yürütme işlemi her gün birkaç saniye ile yaklaşık bir dakika sürer ve ücretsiz birimler olarak kapsanır. Varsayılan olarak, aşağıdaki tabloda gösterildiği gibi otomasyon hesabı için 500 dakika ücretsiz birim olarak eklenir:

Ücretsiz birimler dahil (her ay) Fiyat
İş çalışma zamanı 500 dakika ₹0,14/dakika

Otomatik güncelleştirmeleri etkinleştir

Site Recovery'nin uzantı güncelleştirmelerini yönetmesinin birkaç yolu vardır:

Çoğaltmayı etkinleştirme adımının bir parçası olarak yönetme

VM görünümünden veya kurtarma hizmetleri kasasından başlayarak vm için çoğaltmayı etkinleştirdiğinizde, Site Recovery'nin Site Recovery uzantısı güncelleştirmelerini yönetmesine izin verebilir veya el ile yönetebilirsiniz.

Extension settings

Kasanın içindeki uzantı güncelleştirme ayarlarını değiştirme

  1. Kurtarma Hizmetleri kasasından Site Recovery Altyapısını Yönet'e >gidin.

  2. Azure Sanal Makineler> Extension Güncelleştirmesi Ayarlar> Site Recovery'nin yönetilmesine izin ver altında Açık'ı seçin.

    Uzantıyı el ile yönetmek için Kapalı'yı seçin.

    Önemli

    Site Recovery'nin yönetmesine izin ver'i seçtiğinizde, ayar kasadaki tüm VM'lere uygulanır.

  3. Kaydet'i seçin.

Extension update settings

Dekont

Her iki seçenek de güncelleştirmeleri yönetmek için kullanılan otomasyon hesabını size bildirir. Bu özelliği bir kasada ilk kez kullanıyorsanız, varsayılan olarak yeni bir otomasyon hesabı oluşturulur. Alternatif olarak, ayarı özelleştirebilir ve mevcut bir otomasyon hesabını seçebilirsiniz. Tanımlandıktan sonra, aynı kasada çoğaltmayı etkinleştirmek için sonraki tüm eylemler bu seçili otomasyon hesabını kullanır. Şu anda açılan menüde yalnızca kasayla aynı Kaynak Grubunda yer alan otomasyon hesapları listelenir.

Özel otomasyon hesabı için aşağıdaki betiği kullanın:

Önemli

Otomasyon hesabı bağlamında aşağıdaki betiği çalıştırın. Bu betik, kimlik doğrulama türü olarak Sistem Tarafından Atanan Yönetilen Kimlikler'i kullanmıştır.

param(
    [Parameter(Mandatory=$true)]
    [String] $VaultResourceId,
    [Parameter(Mandatory=$true)]
    [ValidateSet("Enabled",'Disabled')]
    [Alias("Enabled or Disabled")]
    [String] $AutoUpdateAction,
    [Parameter(Mandatory=$false)]
    [String] $AutomationAccountArmId
)
$SiteRecoveryRunbookName = "Modify-AutoUpdateForVaultForPatner"
$TaskId = [guid]::NewGuid().ToString()
$SubscriptionId = "00000000-0000-0000-0000-000000000000"
$AsrApiVersion = "2021-12-01"
$ArmEndPoint = "https://management.azure.com"
$AadAuthority = "https://login.windows.net/"
$AadAudience = "https://management.core.windows.net/"
$AzureEnvironment = "AzureCloud"
$Timeout = "160"
$AuthenticationType = "SystemAssignedIdentity"
function Throw-TerminatingErrorMessage
{
        Param
    (
        [Parameter(Mandatory=$true)]
        [String]
        $Message
        )
    throw ("Message: {0}, TaskId: {1}.") -f $Message, $TaskId
}
function Write-Tracing
{
        Param
    (
        [Parameter(Mandatory=$true)]
        [ValidateSet("Informational", "Warning", "ErrorLevel", "Succeeded", IgnoreCase = $true)]
                [String]
        $Level,
        [Parameter(Mandatory=$true)]
        [String]
        $Message,
            [Switch]
        $DisplayMessageToUser
        )
    Write-Output $Message
}
function Write-InformationTracing
{
        Param
    (
        [Parameter(Mandatory=$true)]
        [String]
        $Message
        )
    Write-Tracing -Message $Message -Level Informational -DisplayMessageToUser
}
function ValidateInput()
{
    try
    {
        if(!$VaultResourceId.StartsWith("/subscriptions", [System.StringComparison]::OrdinalIgnoreCase))
        {
            $ErrorMessage = "The vault resource id should start with /subscriptions."
            throw $ErrorMessage
        }
        $Tokens = $VaultResourceId.SubString(1).Split("/")
        if(!($Tokens.Count % 2 -eq 0))
        {
            $ErrorMessage = ("Odd Number of tokens: {0}." -f $Tokens.Count)
            throw $ErrorMessage
        }
        if(!($Tokens.Count/2 -eq 4))
        {
            $ErrorMessage = ("Invalid number of resource in vault ARM id expected:4, actual:{0}." -f ($Tokens.Count/2))
            throw $ErrorMessage
        }
        if($AutoUpdateAction -ieq "Enabled" -and [string]::IsNullOrEmpty($AutomationAccountArmId))
        {
            $ErrorMessage = ("The automation account ARM id should not be null or empty when AutoUpdateAction is enabled.")
            throw $ErrorMessage
        }
    }
    catch
    {
        $ErrorMessage = ("ValidateInput failed with [Exception: {0}]." -f $_.Exception)
        Write-Tracing -Level ErrorLevel -Message $ErrorMessage -DisplayMessageToUser
        Throw-TerminatingErrorMessage -Message $ErrorMessage
    }
}
function Initialize-SubscriptionId()
{
    try
    {
        $Tokens = $VaultResourceId.SubString(1).Split("/")
        $Count = 0
                $ArmResources = @{}
        while($Count -lt $Tokens.Count)
        {
            $ArmResources[$Tokens[$Count]] = $Tokens[$Count+1]
            $Count = $Count + 2
        }
                return $ArmResources["subscriptions"]
    }
    catch
    {
        Write-Tracing -Level ErrorLevel -Message ("Initialize-SubscriptionId: failed with [Exception: {0}]." -f $_.Exception) -DisplayMessageToUser
        throw
    }
}
function Invoke-InternalRestMethod($Uri, $Headers, [ref]$Result)
{
    $RetryCount = 0
    $MaxRetry = 3
    do
    {
        try
        {
            $ResultObject = Invoke-RestMethod -Uri $Uri -Headers $Headers
            ($Result.Value) += ($ResultObject)
            break
        }
        catch
        {
            Write-InformationTracing ("Retry Count: {0}, Exception: {1}." -f $RetryCount, $_.Exception)
            $RetryCount++
            if(!($RetryCount -le $MaxRetry))
            {
                throw
            }
            Start-Sleep -Milliseconds 2000
        }
    }while($true)
}
function Invoke-InternalWebRequest($Uri, $Headers, $Method, $Body, $ContentType, [ref]$Result)
{
    $RetryCount = 0
    $MaxRetry = 3
    do
    {
        try
        {
            $ResultObject = Invoke-WebRequest -Uri $UpdateUrl -Headers $Header -Method 'PATCH' `
                -Body $InputJson  -ContentType "application/json" -UseBasicParsing
            ($Result.Value) += ($ResultObject)
            break
        }
        catch
        {
            Write-InformationTracing ("Retry Count: {0}, Exception: {1}." -f $RetryCount, $_.Exception)
            $RetryCount++
            if(!($RetryCount -le $MaxRetry))
            {
                throw
            }
            Start-Sleep -Milliseconds 2000
        }
    }while($true)
}
function Get-Header([ref]$Header, $AadAudience){
    try
    {
        $Header.Value['Content-Type'] = 'application\json'
        Write-InformationTracing ("The Authentication Type is system Assigned Identity based.")
        $endpoint = $env:IDENTITY_ENDPOINT
        $endpoint  
        $Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 
        $Headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER) 
        $Headers.Add("Metadata", "True")   
        $authenticationResult = Invoke-RestMethod -Method Get -Headers $Headers -Uri ($endpoint +'?resource=' +$AadAudience)
        $accessToken = $authenticationResult.access_token
        $Header.Value['Authorization'] = "Bearer " + $accessToken
        $Header.Value["x-ms-client-request-id"] = $TaskId + "/" + (New-Guid).ToString() + "-" + (Get-Date).ToString("u")
    }
    catch
    {
        $ErrorMessage = ("Get-BearerToken: failed with [Exception: {0}]." -f $_.Exception)
        Write-Tracing -Level ErrorLevel -Message $ErrorMessage -DisplayMessageToUser
        Throw-TerminatingErrorMessage -Message $ErrorMessage
    }
}
function Get-ProtectionContainerToBeModified([ref] $ContainerMappingList)
{
    try
    {
        Write-InformationTracing ("Get protection container mappings : {0}." -f $VaultResourceId)
        $ContainerMappingListUrl = $ArmEndPoint + $VaultResourceId + "/replicationProtectionContainerMappings" + "?api-version=" + $AsrApiVersion
        Write-InformationTracing ("Getting the bearer token and the header.")
        Get-Header ([ref]$Header) $AadAudience
        $Result = @()
        Invoke-InternalRestMethod -Uri $ContainerMappingListUrl -Headers $header -Result ([ref]$Result)
        $ContainerMappings = $Result[0]
        Write-InformationTracing ("Total retrieved container mappings: {0}." -f $ContainerMappings.Value.Count)
        foreach($Mapping in $ContainerMappings.Value)
        {
            if(($Mapping.properties.providerSpecificDetails -eq $null) -or ($Mapping.properties.providerSpecificDetails.instanceType -ine "A2A"))
            {
                Write-InformationTracing ("Mapping properties: {0}." -f ($Mapping.properties))
                Write-InformationTracing ("Ignoring container mapping: {0} as the provider does not match." -f ($Mapping.Id))
                continue;
            }
            if($Mapping.Properties.State -ine "Paired")
            {
                Write-InformationTracing ("Ignoring container mapping: {0} as the state is not paired." -f ($Mapping.Id))
                continue;
            }
            Write-InformationTracing ("Provider specific details {0}." -f ($Mapping.properties.providerSpecificDetails))
            $MappingAutoUpdateStatus = $Mapping.properties.providerSpecificDetails.agentAutoUpdateStatus
            $MappingAutomationAccountArmId = $Mapping.properties.providerSpecificDetails.automationAccountArmId
            $MappingHealthErrorCount = $Mapping.properties.HealthErrorDetails.Count
            if($AutoUpdateAction -ieq "Enabled" -and
                ($MappingAutoUpdateStatus -ieq "Enabled") -and
                ($MappingAutomationAccountArmId -ieq $AutomationAccountArmId) -and
                ($MappingHealthErrorCount -eq 0))
            {
                Write-InformationTracing ("Provider specific details {0}." -f ($Mapping.properties))
                Write-InformationTracing ("Ignoring container mapping: {0} as the auto update is already enabled and is healthy." -f ($Mapping.Id))
                continue;
            }
            ($ContainerMappingList.Value).Add($Mapping.id)
        }
    }
    catch
    {
        $ErrorMessage = ("Get-ProtectionContainerToBeModified: failed with [Exception: {0}]." -f $_.Exception)
        Write-Tracing -Level ErrorLevel -Message $ErrorMessage -DisplayMessageToUser
        Throw-TerminatingErrorMessage -Message $ErrorMessage
    }
}
$OperationStartTime = Get-Date
$ContainerMappingList = New-Object System.Collections.Generic.List[System.String]
$JobsInProgressList = @()
$JobsCompletedSuccessList = @()
$JobsCompletedFailedList = @()
$JobsFailedToStart = 0
$JobsTimedOut = 0
$Header = @{}
$AzureRMProfile = Get-Module -ListAvailable -Name AzureRM.Profile | Select Name, Version, Path
$AzureRmProfileModulePath = Split-Path -Parent $AzureRMProfile.Path
Add-Type -Path (Join-Path $AzureRmProfileModulePath "Microsoft.IdentityModel.Clients.ActiveDirectory.dll")
$Inputs = ("Tracing inputs VaultResourceId: {0}, Timeout: {1}, AutoUpdateAction: {2}, AutomationAccountArmId: {3}." -f $VaultResourceId, $Timeout, $AutoUpdateAction, $AutomationAccountArmId)
Write-Tracing -Message $Inputs -Level Informational -DisplayMessageToUser
$CloudConfig = ("Tracing cloud configuration ArmEndPoint: {0}, AadAuthority: {1}, AadAudience: {2}." -f $ArmEndPoint, $AadAuthority, $AadAudience)
Write-Tracing -Message $CloudConfig -Level Informational -DisplayMessageToUser
ValidateInput
$SubscriptionId = Initialize-SubscriptionId
Get-ProtectionContainerToBeModified ([ref]$ContainerMappingList)
$Input = @{
  "properties"= @{
    "providerSpecificInput"= @{
        "instanceType" = "A2A"
        "agentAutoUpdateStatus" = $AutoUpdateAction
        "automationAccountArmId" = $AutomationAccountArmId
        "automationAccountAuthenticationType" = $AuthenticationType
    }
  }
}
$InputJson = $Input |  ConvertTo-Json
if ($ContainerMappingList.Count -eq 0)
{
    Write-Tracing -Level Succeeded -Message ("Exiting as there are no container mappings to be modified.") -DisplayMessageToUser
    exit
}
Write-InformationTracing ("Container mappings to be updated has been retrieved with count: {0}." -f $ContainerMappingList.Count)
try
{
    Write-InformationTracing ("Start the modify container mapping jobs.")
    ForEach($Mapping in $ContainerMappingList)
    {
    try {
            $UpdateUrl = $ArmEndPoint + $Mapping + "?api-version=" + $AsrApiVersion
            Get-Header ([ref]$Header) $AadAudience
            $Result = @()
            Invoke-InternalWebRequest -Uri $UpdateUrl -Headers $Header -Method 'PATCH' `
                -Body $InputJson  -ContentType "application/json" -Result ([ref]$Result)
            $Result = $Result[0]
            $JobAsyncUrl = $Result.Headers['Azure-AsyncOperation']
            Write-InformationTracing ("The modify container mapping job invoked with async url: {0}." -f $JobAsyncUrl)
            $JobsInProgressList += $JobAsyncUrl;
            # Rate controlling the set calls to maximum 60 calls per minute.
            # ASR throttling for set calls is 200 in 1 minute.
            Start-Sleep -Milliseconds 1000
        }
        catch{
            Write-InformationTracing ("The modify container mappings job creation failed for: {0}." -f $Ru)
            Write-InformationTracing $_
            $JobsFailedToStart++
        }
    }
    Write-InformationTracing ("Total modify container mappings has been initiated: {0}." -f $JobsInProgressList.Count)
}
catch
{
    $ErrorMessage = ("Modify container mapping jobs failed with [Exception: {0}]." -f $_.Exception)
    Write-Tracing -Level ErrorLevel -Message $ErrorMessage -DisplayMessageToUser
    Throw-TerminatingErrorMessage -Message $ErrorMessage
}
try
{
    while($JobsInProgressList.Count -ne 0)
    {
        Sleep -Seconds 30
        $JobsInProgressListInternal = @()
        ForEach($JobAsyncUrl in $JobsInProgressList)
        {
            try
            {
                Get-Header ([ref]$Header) $AadAudience
                $Result = Invoke-RestMethod -Uri $JobAsyncUrl -Headers $header
                $JobState = $Result.Status
                if($JobState -ieq "InProgress")
                {
                    $JobsInProgressListInternal += $JobAsyncUrl
                }
                elseif($JobState -ieq "Succeeded" -or `
                    $JobState -ieq "PartiallySucceeded" -or `
                    $JobState -ieq "CompletedWithInformation")
                {
                    Write-InformationTracing ("Jobs succeeded with state: {0}." -f $JobState)
                    $JobsCompletedSuccessList += $JobAsyncUrl
                }
                else
                {
                    Write-InformationTracing ("Jobs failed with state: {0}." -f $JobState)
                    $JobsCompletedFailedList += $JobAsyncUrl
                }
            }
            catch
            {
                Write-InformationTracing ("The get job failed with: {0}. Ignoring the exception and retrying the next job." -f $_.Exception)
                # The job on which the tracking failed, will be considered in progress and tried again later.
                $JobsInProgressListInternal += $JobAsyncUrl
            }
            # Rate controlling the get calls to maximum 120 calls each minute.
            # ASR throttling for get calls is 10000 in 60 minutes.
            Start-Sleep -Milliseconds 500
        }
        Write-InformationTracing ("Jobs remaining {0}." -f $JobsInProgressListInternal.Count)
        $CurrentTime = Get-Date
        if($CurrentTime -gt $OperationStartTime.AddMinutes($Timeout))
        {
            Write-InformationTracing ("Tracing modify cloud pairing jobs has timed out.")
            $JobsTimedOut = $JobsInProgressListInternal.Count
            $JobsInProgressListInternal = @()
        }
        $JobsInProgressList = $JobsInProgressListInternal
    }
}
catch
{
    $ErrorMessage = ("Tracking modify cloud pairing jobs failed with [Exception: {0}]." -f $_.Exception)
    Write-Tracing -Level ErrorLevel -Message $ErrorMessage  -DisplayMessageToUser
    Throw-TerminatingErrorMessage -Message $ErrorMessage
}
Write-InformationTracing ("Tracking modify cloud pairing jobs completed.")
Write-InformationTracing ("Modify cloud pairing jobs success: {0}." -f $JobsCompletedSuccessList.Count)
Write-InformationTracing ("Modify cloud pairing jobs failed: {0}." -f $JobsCompletedFailedList.Count)
Write-InformationTracing ("Modify cloud pairing jobs failed to start: {0}." -f $JobsFailedToStart)
Write-InformationTracing ("Modify cloud pairing jobs timedout: {0}." -f $JobsTimedOut)
if($JobsTimedOut -gt  0)
{
    $ErrorMessage = "One or more modify cloud pairing jobs has timedout."
    Write-Tracing -Level ErrorLevel -Message ($ErrorMessage)
    Throw-TerminatingErrorMessage -Message $ErrorMessage
}
elseif($JobsCompletedSuccessList.Count -ne $ContainerMappingList.Count)
{
    $ErrorMessage = "One or more modify cloud pairing jobs failed."
    Write-Tracing -Level ErrorLevel -Message ($ErrorMessage)
    Throw-TerminatingErrorMessage -Message $ErrorMessage
}
Write-Tracing -Level Succeeded -Message ("Modify cloud pairing completed.") -DisplayMessageToUser

Güncelleştirmeleri el ile yönetme

  1. VM'lerinizde yüklü Ulaşım hizmeti için yeni güncelleştirmeler varsa şu bildirimi görürsünüz: Yeni Site Recovery çoğaltma aracısı güncelleştirmesi kullanılabilir. Yüklemek için tıklayın.

    Replicated items window

  2. VM seçim sayfasını açmak için bildirimi seçin.

  3. Yükseltmek istediğiniz VM'leri seçin ve ardından Tamam'ı seçin. Seçilen her VM için Güncelleştirme Ulaşım hizmeti başlatılır.

    Replicated items VM list

Bilinen sorunlar ve sorun giderme

Otomatik güncelleştirmelerle ilgili bir sorun varsa kasa panosundaki Yapılandırma sorunları altında bir hata bildirimi görürsünüz.

Otomatik güncelleştirmeleri etkinleştiremiyorsanız aşağıdaki yaygın hatalara ve önerilen eylemlere bakın:

  • Hata: Azure Farklı Çalıştır hesabı (hizmet sorumlusu) oluşturma ve hizmet sorumlusuna Katkıda Bulunan rolü verme izniniz yok.

    Önerilen eylem: Oturum açmış hesabın Katkıda Bulunan olarak atandığından emin olun ve yeniden deneyin. İzin atama hakkında daha fazla bilgi için, Nasıl yapılır: Kaynaklara erişebilen bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturmak için portalı kullanma makalesinin gerekli izinler bölümüne bakın.

    Otomatik güncelleştirmeleri etkinleştirdikten sonra sorunların çoğunu düzeltmek için Onar'ı seçin. Onarım düğmesi kullanılamıyorsa uzantı güncelleştirme ayarları bölmesinde görüntülenen hata iletisine bakın.

    Site Recovery service repair button in extension update settings

  • Hata: Farklı Çalıştır hesabının kurtarma hizmetleri kaynağına erişme izni yok.

    Önerilen eylem: Farklı Çalıştır hesabını silin ve yeniden oluşturun. Alternatif olarak, Otomasyon Farklı Çalıştır hesabının Microsoft Entra uygulamasının kurtarma hizmetleri kaynağına erişebildiğinden emin olun.

  • Hata: Farklı Çalıştır hesabı bulunamadı. Bunlardan biri silindi veya oluşturulmadı - Microsoft Entra Uygulaması, Hizmet Sorumlusu, Rol, Otomasyon Sertifikası varlığı, Otomasyon Bağlan ion varlığı veya Parmak İzi Sertifika ve Bağlan ion arasında aynı değil.

    Önerilen eylem: Farklı Çalıştır hesabını silin ve yeniden oluşturun.

  • Hata: Otomasyon hesabı tarafından kullanılan Azure Farklı Çalıştır Sertifikasının süresi dolmak üzere.

    Farklı Çalıştır hesabı için oluşturulan otomatik olarak imzalanan sertifikanın süresi oluşturma tarihinden itibaren bir yıl sonra dolar. Sertifikayı süresi dolmadan önce herhangi bir zamanda yenileyebilirsiniz. E-posta bildirimlerine kaydoldıysanız, sizin tarafınızdan bir eylem gerektiğinde de e-posta alırsınız. Bu hata, süre sonu tarihinden iki ay önce gösterilir ve sertifikanın süresi dolduysa kritik bir hataya dönüşür. Sertifikanın süresi dolduktan sonra, siz aynı yenilemeyi bulana kadar otomatik güncelleştirme çalışmaz.

    Önerilen eylem: Bu sorunu çözmek için Onar'ı ve ardından Sertifikayı Yenile'yi seçin.

    renew-cert

    Dekont

    Sertifikayı yeniledikten sonra geçerli durumu görüntülemek için sayfayı yenileyin.

Sonraki adımlar

Otomasyon hesaplarının kimlik doğrulama türünü Yönetilen Kimlikler'e geçirme hakkında daha fazla bilgi edinin.