Benefício Híbrido do Azure com PowerShell

Olá Pessoal ! Tudo bem ?

Este artigo é voltado para explicar um pouco o beneficio HUB  no Azure, também como aplicar este item quando já temos as máquinas virtuais criadas. Na criação de uma máquina virtual pelo portal, você pode já selecionar esta opção, recurso, já aplicando à mesma, porém tem casos em que a máquina virtual já está criada e você precisa converter para utilizar este benefício, que neste caso é possível sim.

Vejo muito assunto falando sobre o beneficio HUB no Azure, que nada mais é para empresas que possuem licenças locais do Windows Server com o Software Assurance. Com isso você só pagara pelos custos básicos da computação em Cloud (Azure).

Vamos ver na prática….

No portal do Azure, em Virtual Machines, você pode visualizar se as VMs estão com o recurso aplicado, uma vez indo Edit columms e selecionando Azure hybrid, aonde na visualizações das informações de cada irá ver se o recurso está aplicado a VM, conforme imagem abaixo:

1

Como podemos ver o recurso aplicado via PowerShell ? Primeiramente logar no Azure e selecionar assinatura, vide:

Login-AzureRmAccount
# Selecionar Assinatura Azure (subscription)
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title “Selecionar sua Assinatura do Azure …” `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId

Neste powershell abaixo damos um Get nas VMs ou podemos afinar, dando um GET  nas VMs com base em Resource Group

$vms = Get-AzurermVM
$vms = Get-AzureRmVM -ResourceGroup $rgName 
foreach ($vm in $vms)
{
“VM Name: ” + $vm.Name, ” Azure hybrid Benefit for Windows Server : ” + $vm.LicenseType
}

No Foreach listamos a partir do GET as máquinas virtuais e mostramos quais benefícios quais estão aplicados ou não “Windows Server”, que é o Beneficio HUB aplicado.

Para aplicar o beneficio na VM, basta usar os comandos abaixo:

$rgName = “Nome do Resource Group”
$vmName = “Nome da VM”
$vm = Get-AzureRmVM -ResourceGroup $rgName -Name $vmName
$vm.LicenseType = “Windows_Server”
Update-AzureRmVM -ResourceGroupName $rgName -VM $vm

Bom é isso pessoal… abraços !

Referência:

https://azure.microsoft.com/en-us/pricing/hybrid-benefit/
https://docs.microsoft.com/en-us/windows-server/get-started/azure-hybrid-benefit

 

Anúncios

Camada de serviço e aplicação falando via MSDTC com banco de dados SQL (Troubleshooting)

Pessoal, recentemente tive uma atuação em um problema antigo na empresa que trabalho, aonde a camada de serviço de uma determinada aplicação, através do MSDTC do Windows fala com a camada também configurada no banco (receptor) e que abre conexão com o banco.

The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems.
Possible causes are: a firewall is present and it doesn’t have an exception for the MSDTC process,
the two machines cannot find each other by their NetBIOS names,
or the support for network transactions is not enabled for one of the two transaction managers. (Exception from HRESULT: 0x8004D02B)

Possible causes are: a firewall is present and it doesn’t have an exception for the MSDTC process,

Alguns pontos para se analisar

Habilitar MSDTC e as configurações necessárias, indo em Component Services -> Computers -> My Computer -> Distributed Transaction e Local DTC
Clicando com o botão direto e em propriedades:

DTC

Ir no Firewall do Windows liberando aplicação:

Control Panel\All Control Panel Items\Windows Firewall\Allowed apps

allow_DTC

Quer validar se permite conexão MSDTC, veja via PowerShell:

ImageDTC

Um ponto importante é quando temos um firewall, pensamos como liberar as portas necessárias para esta conexão uma vez que usa um range de portas, portas dinâmicas, etc ? Bom, fiz uma pesquisa de vários artigos na Internet e notei que as portas basicamente pelo que falam são estas :

RPC PORT RANGE (49152 A 65535)
Custom RPC UX (5000-6000 / TCP/UDP)
RPC EndPoint Mapper Service (TCP 135)
Security Port 88 (TCP/UDP) – Kerberos
NETBIOS (UDP/137, UDP/138 e UDP/139)
SQL 1433

Porta 135 (RPC, tcp/udp)

1

1433 (SQL)

2

3

Utilizei o DTCPing ( Download -> https://www.microsoft.com/en-us/download/details.aspx?id=2868) para gerar os pacotes acima.

Neste cenário tinha um ambiente com firewall, regra NAT, então tudo isso é importante você conhecer em infraestrutura, como exemplo de nosso cenário e necessidades:

Capturar

Pode-se notar a camada de serviço no Azure fazendo conexão em outro DataCenter

Necessário setar um range específico para conexão MSDTC via registry (Salve como .reg e execute em ambos servidores)

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet]
“PortsInternetAvailable”=”Y”
“UseInternetPorts”=”Y”
“Ports”=hex(7):35,00,30,00,30,00,31,00,2d,00,36,00,30,00,30,00,30,00,00,00,00,\
00,00,00

Novo .reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\RPC]
“EnableAuthEpResolution”=dword:00000001
“RestrictRemoteClients”=dword:00000000

Com isso vai notar que as portas de conexão MSDTC serão deste range, podendo facilitar a criação de regra no Firewall:

fw

Basicamente, as portas necessárias para serem liberadas em ambos os lados, seja no Azure no NSG, ou no Firewall do DataCenter são:

Custom RPC UX (5000-6000 / TCP/UDP)
RPC EndPoint Mapper Service (TCP 135)
SQL 1433

Uma vez feito estas liberações e configurações do MSDTC em ambas as pontas, igualmente será feito conexão com sucesso e inclusive em testes pelos DTCPing:

ab

Observação: Lembre de abrir em ambas as pontas o DTCPing antes de gerar um teste.

 

Referência:

Store Procedure para RPC Request (https://msdn.microsoft.com/en-us/library/dd357576.aspx )

SQLBatch, descreve o formato SQL Batch Message (https://msdn.microsoft.com/en-us/library/dd358575.aspx )

Transaction Manager Request (https://msdn.microsoft.com/en-us/library/dd339887.aspx )

 

Obrigado pessoal e até a próxima….

 

 

 

 

 

Criando uma VM no Azure a partir da imagem generalizada criada anteriormente

Anteriormente vimos como criar uma imagem a partir de uma VM já criada, via powershell, tanto para todos os discos manage disk quanto para somente o sistema operaciona.

Neste post iremos tratar via Powershell como criarmos uma vm a partir desta imagem, simples e direto segue script:

Requisito: Install-Module AzureRM.Compute,AzureRM.Network

Login-AzureRmAccount
# Selecionar Assinatura Azure (subscription)
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title “Selecionar sua Assinatura do Azure …” `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId
# Visualizar Assinatura escolhida, validando.
# Get-AzureRmContext
# Definição variáveis #
$rgName = “xxxx” # Resource Group
$location = “East US” # Região, mesma Resource Group e imagem
$imageName = “xxx” # Nome da imagem gerada
$image = Get-AzureRMImage -ImageName $imageName -ResourceGroupName $rgName # Get na imagem.
$subnetName = “xxxx” # Subnet aonde irá criar a VM
$vnetName = “xxxx” # Vnet aonde irá criar a VM
$ipName = “xxxx” # Informações IP Public
$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic # Mudar depois para static se necessário, pelo portal.
$nicName = “xxxx” # Informações Interface NIC
$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
# Informações do NSG já criado no caso, para associar na criação
$nsgName = “xxxx”
# Get nos valores e pesquisa vnet
$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName
# Usuário e senha local servidor, definir.
$cred = Get-Credential -Message “Entre com usuário e senha para a máquina virtual.”
# Nome da VM que deseja criar
$vmName = “xxxxx”
$computerName = “xxxx”
# Escolher size da VM
$vmSize = “Standard_DS1_v2”
# Lista Availability Set Homologação
#
$avset = “xxx”
# Availability Set – Setando na vm configuration abaixo
$availabilitySet = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avset
# Adicionando o nome da VM e o size para VM Configuration
$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $availabilitySet.Id
# Set na imagem da VM e sua origem para a nova VM
$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id
# Set the OS configuration and add the NIC.
$vm = Set-AzureRmVMOSDisk -VM $vm -StorageAccountType PremiumLRS -DiskSizeInGB 128 -CreateOption FromImage -Caching ReadWrite
$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $computerName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
# Create the VM
New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $location
# Verify that the VM was created
$vmList = Get-AzureRmVM -ResourceGroupName $rgName
$vmList.Name

Este script já cria a vm em um Availability Set já criado, porém você pode ignorar se não necessário, basta alterar esta linha:

# Availability Set – Setando na vm configuration abaixo
# $availabilitySet = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avset  (Comentar esta linha)
# Adicionando o nome da VM e o size para VM Configuration
$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize

Retirar da linha acima o > -AvailabilitySetId $availabilitySet.Id

Como já tinha criado o Availability , então na variável $avset = “xxx” coloquei o nome na chave, caso não tenha como falei em alterar as linhas cima, pode comentar esta linha da seguinte forma: # $avset = “xxx”

Obrigado e até a próxima….

 

 

Criando uma imagem gerenciada (Manage image) de uma VM generalizada no Azure, via PowerShell.

Quando nos deparamos com a necessidade de criar um modelo de máquina virtual em massa, ou até mesmo replicar nosso ambiente ou para gerar um modelo padrão de vm, seja com seus aplicativos já instalados ou requisitos para implementar no IaaS sua aplicação, nos deparamos com a necessidade como tinhamos no vmware de template ou hyper-v, com isso a necessidade de ter uma imagem e gerar suas vms, já com sistema operacional e tudo o que necessita já na sua imagem.

No Azure temos como criar estes modelos, estas imagens e usá-las para criar posteriormente suas vms já com o que definiu como modelo.

Temos opções como salvar esta imagem num blob, numa storage (http:\\path\imagem.vhd) e usar para criar sua VM em modo ARM a partir desta imagem, neste caso estamos falando de VM unmanaged, sem disco gerenciado ou podemos ter um script para criar em modo ARM, já para discos gerenciáveis, replicar estas vms já criadas em modo Manage Disk para um modelo de imagem compátivel.

Abaixo temos um procedimento para executar e criar seu modelo de imagem:

Passo 1 – Utilizar o sysprep (% windir% \ system32 \ sysprep) na VM que deseja criar como imagem, com os seguintes requisitos:

sysprep

Ao término temos o processo via portal e powershell se assim escolher.

Ou executar %windir%\system32\sysprep with /generalize , shutdown option na VM.

Com PowerShell, para gerar uma imagem com todos os discos, podemos seguir da seguinte forma:

Login-AzureRmAccount
# Select an Azure subscription
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title “Selecionar sua Assinatura do Azure …” `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId
$vmName = “Nome da VM”
$rgName = “Nome do Resource Group”
$location = “EastUS” # Região
$imageName = “VMImageNome” # Nome da imagem que deseja criar
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
$image = New-AzureRmImageConfig -Location $location -SourceVirtualMachineId $vm.ID
New-AzureRmImage -Image $image -ImageName $imageName -ResourceGroupName $rgName

Com PowerShell, podemos seguir para somente o disco operacional da seguinte forma:

Login-AzureRmAccount
# Select an Azure subscription
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title “Select an Azure Subscription …” `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId
$vmName = “Nome da VM”
$rgName = “Nome do Resource Group”
$location = “EastUS” # Região
$imageName = “VMImageNome” # Nome da imagem que deseja criar
$vm = Get-AzureRmVm -Name $vmName -ResourceGroupName $rgName
$diskID = $vm.StorageProfile.OsDisk.ManagedDisk.Id
$imageConfig = New-AzureRmImageConfig -Location $location
$imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -ManagedDiskId $diskID
New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig

Podemos criar imagem também a partir de um snapshoot mais isso será tema de um próximo post.

Próximo post é como criar sua vm a partir da imagem criada neste post.

Obrigado !

Proactive application health checkup – App Services

Hoje me deparei com uma artigo no site microsoft anunciando um recurso, um recurso que a maioria dos objetos e produtos no Azure possuí em sua guia (blade) de configurações e opções, conhecida como Diagnose and solve problems. Em alguns casos como um VPN Gateway ou a Connection criada, neste recurso conseguimos visualizar o Health check deste recurso, que lhe dá uma visão da saúde.

Não seria diferente para um App Services, sendo anunciado no dia 15 de novembro, recente, o general availability of App Service diagnostics, conta com um diagnóstico do Azure App Service, aonde pode executar análise de saúde pro ativamente em relação a métricas comuns de aplicação Web, tendo uma visão geral , identificando request, desempenho, uso CPU%, Memória%, etc.

Esta dividido em categoria Web App Down, Web App Slow, High CPU Usage, High Memory Usage e Web App Restarted.

metrica webapp

Disponibilidade, Requests e Performance

avav1

Alta Utilização de CPU, Request e Performance

av3av4

No lado direiro temos algumas outras opções, recursos e documentação.

s

Uma que gostei foi a Live Http Traffic:

li

Vídeo bem interessante ->

 

Referência e documentação ->

https://docs.microsoft.com/en-us/azure/app-service/app-service-diagnostics

https://azure.microsoft.com/en-us/blog/announcing-the-general-availability-of-azure-app-service-diagnostics/

Até a próxima galera…

 

 

Azure SQL Database e DTU

SQL Database é um banco de dados em plataforma (PaaS), aonde não temos necessidade de gerenciar sua infra-estrutura. Não pagamos por software, pagamos pelo serviço, por isso do termos as-a-service. Ganhamos com isso uma plataforma robusta, se livrando de gastos com hardware e software, claro que também ganhando outros recursos com mais facilidade de gerenciamento do que normalmente em um ambiente on-premises e melhores recursos para gerência do seu banco.

sql database

DTU

O banco de dados sql no Azure tem um nível de desempenho específico na camada de serviço que contratou. Essa quantidade de recursos é calculada como um número de unidades de transação do banco de dados ou DTUs e é uma medida combinada de CPU, memória, E/S (E/S de dados e log de transações).

bounding-box

Você pode alterar os níveis a qualquer momento com tempo de inatividade mínimo para seu aplicativo (tempo médio de quatro segundos)

single_db_dtus

Price

Como escolher uma camada de serviço

Básico Standard Premium Premium RS
Carga de trabalho de destino Desenvolvimento e produção Desenvolvimento e produção Desenvolvimento e produção Carga de trabalho que pode tolerar perda de dados por até 5 minutos devido a falhas de serviço
SLA de tempo de atividade 99,99% 99,99% 99,99% N/d enquanto estiver em versão prévia
Retenção de backup 7 dias 35 dias 35 dias 35 dias
CPU Baixo Baixo, Médio, Alto Médio, Alto Média
Taxa de transferência de E/S Baixo Média Ordem de magnitude maior do que o Standard Mesmo que o Premium
Latência de E/S Maior do que o Premium Maior do que o Premium Menor do que o Básico e Standard Mesmo que o Premium
Indexação de ColumnStore e OLTP in-memory N/D N/D Suportado Suportado

Limites de tamanho de armazenamento e nível de desempenho

Bancos de dados únicos

Básico Standard Premium Premium RS
Tamanho máximo de armazenamento* 2 GB 1 TB 4 TB 1 TB
Máximo de DTUs 5 3000 4000 1000

Pools elásticos

Básico Standard Premium Premium RS
Tamanho máximo de armazenamento por banco de dados* 2 GB 1 TB 1 TB 1 TB
Tamanho máximo de armazenamento por pool* 156 GB 4 TB 4 TB 1 TB
Máximo de eDTUs por banco de dados 5 3000 4000 1000
Máximo de eDTUs por pool 1600 3000 4000 1000
Número máximo de bancos de dados por pool 500 500 100 100

Para uma gerência do SQL Database, temos o SQL Server (Servidor Lógico do SQL Azure), aonde atua como um ponto administrativo central para vários banco de dados, tendo gerência de pools elásticos, regras de firewall, regras de auditoria.

Recursos no Azure, Blade SQL Database ->

Recursos

Próximo artigo: Como criar um SQL Database

Referência:

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started-portal

https://docs.microsoft.com/pt-br/azure/sql-database/sql-database-what-is-a-dtu

Public preview: Azure Availability Zones

Os Availability Zones do Azure já estão disponíveis para visualização em duas regiões, US East 2 e Europa Ocidental. A lista atual de regiões e serviços habilitados está disponível na página de documentação no link abaixo.

As zonas de disponibilidade são locais isolados de falhas dentro de uma região Azure, projetada com energia independente, refrigeração e rede. Eles ajudam a proteger seus aplicativos de missão crítica de falhas de datacenters inteiros com baixa latência e alta disponibilidade.

az-graphic-two

Oferece um SLA de VM de uma única instância de 99,9% em VMs suportados pelo Azure Premium Storage, e um SLA de 99,95% para availability sets.

Documentação: https://docs.microsoft.com/en-us/azure/availability-zones/az-overview