Spolehlivost ve službě Virtual Machines

Tento článek obsahuje specifická doporučení pro spolehlivost virtuálních počítačů a podrobné informace o regionální odolnosti virtuálních počítačů pomocí zón dostupnosti a zotavení po havárii napříč oblastmi a kontinuitě podnikových procesů.

Přehled spolehlivosti architektury v Azure najdete v tématu Spolehlivost Azure.

Doporučení pro spolehlivost

Tato část obsahuje doporučení pro dosažení odolnosti a dostupnosti. Každé doporučení spadá do jedné ze dvou kategorií:

  • Položky stavu pokrývají oblasti, jako jsou položky konfigurace a správnou funkci hlavních komponent, které tvoří vaši úlohu Azure, jako jsou nastavení konfigurace prostředků Azure, závislosti na jiných službách atd.

  • Rizikové položky pokrývají oblasti, jako jsou požadavky na dostupnost a obnovení, testování, monitorování, nasazení a další položky, které v případě nevyřešeného stavu zvyšují pravděpodobnost problémů v prostředí.

Matice priorit doporučení pro spolehlivost

Každé doporučení je označeno v souladu s následující maticí priority:

Image Priorita Popis
Nejvyšší Je potřeba okamžitě opravit.
střední Oprava do 3-6 měsíců.
Nejnižší Je potřeba zkontrolovat.

Souhrn doporučení pro spolehlivost

Kategorie Priorita Doporučení
Vysoká dostupnost Spouštěníprodukčníchch
Nasazení virtuálních počítačů napříč zónami dostupnosti nebo použití sady Virtual Machine Scale Sets Flex se zónami
Migrace virtuálních počítačů pomocí skupin dostupnosti na Virtual Machine Scale Sets Flex
Použití spravovaných disků pro disky virtuálních počítačů
Zotavení po havárii Replikace virtuálních počítačů pomocí Azure Site Recovery
Zálohování dat na virtuálních počítačích pomocí služby Azure Backup
Výkon Hostování dat aplikace a databáze na datovém disku
Produkční virtuální počítače by měly používat disky SSD
Povolení akcelerovaných síťových služeb (AccelNet)
Pokud je povolená síť AccelNet, musíte ručně aktualizovat jednotku síťové karty hostovaného operačního systému.
Správa VM-9: Sledování virtuálních počítačů v zastaveném stavu
Použití konfigurací údržby pro virtuální počítač
Zabezpečení Virtuální počítače by neměly mít přímo přidruženou veřejnou IP adresu.
K virtuálním síťovým rozhraním je přidružená skupina zabezpečení sítě.
Předávání IP adres by mělo být povolené jenom pro síťová virtuální zařízení.
Síťový přístup k disku virtuálního počítače by měl být nastavený na Zakázat veřejný přístup a povolit privátní přístup.
Ve výchozím nastavení povolte šifrování disků a šifrování neaktivních uložených dat.
Sítě Servery DNS zákazníka by měly být nakonfigurované na úrovni virtuální sítě.
Úložiště Sdílené disky by měly být povolené jenom na clusterovaných serverech.
Splnění předpisů Ujistěte se, že vaše virtuální počítače vyhovují zásadám Azure.
Monitorování Povolení Přehledy virtuálního počítače
Konfigurace nastavení diagnostiky pro všechny prostředky Azure

Vysoká dostupnost

Spouštění produkčních úloh na dvou nebo více virtuálních počítačích pomocí sady virtual machine Scale Sets Flex

Pokud chcete chránit úlohy aplikací před výpadky kvůli dočasné nedostupnosti disku nebo virtuálního počítače, doporučujeme spouštět produkční úlohy na dvou nebo více virtuálních počítačích pomocí sady Virtual Machine Scale Sets Flex.

Ke spouštění produkčních úloh můžete použít:

  • Škálovací sady virtuálních počítačů Azure pro vytvoření a správu skupiny virtuálních počítačů s vyrovnáváním zatížení Počet instancí virtuálních počítačů se může automaticky zvyšovat nebo snižovat v reakci na poptávku nebo podle určeného rozvrhu.

  • Zóny dostupnosti. Další informace o zónách dostupnosti a virtuálních počítačích najdete v tématu Podpora zón dostupnosti.

// Azure Resource Graph Query
// Find all VMs that are not associated with a VMSS Flex instance
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where isnull(properties.virtualMachineScaleSet.id)
| project recommendationId="vm-1", name, id, tags

Nasazení virtuálních počítačů napříč zónami dostupnosti nebo použití sady Virtual Machine Scale Sets Flex se zónami*

Při vytváření virtuálních počítačů používejte zóny dostupnosti k ochraně aplikací a dat před nepravděpodobně selháním datacentra. Další informace o zónách dostupnosti pro virtuální počítače najdete v tomto dokumentu v části Podpora zón dostupnosti.

Informace o tom, jak povolit podporu zón dostupnosti při vytváření virtuálního počítače, najdete v tématu Vytvoření podpory zóny dostupnosti.

Informace o tom, jak migrovat stávající virtuální počítače do podpory zóny dostupnosti, najdete v tématu Migrace na podporu zóny dostupnosti.

// Azure Resource Graph Query
// Find all VMs that are not assigned to a Zone
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where isnull(zones)
| project recommendationId="vm-2", name, id, tags, param1="No Zone"

Migrace virtuálních počítačů pomocí skupin dostupnosti na Virtual Machine Scale Sets Flex

Modernizujte své úlohy migrací z virtuálních počítačů na Flexibilní škálovací sady virtuálních počítačů.

Pomocí sady Virtual Machine Scale Sets Flex můžete virtuální počítače nasadit jedním ze dvou způsobů:

  • Napříč zónami
  • Ve stejné zóně, ale napříč doménami selhání (FD) a automatickými aktualizacemi domén (UD).

V N-vrstvé aplikaci se doporučuje umístit každou aplikační vrstvu do vlastní škálovací sady virtuálních počítačů Flex.

// Azure Resource Graph Query
// Find all VMs using Availability Sets
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where isnotnull(properties.availabilitySet)
| project recommendationId = "vm-3", name, id, tags, param1=strcat("availabilitySet: ",properties.availabilitySet.id)

Použití spravovaných disků pro disky virtuálních počítačů*

Pokud chcete zajistit lepší spolehlivost virtuálních počítačů ve skupině dostupnosti, použijte spravované disky. Spravované disky jsou dostatečně izolované od sebe, aby se zabránilo kritickým bodům selhání. Spravované disky se také nevztahují na limity IOPS virtuálních pevných disků vytvořených v účtu úložiště.

// Azure Resource Graph Query
// Find all VMs that are not using Managed Disks
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where isnull(properties.storageProfile.osDisk.managedDisk)
| project recommendationId = "vm-5", name, id, tags

Zotavení po havárii

Replikace virtuálních počítačů pomocí Azure Site Recovery

Při replikaci virtuálních počítačů Azure pomocí Site Recovery se všechny disky virtuálních počítačů průběžně replikují do cílové oblasti asynchronně. Body obnovení se vytvářejí každých několik minut, což poskytuje cíl bodu obnovení (RPO) v pořadí minut. Postupy zotavení po havárii můžete provádět tolikrát, kolikrát chcete, aniž by to mělo vliv na produkční aplikaci nebo probíhající replikaci.

Informace o spuštění postupu zotavení po havárii najdete v tématu Spuštění testovacího převzetí služeb při selhání.

// Azure Resource Graph Query
// Find all VMs that do NOT have replication with ASR enabled
// Run query to see results.
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, id, tags
| join kind=leftouter (
    recoveryservicesresources
    | where type =~ 'Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems'
    | where properties.providerSpecificDetails.dataSourceInfo.datasourceType =~ 'AzureVm'
    | project id=properties.providerSpecificDetails.dataSourceInfo.resourceId
    | extend name=strcat_array(array_slice(split(id, '/'), 8, -1), '/')
) on name
| where isnull(id1)
| project-away id1
| project-away name1
| project recommendationId = "vm-4", name, id, tags
| order by id asc

Zálohování dat na virtuálních počítačích pomocí služby Azure Backup

Služba Azure Backup poskytuje jednoduchá, zabezpečená a cenově výhodná řešení pro zálohování vašich dat a jejich obnovení z cloudu Microsoft Azure. Další informace najdete v tématu Co je služba Azure Backup.

// Azure Resource Graph Query
// Find all VMs that do NOT have Backup enabled
// Run query to see results.
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, id, tags
| join kind=leftouter (
    recoveryservicesresources
    | where type =~ 'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems'
    | where properties.dataSourceInfo.datasourceType =~ 'Microsoft.Compute/virtualMachines'
    | project idBackupEnabled=properties.sourceResourceId
    | extend name=strcat_array(array_slice(split(idBackupEnabled, '/'), 8, -1), '/')
) on name
| where isnull(idBackupEnabled)
| project-away idBackupEnabled
| project-away name1
| project recommendationId = "vm-7", name, id, tags
| order by id asc

Výkon

Hostování dat aplikace a databáze na datovém disku

Datový disk je spravovaný disk, který je připojený k virtuálnímu počítači. Datový disk použijte k ukládání dat aplikací nebo jiných dat, která potřebujete zachovat. Datové disky jsou zaregistrované jako jednotky SCSI a jsou označené písmenem, které zvolíte. Hostování dat na datovém disku usnadňuje zálohování nebo obnovení dat. Disk můžete také migrovat, aniž byste museli přesouvat celý virtuální počítač a operační systém. Můžete také vybrat jinou skladovou položku disku s jiným typem, velikostí a výkonem, které splňují vaše požadavky. Další informace o datových discích najdete v tématu Datové disky.

// Azure Resource Graph Query
// Find all VMs that only have OS Disk
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where array_length(properties.storageProfile.dataDisks) < 1
| project recommendationId = "vm-6", name, id, tags

Produkční virtuální počítače by měly používat disky SSD

Disky SSD úrovně Premium nabízejí podporu vysoce výkonných disků s nízkou latencí pro aplikace náročné na vstupně-výstupní operace a produkční úlohy. Disky SSD úrovně Standard jsou nákladově efektivní možností úložiště optimalizovanou pro úlohy, které potřebují konzistentní výkon na nižších úrovních IOPS.

Doporučuje se:

  • Disky HDD úrovně Standard používejte pro scénáře vývoje/testování a méně důležité úlohy s nejnižšími náklady.
  • Místo disků HDD úrovně Standard používejte disky SSD úrovně Premium s virtuálními počítači podporujícími premium. Pro každý virtuální počítač s jednou instancí využívající službu Premium Storage pro všechny disky operačního systému a datové disky azure zaručuje připojení virtuálního počítače minimálně 99,9 %.

Pokud chcete upgradovat z hdd úrovně Standard na disky SSD úrovně Premium, zvažte následující problémy:

  • Upgrade vyžaduje restartování virtuálního počítače a dokončení tohoto procesu trvá 3 až 5 minut.
  • Pokud jsou virtuální počítače nepostradatelné pro produkční virtuální počítače, vyhodnoťte vylepšenou dostupnost oproti nákladům na disky Premium.

Další informace o spravovaných discích a typech disků Azure najdete v tématu Typy spravovaných disků Azure.

// Azure Resource Graph Query
// Find all disks with StandardHDD sku attached to VMs
Resources
| where type =~ 'Microsoft.Compute/disks'
| where sku.name == 'Standard_LRS' and sku.tier == 'Standard'
| where managedBy != ""
| project recommendationId = "vm-8", name, id, tags, param1=strcat("managedBy: ", managedBy)

Povolení akcelerovaných síťových služeb (AccelNet)

AccelNet umožňuje virtualizaci rozhraní SR-IOV (Single Root I/O Virtualization) pro virtuální počítač, což výrazně zlepšuje výkon sítě. Tato cesta s vysokým výkonem obchází hostitele z cesty k datům, což snižuje latenci, zpoždění a využití procesoru u nejnáročnějších síťových úloh na podporovaných typech virtuálních počítačů.

Další informace o akcelerovaných síťových služeb najdete v tématu Akcelerované síťové služby.

// Azure Resource Graph Query
// Find all VM NICs that do not have Accelerated Networking enabled
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| mv-expand nic = properties.networkProfile.networkInterfaces
| project name, id, tags, lowerCaseNicId = tolower(nic.id), vmSize = tostring(properties.hardwareProfile.vmSize)
| join kind = inner (
    resources
    | where type =~ 'Microsoft.Network/networkInterfaces'
    | where properties.enableAcceleratedNetworking == false
    | project nicName = split(id, "/")[8], lowerCaseNicId = tolower(id)
    )
    on lowerCaseNicId
| summarize nicNames = make_set(nicName) by name, id, tostring(tags), vmSize
| extend param1 = strcat("NicName: ", strcat_array(nicNames, ", ")), param2 = strcat("VMSize: ", vmSize)
| project recommendationId = "vm-10", name, id, tags, param1, param2
| order by id asc

Pokud je povolená síť AccelNet, musíte ovladač síťové karty hostovaného operačního systému aktualizovat ručně.

Pokud je povolená síť AccelNet, výchozí rozhraní služby Azure Virtual Network v hostovaném systému se nahradí rozhraním Mellanox. V důsledku toho je ovladač síťové karty guestOS poskytován od společnosti Mellanox, která je dodavatelem třetí strany. I když se image z Marketplace spravované Microsoftem nabízejí s nejnovější verzí ovladačů Mellanox, po nasazení virtuálního počítače je potřeba ovladač síťové karty HostOS aktualizovat ručně každých šest měsíců.

// cannot-be-validated-with-arg

Správa

Kontrola virtuálních počítačů v zastaveném stavu

Instance virtuálních počítačů procházejí různými stavy, včetně stavů zřizování a napájení. Pokud je virtuální počítač v zastaveném stavu, může na virtuální počítač docházet k problému nebo už není nutný a je možné ho odebrat, aby se snížily náklady.

// Azure Resource Graph Query
// Find all VMs that are NOT running
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where properties.extended.instanceView.powerState.displayStatus != 'VM running'
| project recommendationId = "vm-9", name, id, tags

Použití konfigurací údržby pro virtuální počítač

Pokud chcete zajistit, aby se aktualizace nebo přerušení virtuálních počítačů prováděly v plánovaném časovém rámci, naplánujte a spravujte aktualizace pomocí nastavení konfigurace údržby. Další informace o správě aktualizací virtuálních počítačů pomocí konfigurací údržby najdete v tématu Správa aktualizací virtuálních počítačů pomocí konfigurací údržby.

// Azure Resource Graph Query
// Find VMS that do not have maintenance configuration assigned
Resources
| extend resourceId = tolower(id)
| project name, location, type, id, tags, resourceId, properties
| where type =~ 'Microsoft.Compute/virtualMachines'
| join kind=leftouter (
maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| project planName = name, type, maintenanceProps = properties
| extend resourceId = tostring(maintenanceProps.resourceId)
) on resourceId
| where isnull(maintenanceProps)
| project recommendationId = "vm-22",name, id, tags
| order by id asc

Zabezpečení

Virtuální počítače by neměly mít přímo přidruženou veřejnou IP adresu.

Pokud virtuální počítač vyžaduje odchozí připojení k internetu, doporučuje se použít službu NAT Gateway nebo Azure Firewall. NaT Gateway nebo Azure Firewall pomáhají zvýšit zabezpečení a odolnost služby, protože obě služby mají vyšší dostupnost a porty SNAT (Source Network Address Translation). Pro příchozí připojení k internetu se doporučuje použít řešení vyrovnávání zatížení, jako je Azure Load Balancer a Application Gateway.

// Azure Resource Graph Query
// Find all VMs with PublicIPs directly associated with them
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where isnotnull(properties.networkProfile.networkInterfaces)
| mv-expand nic=properties.networkProfile.networkInterfaces
| project name, id, tags, nicId = nic.id
| extend nicId = tostring(nicId)
| join kind=inner (
    Resources
    | where type =~ 'Microsoft.Network/networkInterfaces'
    | where isnotnull(properties.ipConfigurations)
    | mv-expand ipconfig=properties.ipConfigurations
    | extend publicIp = tostring(ipconfig.properties.publicIPAddress.id)
    | where publicIp != ""
    | project name, nicId = tostring(id), publicIp
) on nicId
| project recommendationId = "vm-12", name, id, tags
| order by id asc

Síťová rozhraní virtuálních počítačů mají přidruženou skupinu zabezpečení sítě (NSG).*

Doporučujeme přidružit skupinu zabezpečení sítě k podsíti nebo síťovému rozhraní, ale ne obojí. Vzhledem k tomu, že pravidla ve skupině zabezpečení sítě přidružené k podsíti můžou kolidovat s pravidly ve skupině zabezpečení sítě přidružené k síťovému rozhraní, můžete mít neočekávané problémy s komunikací, které vyžadují řešení potíží. Další informace najdete v tématu Provoz uvnitř podsítě.

// Azure Resource Graph Query
// Provides a list of virtual machines and associated NICs that do have an NSG associated to them and also an NSG associated to the subnet.
Resources
| where type =~ 'Microsoft.Network/networkInterfaces'
| where isnotnull(properties.networkSecurityGroup)
| mv-expand ipConfigurations = properties.ipConfigurations, nsg = properties.networkSecurityGroup
| project nicId = tostring(id), subnetId = tostring(ipConfigurations.properties.subnet.id), nsgName=split(nsg.id, '/')[8]
| parse kind=regex subnetId with '/virtualNetworks/' virtualNetwork '/subnets/' subnet
    | join kind=inner (
        Resources
        | where type =~ 'Microsoft.Network/NetworkSecurityGroups' and isnotnull(properties.subnets)
        | project name, resourceGroup, subnet=properties.subnets
        | mv-expand subnet
        | project subnetId=tostring(subnet.id)
    ) on subnetId
    | project nicId
| join kind=leftouter (
    Resources
    | where type =~ 'Microsoft.Compute/virtualMachines'
    | where isnotnull(properties.networkProfile.networkInterfaces)
    | mv-expand nic=properties.networkProfile.networkInterfaces
    | project vmName = name, vmId = id, tags, nicId = nic.id, nicName=split(nic.id, '/')[8]
    | extend nicId = tostring(nicId)
) on nicId
| project recommendationId = "vm-13", name=vmName, id = vmId, tags, param1 = strcat("nic-name=", nicName)

Předávání IP adres by mělo být povolené jenom pro síťová virtuální zařízení.

Předávání IP umožňuje síťovému rozhraní virtuálního počítače:

  • Příjem síťového provozu, který není určený pro jednu z IP adres přiřazených k žádné konfiguraci PROTOKOLU IP přiřazené k síťovému rozhraní.

  • Odesílat síťový provoz s jinou zdrojovou IP adresou, než je ta, která je přiřazená k jedné z konfigurací IP adres síťového rozhraní.

Nastavení předávání IP musí být povolené pro každé síťové rozhraní připojené k virtuálnímu počítači, které přijímá přenosy, které se mají předávat. Virtuální počítač může směrovat provoz bez ohledu na to, jestli má více síťových rozhraní, nebo jedno síťové rozhraní připojené k němu. Zatímco předávání IP je nastavení Azure, virtuální počítač musí také spouštět aplikaci, která dokáže směrovat provoz, jako je brána firewall, optimalizace sítě WAN a aplikace pro vyrovnávání zatížení.

Informace o povolení nebo zakázání předávání IP najdete v tématu Povolení nebo zakázání předávání IP.

// Azure Resource Graph Query
// Find all VM NICs that have IPForwarding enabled. This feature is usually only required for Network Virtual Appliances
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where isnotnull(properties.networkProfile.networkInterfaces)
| mv-expand nic=properties.networkProfile.networkInterfaces
| project name, id, tags, nicId = nic.id
| extend nicId = tostring(nicId)
| join kind=inner (
    Resources
    | where type =~ 'Microsoft.Network/networkInterfaces'
    | where properties.enableIPForwarding == true
    | project nicId = tostring(id)
) on nicId
| project recommendationId = "vm-14", name, id, tags
| order by id asc

Síťový přístup k disku virtuálního počítače by měl být nastavený na Zakázat veřejný přístup a povolit privátní přístup.

Doporučuje se nastavit přístup k síti disků virtuálního počítače na možnost Zakázat veřejný přístup a povolit privátní přístup a vytvořit privátní koncový bod. Informace o vytvoření privátního koncového bodu najdete v tématu Vytvoření privátního koncového bodu.

// Azure Resource Graph Query
// Find all Disks with "Enable public access from all networks" enabled
resources
| where type =~ 'Microsoft.Compute/disks'
| where properties.publicNetworkAccess == "Enabled"
| project id, name, tags, lowerCaseDiskId = tolower(id)
| join kind = leftouter (
    resources
    | where type =~ 'Microsoft.Compute/virtualMachines'
    | project osDiskVmName = name, lowerCaseOsDiskId = tolower(properties.storageProfile.osDisk.managedDisk.id)
    | join kind = fullouter (
        resources
        | where type =~ 'Microsoft.Compute/virtualMachines'
        | mv-expand dataDisks = properties.storageProfile.dataDisks
        | project dataDiskVmName = name, lowerCaseDataDiskId = tolower(dataDisks.managedDisk.id)
        )
        on $left.lowerCaseOsDiskId == $right.lowerCaseDataDiskId
    | project lowerCaseDiskId = coalesce(lowerCaseOsDiskId, lowerCaseDataDiskId), vmName = coalesce(osDiskVmName, dataDiskVmName)
    )
    on lowerCaseDiskId
| summarize vmNames = make_set(vmName) by name, id, tostring(tags)
| extend param1 = iif(isempty(vmNames[0]), "VMName: n/a", strcat("VMName: ", strcat_array(vmNames, ", ")))
| project recommendationId = "vm-17", name, id, tags, param1
| order by id asc

Ve výchozím nastavení povolte šifrování disků a šifrování neaktivních uložených dat.

Pro spravované disky je k dispozici několik typů šifrování, včetně služby Azure Disk Encryption (ADE), šifrování na straně serveru (SSE) a šifrování na hostiteli.

  • Azure Disk Encryption přispívá k zabezpečení a ochraně vašich dat, aby byly splněny závazky organizace související se zabezpečením a dodržováním předpisů.
  • Šifrování na straně serveru Azure Disk Storage (označované také jako šifrování neaktivních uložených dat nebo šifrování azure Storage) automaticky šifruje data uložená na spravovaných discích Azure (disky s operačním systémem a datovými disky) při zachování v clusterech úložiště.
  • Šifrování v hostiteli zajišťuje, že data uložená na hostiteli virtuálního počítače hostujícího váš virtuální počítač jsou zašifrovaná v klidovém stavu a toky šifrované do clusterů úložiště.
  • Důvěrné šifrování disků sváže šifrovací klíče disku s čipem TPM virtuálního počítače a zpřístupní chráněný obsah disku jenom virtuálnímu počítači.

Další informace o možnostech šifrování spravovaných disků najdete v tématu Přehled možností šifrování spravovaných disků.

// under-development

Sítě

Servery DNS by měly být nakonfigurované na úrovni virtuální sítě.

Nakonfigurujte server DNS ve virtuální síti, aby se zabránilo nekonzistence překladu názvů v celém prostředí. Další informace o překladu ip adres pro prostředky ve virtuálních sítích Azure najdete v tématu Překlad názvů virtuálních počítačů a cloudových služeb.

// Azure Resource Graph Query
// Find all VM NICs that have DNS Server settings configured in any of the NICs
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where isnotnull(properties.networkProfile.networkInterfaces)
| mv-expand nic=properties.networkProfile.networkInterfaces
| project name, id, tags, nicId = nic.id
| extend nicId = tostring(nicId)
| join kind=inner (
    Resources
    | where type =~ 'Microsoft.Network/networkInterfaces'
    | project name, id, dnsServers = properties.dnsSettings.dnsServers
    | extend hasDns = array_length(dnsServers) >= 1
    | where hasDns != 0
    | project name, nicId = tostring(id)
) on nicId
| project recommendationId = "vm-15", name, id, tags
| order by id asc

Úložiště

Sdílené disky by měly být povolené jenom na clusterovaných serverech.

Sdílené disky Azure jsou funkcí spravovaných disků Azure, které umožňují současně připojit spravovaný disk k více virtuálním počítačům. Když připojíte spravovaný disk k více virtuálním počítačům, můžete do Azure nasadit nové nebo migrovat existující clusterové aplikace. Sdílené disky by se měly používat jenom v situacích, kdy je disk přiřazený více než jednomu členu virtuálního počítače clusteru.

Další informace o povolení sdílených disků pro spravované disky najdete v tématu Povolení sdíleného disku.

// Azure Resource Graph Query
// Find all Disks configured to be Shared. This is not an indication of an issue, but if a disk with this configuration is assigned to two or more VMs without a proper disk control mechanism (like a WSFC) it can lead to data loss
resources
| where type =~ 'Microsoft.Compute/disks'
| where isnotnull(properties.maxShares)
| project id, name, tags, lowerCaseDiskId = tolower(id), diskState = tostring(properties.diskState)
| join kind = leftouter (
    resources
    | where type =~ 'Microsoft.Compute/virtualMachines'
    | project osDiskVmName = name, lowerCaseOsDiskId = tolower(properties.storageProfile.osDisk.managedDisk.id)
    | join kind = fullouter (
        resources
        | where type =~ 'Microsoft.Compute/virtualMachines'
        | mv-expand dataDisks = properties.storageProfile.dataDisks
        | project dataDiskVmName = name, lowerCaseDataDiskId = tolower(dataDisks.managedDisk.id)
        )
        on $left.lowerCaseOsDiskId == $right.lowerCaseDataDiskId
    | project lowerCaseDiskId = coalesce(lowerCaseOsDiskId, lowerCaseDataDiskId), vmName = coalesce(osDiskVmName, dataDiskVmName)
    )
    on lowerCaseDiskId
| summarize vmNames = make_set(vmName) by name, id, tostring(tags), diskState
| extend param1 = strcat("DiskState: ", diskState), param2 = iif(isempty(vmNames[0]), "VMName: n/a", strcat("VMName: ", strcat_array(vmNames, ", ")))
| project recommendationId = "vm-16", name, id, tags, param1, param2
| order by id asc

Splnění předpisů

Ujistěte se, že vaše virtuální počítače vyhovují zásadám Azure.

Je důležité udržovat virtuální počítač zabezpečený pro aplikace, které spouštíte. Zabezpečení virtuálních počítačů může zahrnovat jednu nebo více služeb a funkcí Azure, které pokrývají zabezpečený přístup k vašim virtuálním počítačům a zabezpečenému úložišti vašich dat. Další informace o tom, jak udržovat virtuální počítač a aplikace v bezpečí, najdete v tématu Řízení dodržování právních předpisů pro Azure Policy pro Azure Virtual Machines.

// Azure Resource Graph Query
// Find all VMs in "NonCompliant" state with Azure Policies
PolicyResources
| where type =~ "Microsoft.PolicyInsights/policyStates" and properties.resourceType =~ "Microsoft.Compute/virtualMachines" and properties.complianceState =~ "NonCompliant"
| project
    policyAssignmentName = properties.policyAssignmentName,
    policyDefinitionName = properties.policyDefinitionName,
    lowerCasePolicyDefinitionIdOfPolicyState = tolower(properties.policyDefinitionId),
    lowerCaseVmIdOfPolicyState = tolower(properties.resourceId)
| join kind = leftouter (
    PolicyResources
    | where type =~ "Microsoft.Authorization/policyDefinitions"
    | project lowerCasePolicyDefinitionId = tolower(id), policyDefinitionDisplayName = properties.displayName
    )
    on $left.lowerCasePolicyDefinitionIdOfPolicyState == $right.lowerCasePolicyDefinitionId
| project policyAssignmentName, policyDefinitionName, policyDefinitionDisplayName, lowerCaseVmIdOfPolicyState
| join kind = leftouter (
    Resources
    | where type =~ "Microsoft.Compute/virtualMachines"
    | project vmName = name, vmId = id, vmTags = tags, lowerCaseVmId = tolower(id)
    )
    on $left.lowerCaseVmIdOfPolicyState == $right.lowerCaseVmId
| extend
    param1 = strcat("AssignmentName: ", policyAssignmentName),
    param2 = strcat("DefinitionName: ", policyDefinitionDisplayName),  // Align to Azure portal's term.
    param3 = strcat("DefinitionID: ", policyDefinitionName)            // Align to Azure portal's term.
| project recommendationId = "vm-18", name = vmName, id = vmId, tags = vmTags, param1, param2, param3

Sledování

Povolení Přehledy virtuálního počítače

Povolte Přehledy virtuálních počítačů, abyste získali lepší přehled o stavu a výkonu virtuálního počítače. Virtuální počítač Přehledy poskytuje informace o výkonu a stavu virtuálních počítačů a škálovacích sad virtuálních počítačů monitorováním spuštěných procesů a závislostí na jiných prostředcích. Přehledy virtuálních počítačů vám můžou pomoct zajistit předvídatelný výkon a dostupnost důležitých aplikací tím, že identifikuje kritické body výkonu a problémy se sítí. Přehledy vám také může pomoct pochopit, jestli problém souvisí s jinými závislostmi.

// Azure Resource Graph Query
// Check for VMs without Azure Monitoring Agent extension installed, missing Data Collection Rule or Data Collection Rule without performance enabled.
Resources
| where type == 'microsoft.compute/virtualmachines'
| project idVm = tolower(id), name, tags
| join kind=leftouter (
    InsightsResources
    | where type =~ "Microsoft.Insights/dataCollectionRuleAssociations" and id has "Microsoft.Compute/virtualMachines"
    | project idDcr = tolower(properties.dataCollectionRuleId), idVmDcr = tolower(substring(id, 0, indexof(id, "/providers/Microsoft.Insights/dataCollectionRuleAssociations/"))))
on $left.idVm == $right.idVmDcr
| join kind=leftouter (
    Resources
    | where type =~ "Microsoft.Insights/dataCollectionRules"
    | extend
        isPerformanceEnabled = iif(properties.dataSources.performanceCounters contains "Microsoft-InsightsMetrics" and properties.dataFlows contains "Microsoft-InsightsMetrics", true, false),
        isMapEnabled = iif(properties.dataSources.extensions contains "Microsoft-ServiceMap" and properties.dataSources.extensions contains "DependencyAgent" and properties.dataFlows contains "Microsoft-ServiceMap", true, false)//,
    | where isPerformanceEnabled or isMapEnabled
    | project dcrName = name, isPerformanceEnabled, isMapEnabled, idDcr = tolower(id))
on $left.idDcr == $right.idDcr
| join kind=leftouter (
    Resources
        | where type == 'microsoft.compute/virtualmachines/extensions' and (name contains 'AzureMonitorWindowsAgent' or name contains 'AzureMonitorLinuxAgent')
        | extend idVmExtension = tolower(substring(id, 0, indexof(id, '/extensions'))), extensionName = name)
on $left.idVm == $right.idVmExtension
| where isPerformanceEnabled != 1 or (extensionName != 'AzureMonitorWindowsAgent' and extensionName != 'AzureMonitorLinuxAgent')
| project recommendationId = "vm-20", name, id = idVm, tags, param1 = strcat('MonitoringExtension:', extensionName), param2 = strcat('DataCollectionRuleId:', idDcr), param3 = strcat('isPerformanceEnabled:', isPerformanceEnabled)

Konfigurace nastavení diagnostiky pro všechny prostředky Azure

Metriky platformy se ve výchozím nastavení automaticky odesílají do metrik služby Azure Monitor a bez konfigurace. Protokoly platformy poskytují podrobné informace o diagnostice a auditování prostředků Azure a platformě Azure, na které závisí, a jsou jedním z následujících typů:

  • Protokoly prostředků, které se neshromažďují, dokud se nepřesměrují do cíle.
  • Protokoly aktivit, které existují samostatně, ale lze je směrovat do jiných umístění.

Každý prostředek Azure vyžaduje vlastní nastavení diagnostiky, které definuje následující kritéria:

  • Zdroje Typ metriky a dat protokolu, která se mají odesílat do cílů definovaných v nastavení. Dostupné typy se liší podle typu prostředku.
  • Cíle: Jeden nebo více cílů, na které se má odeslat.

Jedno nastavení diagnostiky nemůže definovat více než jedno z jednotlivých cílů. Pokud chcete odesílat data do více než jednoho konkrétního cílového typu (například do dvou různých pracovních prostorů služby Log Analytics), vytvořte více nastavení. Každý prostředek může mít až pět nastavení diagnostiky.

Informace najdete v tématu Nastavení diagnostiky ve službě Azure Monitor.

// Azure Resource Graph Query
// Find all Virtual Machines without diagnostic settings enabled/with diagnostic settings enabled but not configured both performance counters and event logs/syslogs.
resources
| where type =~ "microsoft.compute/virtualmachines"
| project name, id, tags, lowerCaseVmId = tolower(id)
| join kind = leftouter (
    resources
    | where type =~ "Microsoft.Compute/virtualMachines/extensions" and properties.publisher =~ "Microsoft.Azure.Diagnostics"
    | project
        lowerCaseVmIdOfExtension = tolower(substring(id, 0, indexof(id, "/extensions/"))),
        extensionType = properties.type,
        provisioningState = properties.provisioningState,
        storageAccount = properties.settings.StorageAccount,
        // Windows
        wadPerfCounters = properties.settings.WadCfg.DiagnosticMonitorConfiguration.PerformanceCounters.PerformanceCounterConfiguration,
        wadEventLogs = properties.settings.WadCfg.DiagnosticMonitorConfiguration.WindowsEventLog,
        // Linux
        ladPerfCounters = properties.settings.ladCfg.diagnosticMonitorConfiguration.performanceCounters.performanceCounterConfiguration,
        ladSyslog = properties.settings.ladCfg.diagnosticMonitorConfiguration.syslogEvents
    | extend
        // Windows
        isWadPerfCountersConfigured = iif(array_length(wadPerfCounters) > 0, true, false),
        isWadEventLogsConfigured = iif(isnotnull(wadEventLogs) and array_length(wadEventLogs.DataSource) > 0, true, false),
        // Linux
        isLadPerfCountersConfigured = iif(array_length(ladPerfCounters) > 0, true, false),
        isLadSyslogConfigured = isnotnull(ladSyslog)
    | project
        lowerCaseVmIdOfExtension,
        extensionType,
        provisioningState,
        storageAccount,
        isPerfCountersConfigured = case(extensionType =~ "IaaSDiagnostics", isWadPerfCountersConfigured, extensionType =~ "LinuxDiagnostic", isLadPerfCountersConfigured, false),
        isEventLogsConfigured = case(extensionType =~ "IaaSDiagnostics", isWadEventLogsConfigured, extensionType =~ "LinuxDiagnostic", isLadSyslogConfigured, false)
    )
    on $left.lowerCaseVmId == $right.lowerCaseVmIdOfExtension
| where isempty(lowerCaseVmIdOfExtension) or provisioningState !~ "Succeeded" or not(isPerfCountersConfigured and isEventLogsConfigured)
| extend
    param1 = strcat("DiagnosticSetting: ", iif(isnotnull(extensionType), strcat("Enabled, partially configured (", extensionType, ")"), "Not enabled")),
    param2 = strcat("ProvisioningState: ", iif(isnotnull(provisioningState), provisioningState, "n/a")),
    param3 = strcat("storageAccount: ", iif(isnotnull(storageAccount), storageAccount, "n/a")),
    param4 = strcat("PerformanceCounters: ", case(isnull(isPerfCountersConfigured), "n/a", isPerfCountersConfigured, "Configured", "Not configured")),
    param5 = strcat("EventLogs/Syslogs: ", case(isnull(isEventLogsConfigured), "n/a", isEventLogsConfigured, "Configured", "Not configured"))
| project recommendationId = "vm-21", name, id, tags, param1, param2, param3, param4, param5

Podpora zón dostupnosti

Zóny dostupnosti Azure jsou aspoň tři fyzicky oddělené skupiny datacenter v rámci každé oblasti Azure. Datová centra v každé zóně jsou vybavena nezávislou infrastrukturou napájení, chlazení a sítě. V případě selhání místní zóny jsou zóny dostupnosti navrženy tak, aby v případě ovlivnění jedné zóny, regionální služby, kapacity a vysoké dostupnosti podporovaly zbývající dvě zóny.

Selhání můžou být v rozsahu od selhání softwaru a hardwaru až po události, jako jsou zemětřesení, záplavy a požáry. Odolnost vůči selháním se dosahuje redundancí a logickou izolací služeb Azure. Podrobnější informace o zónách dostupnosti v Azure najdete v tématu Oblasti a zóny dostupnosti.

Služby s podporou zón dostupnosti Azure jsou navržené tak, aby poskytovaly správnou úroveň spolehlivosti a flexibility. Dají se nakonfigurovat dvěma způsoby. Můžou být buď zónově redundantní, s automatickou replikací napříč zónami, nebo zónově, s instancemi připnutými ke konkrétní zóně. Tyto přístupy můžete také kombinovat. Další informace o zónové a zónově redundantní architektuře najdete v tématu Doporučení pro použití zón dostupnosti a oblastí.

Virtuální počítače podporují zóny dostupnosti se třemi zónami dostupnosti na podporovanou oblast Azure a jsou také zónově redundantní a zónově zónově redundantní. Další informace najdete v tématu Podpora zón dostupnosti. Zákazník zodpovídá za konfiguraci a migraci svých virtuálních počítačů za dostupnost.

Další informace o možnostech připravenosti zón dostupnosti najdete tady:

Požadavky

  • Skladové položky vašeho virtuálního počítače musí být dostupné napříč zónami ve vaší oblasti. Pokud chcete zkontrolovat, které oblasti podporují zóny dostupnosti, podívejte se na seznam podporovaných oblastí.

  • Skladové položky virtuálních počítačů musí být dostupné napříč zónami ve vaší oblasti. Pokud chcete zkontrolovat dostupnost skladové položky virtuálního počítače, použijte jednu z následujících metod:

Vylepšení smlouvy SLA

Vzhledem k tomu, že zóny dostupnosti jsou fyzicky oddělené a poskytují odlišný zdroj napájení, síť a chlazení, zvyšují se smlouvy SLA (smlouvy o úrovni služeb). Další informace najdete v tématu SLA pro virtuální počítače.

Vytvoření prostředku s povolenými zónami dostupnosti

Začněte vytvořením virtuálního počítače s povolenou zónou dostupnosti z následujících možností nasazení:

Podpora zónových převzetí služeb při selhání

Virtuální počítače můžete nastavit tak, aby převzaly služby při selhání do jiné zóny pomocí služby Site Recovery. Další informace najdete v tématu Site Recovery.

Odolnost proti chybám

Virtuální počítače můžou převzít služby při selhání na jiný server v clusteru s restartováním operačního systému virtuálního počítače na novém serveru. Měli byste se podívat na proces převzetí služeb při selhání pro zotavení po havárii, shromažďování virtuálních počítačů při plánování obnovení a spouštění postupů zotavení po havárii, abyste zajistili, že jejich řešení odolnosti proti chybám bude úspěšné.

Další informace najdete v procesech obnovení lokality.

Prostředí pro zónu dolů

Během výpadku v celé zóně byste měli očekávat krátké snížení výkonu, dokud služba virtuálního počítače nevyrovná základní kapacitu tak, aby se přizpůsobila zónám, které jsou v pořádku. Samoopravení není závislé na obnovení zóny; Očekává se, že stav samoobslužného opravy služby spravované Microsoftem kompenzuje ztrátu zóny pomocí kapacity z jiných zón.

Měli byste se také připravit na možnost výpadku celé oblasti. Pokud dojde k přerušení služby pro celou oblast, budou místně redundantní kopie vašich dat dočasně nedostupné. Pokud je povolená geografická replikace, ukládají se tři další kopie objektů blob a tabulek Azure Storage v jiné oblasti. Pokud dojde k úplnému výpadku oblasti nebo havárii, ve které primární oblast není možné obnovit, Azure přemapuje všechny položky DNS na geograficky replikovanou oblast.

Příprava a obnovení výpadku zóny

Následující doprovodné materiály jsou k dispozici pro virtuální počítače Azure během přerušení služby v celé oblasti, ve které je nasazená vaše aplikace virtuálního počítače Azure:

  • Konfigurace Azure Site Recovery pro virtuální počítače
  • Zkontrolujte stav řídicího panelu služby Azure Service Health, pokud není nakonfigurovaná služba Azure Site Recovery.
  • Kontrola fungování služby Azure Backup pro virtuální počítače
    • Viz matice podpory pro zálohování virtuálních počítačů Azure.
  • Určení nejvhodnější možnosti a scénáře obnovení virtuálního počítače pro vaše prostředí

Návrh s nízkou latencí

Při návrhu řešení virtuálního počítače s nízkou latencí je k dispozici možnost křížové oblasti (sekundární oblast), křížového předplatného (Preview) a více zón (Preview). Další informace o těchto možnostech najdete v podporovaných metodách obnovení.

Důležité

Tím, že se odhlásíte z nasazení pracujícího se zónou, předezníte ochranu před izolací základních chyb. Použití skladových položek, které nepodporují zóny dostupnosti nebo odhlasují od konfigurace zóny dostupnosti, se spoléhá na prostředky, které neuslyšují umístění a oddělení zón (včetně základních závislostí těchto prostředků). U těchto prostředků by se nemělo očekávat, že přežije scénáře výpadku zóny. Řešení, která využívají takové prostředky, by měla definovat strategii zotavení po havárii a nakonfigurovat obnovení řešení v jiné oblasti.

techniky nasazení Sejf

Pokud se rozhodnete pro izolaci zón dostupnosti, měli byste využít techniky bezpečného nasazení pro kód aplikace a upgrady aplikací. Kromě konfigurace Azure Site Recovery a implementace některé z následujících technik bezpečného nasazení pro virtuální počítače:

Vzhledem k tomu, že Společnost Microsoft pravidelně provádí aktualizace plánované údržby, mohou existovat vzácné případy, kdy tyto aktualizace vyžadují restartování virtuálního počítače, aby se požadované aktualizace použily na podkladovou infrastrukturu. Další informace najdete v aspektech dostupnosti během plánované údržby .

Před upgradem další sady uzlů v jiné zóně byste měli provést následující úlohy:

Migrace na podporu zóny dostupnosti

Informace o migraci virtuálního počítače do podpory zón dostupnosti najdete v tématu Migrace virtuálních počítačů a škálovacích sad virtuálních počítačů do podpory zóny dostupnosti.

Zotavení po havárii napříč oblastmi a provozní kontinuita

Zotavení po havárii (DR) se týká zotavení z událostí s vysokým dopadem, jako jsou přírodní katastrofy nebo neúspěšná nasazení, která vedou k výpadkům a ztrátě dat. Bez ohledu na příčinu je nejlepším řešením havárie dobře definovaný a otestovaný plán zotavení po havárii a návrh aplikace, který aktivně podporuje zotavení po havárii. Než začnete přemýšlet o vytvoření plánu zotavení po havárii, přečtěte si doporučení pro návrh strategie zotavení po havárii.

Pokud jde o zotavení po havárii, Microsoft používá model sdílené odpovědnosti. V modelu sdílené odpovědnosti Microsoft zajišťuje, aby byly dostupné základní služby infrastruktury a platformy. Současně mnoho služeb Azure automaticky nereplikuje data nebo se vrátí z oblasti, která selhala, aby se křížově replikovala do jiné povolené oblasti. Za tyto služby zodpovídáte za nastavení plánu zotavení po havárii, který funguje pro vaši úlohu. Většina služeb, které běží na nabídkách PaaS (Platforma jako služba) Azure, poskytuje funkce a pokyny pro podporu zotavení po havárii a pomocí funkcí specifických pro služby můžete podporovat rychlé obnovení , které vám pomůže s vývojem plánu zotavení po havárii.

Obnovení mezi oblastmi můžete použít k obnovení virtuálních počítačů Azure prostřednictvím spárovaných oblastí. Obnovením mezi oblastmi můžete obnovit všechny virtuální počítače Azure pro vybraný bod obnovení, pokud se záloha provádí v sekundární oblasti. Další informace o obnovení mezi oblastmi najdete v položce řádku mezi oblastmi v našich možnostech obnovení.

Zotavení po havárii v geografické oblasti s více oblastmi

V případě přerušení služeb v celé oblasti pracuje Microsoft pečlivě na obnovení služby virtuálního počítače. Stále ale musíte spoléhat na další strategie zálohování specifické pro aplikaci, abyste dosáhli nejvyšší úrovně dostupnosti. Další informace najdete v části Strategie dat pro zotavení po havárii.

Detekce výpadků, oznámení a správa

Neočekávaně může dojít k selhání hardwaru nebo fyzické infrastruktury virtuálního počítače. Mezi neočekávané chyby můžou patřit selhání místní sítě, selhání místního disku nebo jiná selhání na úrovni racku. Po zjištění platforma Azure automaticky migruje (vyřeší) váš virtuální počítač do fyzického počítače, který je v pořádku, ve stejném datovém centru. Během opravné procedury jsou virtuální počítače odstavené (restartují se) a v některých případech dojde ke ztrátě dočasné jednotky. Připojené disky s operačním systémem a datové disky se vždy zachovají.

Podrobnější informace o přerušení služeb virtuálních počítačů najdete v doprovodných materiálech k zotavení po havárii.

Nastavení detekce zotavení po havárii a výpadku

Při nastavování zotavení po havárii pro virtuální počítače zjistěte, co Azure Site Recovery poskytuje. Povolte zotavení po havárii pro virtuální počítače pomocí následujících metod:

Zotavení po havárii v geografické oblasti s jednou oblastí

S nastavením zotavení po havárii se virtuální počítače Azure průběžně replikují do jiné cílové oblasti. Pokud dojde k výpadku, můžete převzít služby při selhání virtuálních počítačů do sekundární oblasti a přistupovat k nim odtud.

Při replikaci virtuálních počítačů Azure pomocí Site Recovery se všechny disky virtuálních počítačů průběžně replikují do cílové oblasti asynchronně. Body obnovení se vytvářejí každých několik minut, což vám uděluje cíl bodu obnovení (RPO) v pořadí minut. Postupy zotavení po havárii můžete provádět tolikrát, kolikrát chcete, aniž by to mělo vliv na produkční aplikaci nebo probíhající replikaci. Další informace najdete v tématu Spuštění postupu zotavení po havárii do Azure.

Další informace najdete v tématu o komponentách architektury virtuálních počítačů Azure a párování oblastí.

Odolnost proti zotavení po havárii a proaktivní kapacita

Společnost Microsoft a její zákazníci pracují v rámci modelu sdílené odpovědnosti. Sdílená odpovědnost znamená, že pro zotavení po havárii s podporou zákazníka (služby zodpovědné za zákazníky) musíte řešit zotavení po havárii pro všechny služby, které nasazují a řídí. Aby bylo zajištěno, že obnovení je proaktivní, měli byste vždy předem nasadit sekundární soubory, protože v době dopadu na uživatele, kteří nepřidělili předem přidělenou kapacitu, není zaručená žádná záruka.

Pro nasazení virtuálních počítačů můžete použít flexibilní režim orchestrace ve škálovacích sadách virtuálních počítačů. Všechny velikosti virtuálních počítačů je možné použít s flexibilním režimem orchestrace. Flexibilní režim orchestrace také nabízí záruky vysoké dostupnosti (až 1 000 virtuálních počítačů) rozložením virtuálních počítačů mezi domény selhání v rámci oblasti nebo v rámci zóny dostupnosti.

Další kroky