Professional Documents
Culture Documents
Original
Original
Iain Foulds
CONHECER O
AZURE NUM MÊS
DE ALMOÇOS
<br /> }*
///////// #
Obtenha ajuda para
o seu projeto.
Fale com um especial-
ista de vendas >
startHere(Azure);
Comece gratuitamente
POUPE 40% EM LIVROS E VÍDEOS DA MANNING!
A Manning publica livros e vídeos de alta qualidade para profissionais de tecnologia como você. Utilize este código de
desconto especial para poupar 40% em todos os cursos de e-books, p-books, MEAPs e liveVideo em manning.com, ,
incluindo estes títulos selecionados. Basta introduzir azuremsft2 na caixa Código Promocional quando concluir a compra.
Conhecer o Windows PowerShell num mês de almoços Conhecer Docker num mês de almoços
Por Don Jones e Jeffery Hicks Elton Stoneman
dezembro de 2016, 384 páginas Verão 2020, 530 páginas
• Fazer perguntas, partilhar código e exemplos e interagir com outros leitores no fórum do liveBook.
• Fazer pesquisas de texto completo em todos os livros da Manning, até mesmo nos que não possui.
"Um livro incrível e repleto de informações para aprender conceitos core e avançados do Azure num mês!"
—Sushil Sharma, Galvanize
"O Microsoft Azure está rapidamente a tornar-se líder no espaço público da cloud. Seguir os exercícios
neste livro vai rapidamente pô-lo a par desta tecnologia."
—Michael Bright, Developer Advocate, consultor freelancer
"Excelente introdução ao Azure com muitos exemplos práticos. Abrange uma ampla gama de tópicos
atuais."
—Sven Stumpf, ING-DiBa AG
"O Azure é como um oceano. Este livro mantém-no à tona, proporcionando a melhor forma de aprender
em forma de almoços ricos em exercícios e exemplos práticos."
—Roman Levchenko, Microsoft MVP
"Uma ótima forma de entender a amplitude das ofertas do Azure, seguindo uma abordagem concisa
e focada em atividades."
—Dave Corun, Avanade
"O livro mais abrangente sobre o Azure que encontrei para começar a desenvolver os meus projetos
académicos!"
—Marco Giuseppe Salafia, estudante de doutoramento, Università degli Studi di Catania
"Este é o livro para a plataforma Azure. Está muito bem organizado, é minucioso e abrangente. A partir
de conceitos básicos, orienta o leitor através da criação de configurações cada vez mais complexas com
a plataforma do Azure para proporcionar escalabilidade, alto desempenho e redundância para
aplicações e serviços alojados. Este livro serve tanto como tutorial para o principiante e como uma referên-
cia para o utilizador mais experiente."
—Robert Walsh, Excalibur Solutions
Conhecer o Azure
num mês de almoços
Segunda Edição
IAIN FOULDS
MANNING
Shelter Island
Para obter informações online e fazer pedidos desse e de outros livros da Manning, aceda a
www.manning.com. A editora oferece desconto neste livro quando pedido em quantidade.
Para obter mais informações, contacte
Departamento de vendas especiais
Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
E-mail: orders@manning.com
Nenhuma parte desta publicação pode ser reproduzida, armazenada num sistema de recuperação ou
transmitida, de qualquer forma ou por meio eletrónico, mecânico, fotocópia ou outro, sem permissão
prévia por escrito da editora.
Muitas das designações utilizadas pelos fabricantes e vendedores para distinguir os seus produtos são
reivindicadas como marcas registadas. Quando essas designações aparecerem no livro, e a Manning
Publications estiver ciente de uma reivindicação de marca registada, as designações serão impressas
com as iniciais em letras maiúsculas ou totalmente em letras maiúsculas.
ISBN 9781617297625
Impresso nos Estados Unidos da América
Para as pessoas mais importantes da minha vida:
Abigail, Bethany e Charlotte
índice
prefácio xv
agradecimentos xvi
sobre este livro xvii
sobre o autor xxi
vii
viii índice
aplicações 35
3.2 Criar uma aplicação Web 37
Criar uma aplicação Web básica 37 Implementar um site
■
HTML de exemplo 39
3.3 Ver registos de diagnóstico 42
3.4 Laboratório: criar e utilizar um bloco de implementação 44
■
Gerir e agrupar recursos com etiquetas 80
6.2 Modelos do Azure Resource Manager 81
Criar e utilizar modelos 82 Criar múltiplos de um tipo
■
7
Elevada disponibilidade e redundância
7.1 A necessidade da redundância 90
90
horizontalmente 128
9.2 Conjuntos de dimensionamento de virtual machines 129
Criar um conjunto de dimensionamento de virtual machines 131
Criar regras de dimensionamento automático 133
■
10.2 Criar uma conta e uma base de dados Cosmos DB 145
Criar e preencher uma base de dados Cosmos DB 145 Adicionar
■
5.2
1 Identidades geridas para recursos do Azure 221
15.3 Obter um segredo de uma VM com identidade gerida 224
15.4 Criar e injetar certificados 230
15.5 Laboratório: configurar um servidor Web seguro 233
xii índice
atualizações 245
16.4 Laboratório: ativar o JIT e atualizações para uma VM
Windows 249
■
União da IA e do ML 256 Ferramentas de ML do Azure para
■
índice 335
prefácio
Esta segunda edição do Conhecer o Azure num mês de almoços lembra-me que tudo
muda rapidamente e que tens de continuar sempre a aprender. Longe vai o tempo em
que se podia fazer um curso de uma semana no Windows Server e executá-lo confor-
tavelmente durante anos sem grandes mudanças. Isto não significa que o mundo das
TI seja um lugar mais assustador, mas é preciso abordar o cloud computing com uma
mente aberta e estar disposto a ajustar-se constantemente.
Quando comecei a trabalhar com o Azure, o número de serviços disponíveis era
quase assustador. Eu sabia que devia prestar atenção à segurança, ao desempenho, à
redundância e ao dimensionamento, mas não sabia como adaptar mais de uma década
de administração de servidores em larga escala ao mundo de cloud computing. Com o
tempo, comecei a aprender sobre os vários serviços Azure que fornecem esses compo-
nentes-chave. Estes serviços raramente funcionam isoladamente, mas eu não sabia qual
era a melhor maneira de os integrar ou como decidir que serviço usar para cada tarefa.
Este livro é uma forma de explicar ao meu antigo eu, e a muitos outros que seguiram
um percurso semelhante, como entender rapidamente os serviços core do Azure e fazê-
los funcionar em conjunto.
Este livro tem mais de 350 páginas, mas aborda apenas o básico do que é possível
fazer em Azure! Para ajudar a fornecer uma compreensão sólida dos conceitos
necessários para obter êxito enquanto cria soluções no Azure, tive de escolher quais
tópicos escrever a respeito. O livro não aborda todos os 100 ou mais serviços do Azure e
não detalha de forma abrangente os serviços incluídos. Em vez disso, foca-se nas áreas
core de alguns dos serviços principais e mostra exemplos de como ligar tudo em segu-
rança e apresenta as possibilidades do que pode criar em Azure.
O cloud computing está em constante mudança. Não há ciclos de lançamento de
três ou quatro anos nem grandes implementações de atualização. Acho que hoje é o
momento perfeito para criar soluções e escrever códigos; há sempre uma oportuni-
dade de aprendermos algo novo e de aperfeiçoarmos as nossas competências. Espero
que aprenda a executar excelentes aplicações em Azure e aproveite para explorar todos
os serviços disponíveis.
xv
agradecimentos
Muitas pessoas nos bastidores da Manning Publications ajudaram a publicar este livro.
Um agradecimento especial ao Mike Stephens por ter tido a visão de iniciar este pro-
jeto. Agradeço à minha editora Marjan Bace e a toda a gente da equipa editorial e de
produção.OmeuagradecimentoaosrevisorestécnicoslideradosporAleksandarDragosav-
ljevic´—Ariel Gamino, Charles Lam, Ernesto Cardenas Cangahuala, George Onofrei,
Glen Thompson, Jose Apablaza, Juraj Borza, Michael Langdon, Michael Wall, Peter
Kreyenhop, Rick Oller, Rob Ruetsch, Robert Walsh e Vishal Singh. E finalmente, na
parte técnica, agradeço a Karsten Strøbaek, que trabalhou tanto como editor técnico,
como revisor do livro.
Nesta segunda edição, dirijo um enorme agradecimento a Phil Evans e Davanand
Bahall pelo seu apoio e liberdade para atualizar este livro. Este era um projeto fora do
meu trabalho na Microsoft, mas entusiasmava e afetava muitas pessoas. Agra-
deço também a David Tolkov e Tim Teebken, que me deram a oportunidade de me tor-
nar alguém capaz de escrever este livro. E olha, Jean-Paul Connock, ganhámos uma
Taça Stanley desde a última vez! Força Blues!
Agradeço a Rick Claus por ajudar na necessidade de uma documentação técnica
sólida em Azure e a Marsh Macy e Neil Peterson pelo apoio e orientação pessoais na
criação da versão original deste livro. Ainda temos de começar o autocarro escolar.
xvi
sobre este livro
Este livro foi criado para fornecer uma base sólida para o sucesso enquanto programa-
dor ou engenheiro de TI em Azure. Vai aprender sobre as soluções de Infraestrutura
como Serviço (IaaS) e de Plat-aforma como Serviço (PaaS), bem como sobre o
momento de utilizar cada abordagem. Ao analisar os capítulos, irá aprender a planear
adequadamente a disponibilidade e o dimensionamento, manter a segurança em
mente e considerar o custo e o desempenho. No final do livro, deverá ser capaz de
integrar as próximas tecnologias, como containers e Kubernetes, inteligência artificial
e machine learning (IA + ML) e a Internet of Things (IoT).
Quando se trata da criação e execução das suas aplicações e serviços, o Azure permite
escolher o sistema operativo, as ferramentas de aplicações e a plataforma com a qual se
sente mais à vontade. Este livro discute principalmente tecnologias que não são da Micro-
soft, como Linux, Python e Node.js. Os exemplos de comando utilizam a CLI do Azure,
não o Azure PowerShell. Estas foram decisões conscientes para mostrar que utilizar o
Azure não significa que precisa de utilizar o Windows Server, o IIS ou o ASP.NET.
Como trabalha na cloud, isso geralmente significa trabalhar em várias plataformas e
aprender novos tópicos, que é outro motivo para mostrar tecnologias e plataformas que
não são da Microsoft. Gostaria de apresentar algumas dessas novas áreas, antes de se
deparar com as mesmas no mundo real. Ao longo do livro, irei ensinar os conceitos e os
passos necessários para integrar os serviços do Azure, para que possa alternar entre
plataformas ou linguagens conforme pretender e ter o mesmo conhecimento
aplicado.
xvii
xviii livro
sobre este
Plano
O livro está organizado em 4 partes e 21 capítulos:
¡ A parte 1 aborda alguns dos serviços core de infraestrutura e plataforma do Azure:
vir- tual machines, aplicações Web, armazenamento e redes.
¡ A parte 2 aprofunda a forma como fornecer elevada disponibilidade e redundân-
cia: modelos, conjuntos de disponibilidade e zonas, balanceadores de carga,
dimensionamento automático, bases de dados distribuídas e encaminhamento
de tráfego. No final do capítulo 12, deverá ter um sólido conhecimento de como
criar aplicações distribuídas de alto desempenho em Azure.
¡ A parte 3 aborda aspetos de segurança, como cópia de segurança e recuperação,
encriptação, gestão de chaves digitais e atualizações. No momento em que concluir
o capítulo 16, estará preparado para criar aplicações seguras e estáveis em Azure.
¡ Para terminar o livro, a parte 4 introduz um pouco de diversão, explorando novas
áreas de computação, como a computação sem servidor e aplicações baseadas em
containers. Estes capítulos apresentam áreas do Azure que oferecem um resumo
de como seria o futuro das aplicações de produção.
Exceto na parte 4, que é adequadamente chamada de "As coisas fantásticas", deve ten-
tar analisar os capítulos do livro por ordem. Não deve trabalhar no mesmo projeto em
capítulos sucessivos, mas cada capítulo baseia-se nos exemplos anteriores de teoria e
de laboratório prático.
O capítulo 1 orienta-o na criação de uma conta trial gratuita em Azure, que é
suficiente para concluir os exercícios de laboratório prático em cada capítulo.
Também forneço um pouco mais de conhecimento sobre o Azure e como encontrar
ajuda adicional ao longo do processo. Menciono esta página web algumas vezes no
livro (talvez seja um pouco tendencioso!), mas http://docs.microsoft.com/azure é
o melhor sítio para obter documentação e suporte adicionais em quaisquer áreas
do Azure que lhe interessem.
Todos os exercícios práticos podem ser concluídos no portal Azure e com o Azure
Cloud Shell, um shell interativo baseado no browser para a CLI do Azure e o Azure Pow-
erShell. Não há qualquer instalação de ferramentas na sua máquina e pode utilizar
qualquer computador e sistema operativo que pretender, desde que suporte um
browser moderno.
Geralmente, o portal Azure implementa pequenas alterações. Parte do desafio de
usar qualquer serviço na cloud é que as coisas podem ser um pouco diferentes do que
eram no dia anterior.
Esta segunda edição do livro tenta minimizar o número de capturas de ecrã do por-
tal, mas não se preocupe se o que vê for ainda um pouco diferente do que é mostrado
no livro. Os parâmetros necessários são geralmente os mesmos, mas o layout pode ser
diferente. Se houver novas opções no portal que não tenha informado especificamente
num exercício ou laboratório, geralmente é seguro aceitar as predefinições
fornecidas.
Se trabalha fora do Azure Cloud Shell, tenha cuidado com os exemplos de comando.
Os shells baseados no Windows, como o PowerShell e o CMD, tratam as quebras de li
nha e as continuações de forma diferente dos shells baseados em *nix, como o Azure
Cloud Shell. Muitos dos exemplos de comando são executados em várias linhas. Os
comandos são apresentados com um caráter de barra invertida (\) para indicar que o
comando continua na próxima linha, como no exemplo a seguir:
az resource group create \
--name azuremol \
--location eastus
Não precisa de introduzir esses carateres de barra invertida, mas isso pode tornar os
comandos longos mais legíveis no ecrã. Se optar por trabalhar localmente no seu com-
putador com um shell do Windows, poderá utilizar um acento grave (`) em vez de uma
barra invertida. Num shell do PowerShell ou do CMD com o Python para Windows
instalado, por exemplo, altere o comando anterior da seguinte maneira:
az resource group create `
--name azuremol `
--location eastus
Esta convenção pode ser confusa no início, mas sigo-a no livro porque a documen-
tação oficial em https://docs.microsoft.com/azure utiliza este formato. Os comandos
da CLI do Azure, que são os mais utilizados neste livro, assumem um shell baseado em
*nix e, portanto, utilizam um caráter de barra invertida. Os comandos do Azure Pow-
erShell assumem um shell baseado no Windows e, portanto, utilizam um sinal de
acento grave. Esta diferença de comportamento vai fazer sentido rapidamente e vai
perceber que é fácil fazer a transição entre shells. Se nunca tiver trabalhado em plata-
formas, esta diferença pode ser uma armadilha divertida!
Recomendo que verifique o Subsistema Windows para Linux (WSL) se executar o
Windows 10 e quiser mergulhar nos sistemas CLI do Azure e baseados em *nix no
geral; pode encontrar mais detalhes em https://docs.microsoft.com/windows/wsl. O
xx livro
sobre este
WSL e as mais recentes melhorias na WSL2 dão-lhe uma experiência nativa do kernel
Linux enquanto executa o Windows . Não tente complicar esta ideia em demasia! Saiba
apenas que pode executar comandos e aplicações nativas Linux sem se preocupar com que-
bras de linha diferentes ou definições variáveis. Para o surpreender realmente, o Pow-
erShell está disponível para .NET Core, que também funciona em Linux. Pode execu-
tar o PowerShell no Linux enquanto estiver no Windows.
xxi
Parte 1
1
O Azure é um dos maiores fornecedores de cloud computing público no que diz
respeito a serviços como virtual machines (VM), containers, computação sem servi-
dor e machine learning. Não iremos abordar os 100 ou mais serviços do Azure neste
livro, mas vai saber mais sobre os serviços e funcionalidades core que abrangem a
maior parte do que precisa para iniciar a criação e execução de soluções em Azure.
Vamos examinar um exemplo comum de como criar e executar uma aplicação Web,
e verá como utilizar alguns dos serviços core de infraestrutura e plataforma que
podem facilitar o seu trabalho.
Com o Azure, não precisa de uma varinha mágica para prever quantos servidores
ou o armazenamento de que necessita nos próximos três anos. Chega de atrasos até
obter a aprovação do orçamento; aguardar a receção de novo hardware e, depois,
colocar no bastidor, instalar e configurar tudo. Não precisa de se preocupar sobre as
versões de software ou bibliotecas instaladas enquanto escreve o código.
Em vez disso, selecione um botão e crie os recursos necessários. Só paga por cada
minuto em que os recursos estão em execução ou pela quantidade de espaço de
armazenamento ou largura de banda da rede utilizada. Quando já não precisar dos
recursos, pode desativá-los ou eliminá-los. Se de repente precisar aumentar a quanti-
dade de poder de computação num fator de 10, selecione um botão, aguarde alguns
minutos e está feito. A gestão é feita por outra pessoa, permitindo-lhe ficar mais livre
para se concentrar nas suas aplicações e clientes.
3
4 Capítulo 1 Antes de começar
Experimente agora
Siga os passos desta secção para criar a sua conta Azure gratuita:
Figura 1.1 O portal Azure, pronto para criar as suas próprias aplicações e soluções
Uma pequena ajuda 7
É realmente gratuito?
O Azure tem um Marketplace que contém centenas de imagens pré-criadas
(a base de VM) e soluções que pode implementar. Vamos utilizar algumas destas ofertas
do Marketplace em todo o livro, pois são excelente formas de implementar rapidamente
um conjunto de aplicações inteiro.
Nem todas as ofertas do Azure Marketplace são gratuitas; alguns editores de terceiros
combinam os custos de licenciamento ou de suporte na solução implementada. Uma
VM que tenha implementado da Red Hat, por exemplo, pode incorrer numa taxa adicio-
nal que cobre o contrato de suporte e a licença da Red Hat. Estes encargos não são
cobertos pelo seu crédito de trial gratuito; apenas está incluída a utilização da VM base.
Os exercícios neste livro utilizam apenas recursos que permanecem dentro do trial gra-
tuito. Mas se for explorar outras ofertas incríveis do Marketplace em Azure, preste aten-
ção ao que cria. Qualquer solução que inclua taxas adicionais, deve explicitar claramente
as taxas antes da implementação!
Figura 1.2 Modelo de pizza como um serviço. À medida que passa do modelo de pizza caseira, onde
fornece tudo, para o modelo de restaurante, onde acabou de aparecer, as responsabilidades e as
exigências de gestão mudam conforme necessário.
No modelo de pizza como um serviço, tem quatro opções de entre as quais pode esco-
lher. Ao explorar os modelos, preocupa-se cada vez menos com o processo de comer
uma fatia de pizza:
¡ Caseira: faz a massa, adiciona o molho, os ingredientes e o queijo, coloca
a pizza no seu forno, compra as bebidas e senta-se à mesa para a comer.
Compreender a plataforma do Azure 9
¡ Comprar + cozinhar: compra uma pizza pronta. Só precisa de a assar no forno, com-
prar as bebidas e sentar-se à mesa para a comer.
¡ Entrega em casa: pede uma pizza para entregar em casa. Só precisa de comprar as
bebidas e sentar-se à mesa para a comer.
¡ Restaurante: quer sair e comer pizza com o mínimo de esforço!
Agora que está com fome, vamos olhar para o modelo mais tradicional que envolve
alguns recursos de computação (figura 1.3.). Este modelo é um pouco mais parecido
com o que vê em Azure.
SO SO SO SO
À medida que explora os modelos, gere menos os recursos subjacentes e pode concen-
trar mais tempo e energia nos seus clientes:
¡ On-premises: configura e gere todo o datacenter, como os cabos de rede, o armaze-
namento e os servidores. É responsável por todas as partes do ambiente de aplica-
ção, suporte e redundância. Esta abordagem fornece controlo máximo, mas com
muitas despesas de gestão.
¡ Infraestrutura como Serviço (IaaS): adquire os recursos de computação básicos de
um fornecedor que gere a infraestrutura core. Cria e gere as VMs, os dados e as
aplicações. O fornecedor de cloud é responsável pela infraestrutura física, pela
gestão de host e pela resiliência. Ainda pode ter uma equipa de infraestrutura
para ajudar a oferecer suporte e implementar VM, mas a equipa não vai ter de
dedicar tempo nem custos à gestão do equipamento físico.
10 Capítulo 1 Antes de começar
Esta abordagem é boa quando começa a mover aplicações para fora do seu
próprio ambiente na infraestrutura on-premises. A gestão e as operações são
geralmente semelhantes a um ambiente na infraestrutura on-premises, de modo
que a IaaS fornece uma progressão natural para os proprietários de negócios, TI
e aplicações se sentirem confortáveis com a cloud.
¡ Plataforma como um Serviço (PaaS): adquire a pilha de plataforma subjacente de um
fornecedor que gere o sistema operativo e os patches e traz as suas aplicações e
dados. Não se preocupa com VM ou com a rede virtual, e a sua equipa de opera-
ções pode concentrar mais tempo na fiabilidade e no desempenho da aplicação.
Em geral, esta abordagem começa a tornar a organização de TI e a empresa
confortáveis com a execução de aplicações na cloud. O seu foco está nas aplica-
ções e nos seus clientes, com menos preocupações sobre a infraestrutura necessá-
ria para executar essas aplicações.
¡ Software como Serviço (SaaS): só precisa de acesso ao software, com um fornecedor
que fornece todo o resto. Os programadores podem criar com uma plataforma
existente para fornecer personalizações ou funcionalidades exclusivas, sem ter de
manter uma base de código de grande dimensão.
Em geral, esta abordagem é assustadora no início, mas provavelmente já
conhece e utiliza ofertas de SaaS bem-sucedidas, como o Salesforce, o Office 365
ou a suite de aplicações Mail ou Docs do Google. Utiliza o e-mail, cria documen-
tos ou apresentações ou gere informações de contacto do cliente e informações
de vendas. O seu foco está no conteúdo que cria e gere, não em como fazer a exe-
cução da aplicação.
A maior parte do que cria em Azure enquadra-se nas áreas de IaaS e PaaS. Os princi-
pais casos práticos incluem VM e redes virtuais (IaaS) ou o Azure Web Apps, Functions
e os serviços Cosmos DB (PaaS). Se for programador, provavelmente as soluções de
PaaS são as áreas que mais lhe interessam, pois a Microsoft abrange as partes de infraes-
trutura para permitir que se concentre no seu código. Os profissionais de TI podem
inclinar-se mais para as soluções de IaaS para criar e controlar a infraestrutura
do Azure.
São dedicados livros inteiros à virtualização, mas aqui fica uma descrição geral
rápida: a virtualização divide logicamente os recursos físicos num servidor em recursos
virtuais que podem ser acedidos com segurança por workloads individuais. Uma VM é
um dos recursos mais comuns de cloud computing. Uma VM contém uma CPU virtual
(vCPU), memória (vRAM), armazenamento (vDisk) e conectividade de rede (vNIC),
como apresentado na figura 1.4.
Hipervisor de Hyper-V
Pode aceder ao Azure Cloud Shell num browser em qualquer computador sem preci-
sar de instalar nenhuma ferramenta em https://shell.azure.com. Editores como o
Visual Studio Code (https://code.visualstudio.com) fornecem acesso ao Cloud Shell
dentro da aplicação. Há até mesmo uma aplicação do Azure disponível para iOS e
Android que lhe permite utilizar o Azure Cloud Shell diretamente do seu
smartphone.
Com o Azure Cloud Shell, tem sempre acesso à versão mais recente das ferramentas
da CLI ou do PowerShell. O armazenamento persistente permite-lhe criar e guardar
scripts, modelos e ficheiros de configuração.
Ferramentas locais do PowerShell e da CLI do Azure
Embora existam vantagens para o Azure Cloud Shell, em geral, precisa de acesso ao
seu sistema de ficheiros e ferramentas locais. Pode instalar a CLI do Azure ou o Azure
PowerShell localmente para que possa trabalhar com recursos locais e recursos
do Azure.
Neste livro, vamos utilizar principalmente a CLI do Azure (tecnicamente, a CLI do
Azure 2.0). Pode parecer estranho escolhê-la em vez do PowerShell nativo da Microsoft;
a vantagem é que os exemplos e exercícios podem funcionar tanto no Azure Cloud
Shell como localmente no seu computador, independentemente do sistema operativo
que utiliza. Embora esta informação não faça parte da configuração do ambiente de
laboratório, os seguintes guias detalham como instalar as ferramentas de gestão do
Azure no seu computador:
¡ Introdução ao Azure PowerShell: https://docs.microsoft.com/powershell/azure/
get-started-azureps
¡ Instalar o Azure CLI:https://docs.microsoft.com/cli/azure/install-azure-cli
Criar uma virtual machine
2
Pronto para ver a rapidez com que pode configurar um servidor Web em Azure?
Neste capítulo, vamos analisar um dos pedidos mais comuns quando se trata de VM:
criar um servidor Web básico. Este workload é um ótimo exemplo dos componentes
core de Infraestrutura como Serviço (IaaS) em Azure.
Suponha que trabalha para uma pizzaria que quer expandir as suas operações e
aceitar pedidos online para entrega de pizzas ou para entrega ao domicílio. Para
criar uma presença online, precisa de um site. Nas primeiras partes deste livro, vamos
explorar as diferentes funcionalidades e serviços em Azure que lhe permitem criar e
executar aplicações Web IaaS e Plataforma como um Serviço (PaaS). Pode começar
a tomar decisões informadas sobre quando criar e executar uma VM para acionar
um site e quando pode utilizar PaaS para fazer isso. Mas o primeiro passo é construir
um servidor web.
Neste capítulo, vai criar uma VM do Ubuntu Linux e instalar um servidor Web
básico. Não se preocupe em utilizar o Linux; vai criar uma VM Windows no fim do
capítulo
Abra a porta 80
para permir que
os clientes Cliente no PC
naveguem no site.
Crie num VM Linux Inicie sessão e VM Linux
browser web. instale pacotes.
Cliente no
Servidor Web
smartphone
básico
Cliente no
tablet
Figura 2.1 Neste capítulo, cria uma VM básica, inicia sessão para instalar um servidor Web e, em
seguida, abre uma porta de rede para permitir que os clientes naveguem para o site de exemplo.
14
Noções básicas das configurações de virtual machine 15
2.1.2 Imagens de VM
Para criar uma VM, precisa de um ponto de partida. Normalmente, este ponto de par-
tida resume-se à escolha do sistema operativo: Windows ou Linux. De seguida, vem a
escolha da versão do Windows a usar (como o Windows Server 2016 ou 2019) ou que
distribuição Linux usar (como Ubuntu, Red Hat Enterprise Linux ou SUSE).
Uma imagem — um pacote de SO pré-configurado com opções básicas de configura-
ção aplicadas: este é o ponto de partida. O Azure contém centenas destas imagens pré-
-construídas no Marketplace do Azure para usar quando criar VM. Pode aplicar
frequentemente as licenças do Windows existentes, dependendo do seu modelo de
licenciamento atual, ou pode optar por suporte adicional da Canonical para executar
Ubuntu Linux ou atualizações da Red Hat, por exemplo.
Para manter as coisas simples e curtas o suficiente para que possa completar estas
lições numa hora de almoço, vai usar estas imagens pré-construídas em Azure ao longo
do livro. No mundo real, provavelmente vai querer personalizar as coisas de acordo
com as necessidades e requisitos do seu negócio. Para isso, vai ter de criar muitas vezes
as suas próprias imagens de VM. O workflow para criar e gerir as VM é o mesmo que
com as imagens do Marketplace do Azure, mas muitas vezes, construir as suas próprias
imagens requer muito planeamento e, em seguida, horas de configuração, generaliza-
ção e captura prévia das suas próprias imagens.
Experimente agora
Aqui ficam algumas ideias para pensar, enquanto planeia aplicações em Azure. Parecem
básicas e na maior parte do tempo, pode tomar estas decisões automaticamente, sem
pensar muito. Mas ainda é importante entender as necessidades da sua aplicação
antes de começar a construir e executar aplicações!
¡ Em que regiões deve ser executada a sua candidatura? Tem uma grande concen-
tração de utilizadores numa região específica? Como vai providenciar
redundância?
Se estiver a construir aplicações internas, execute-as na região de Azure
mais próxima dos seus utilizadores. Se tem um escritório importante em Hous-
ton, Texas, por exemplo (pode gostar de foguetes!), execute as suas aplicações e
VM Azure na Central Sul dos Estados Unidos .
Se está a criar aplicações externas, prevê ter clientes de certas regiões? Esta
configuração pode exigir a implementação de várias instâncias em regiões dife-
rentes (e também fornecer alta disponibilidade). Vamos chegar à sua configura-
ção no capítulo 12.
¡ Precisa de fornecer muitas personalizações na VM? Quanto tempo demora a
testar e validar todas essas alterações? Que necessidades de negócios as
impulsionam?
Num ambiente tradicional on-premises, muitas vezes gasta-se muito tempo a
criar imagens pré-configuradas para implementações. Desta vez, na cloud, tente
minimizar. As imagens Azure pré-construídas incluem as mais recentes atualiza-
ções de segurança; são testadas para si e, em seguida, replicadas geograficamente
para os tempos de implementação mais rápidos.
Noções básicas das configurações de virtual machine 17
2.1.3 Tamanhos de VM
Há várias famílias de tamanhos de VM em Azure. Estas famílias contêm grupos de tipos
de hardware virtuais semelhantes que são direcionados para determinados workloads.
Por vezes, os tamanhos são atualizados à medida que novas ofertas de hardware e
workload se tornam disponíveis, mas as famílias core permanecem constantes. Os tipos
de família são os seguintes:
¡ Propósitos gerais: ótimo para desenvolvimento e teste ou bases de dados de produ-
ção de baixa utilização e servidores Web
¡ Computação otimizada: CPUs de alto desempenho, como para servidores de
aplicações de produção
¡ Memória otimizada: opções de memória maior, como quando precisa de executar
bases de dados de grande dimensão ou tarefas que requerem muito processa-
mento de dados em memória
¡ Armazenamento otimizado: desempenho de baixa latência e alto disco para aplica-
ções que exijam uma utilização intensiva do disco
¡ GPU: VM especializadas em gráficos baseados em NVIDIA, se precisar de compo-
sição de gráficos ou processamento de vídeo
¡ Computação de alto desempenho: muito de tudo - grande quantidade de CPU, memó-
ria e débito de rede para os workloads mais exigentes
Que tamanho de VM pode ser criado em Azure? As coisas estão a melhorar constante-
mente, mas no momento de escrever a maior VM, pode criar uma série Mv2 (parte da
família de memória otimizada) com 208 CPUs virtuais e 5,7 TiB de memória. Isso deve
tornar um servidor Minecraft decente, não acha?!
A principal coisa a aprender aqui é que o número de VMs e a quantidade de CPU
e memória que pode pedir no Azure são limitados apenas pelo seu orçamento. Prova-
velmente teria dificuldades em criar VM deste tamanho no mundo on-premises
tradicional.
Quando criar uma VM no portal Azure ou através da CLI ou do PowerShell, deve
escolher o tamanho de VM a utilizar. Um tamanho de VM comum, como o D2s_v3,
é frequentemente usado como predefinição para começar. É provável que seja dema-
siada potência para um servidor Web básico, neste capítulo, mas é rápido para criar a
VM e instalar os pacotes necessários!
O portal Azure permite filtrar com base num tamanho duro (como pequeno, médio
ou grande) ou numa família específica (como VM para propósitos gerais ou otimizadas
pela memória). Uma estimativa do custo mensal é também apresentada para lhe dar
uma ideia do quão cara cada VM é. Preste atenção aos custos, pois podem aumentar
rapidamente! De forma razoável, pode habitualmente mudar o tamanho da VM depois
de estar em funcionamento, mas a VM deve encerrar e reiniciar para completar
o processo.
18 Capítulo 2 Criar uma virtual machine
Redução de custos de VM
As VM criadas por predefinição são muitas vezes dominadas pelo que precisa, mas
são rápidas na implementação e na utilização, o que ajuda a reduzir o tempo que gasta
na instalação de pacotes na sua pausa para almoço.
No mundo real, preste atenção à memória, CPU e exigências de armazenamento das
suas VM. Crie VM com dimensões adequadas. Esta abordagem é a mesma que no
mundo on-premises, onde pode acabar com VM que têm muito mais memória ou mui-
tas CPU virtuais atribuídas mais do que o necessário.
Há também um tipo especial de VM em Azure: a série B. Estes tamanhos de VM utilizam
recursos de CPU e memória inicializáveis e pode utilizar créditos bancários para
recursos de computação não utilizados. Se pretender poupar os seus créditos do Azure,
escolha esta série de VM para os exercícios do livro. Possuem um preço mais baixo e são
ótimas para cenários em que nem sempre precisa de muitos recursos de CPU e memó-
ria. Contudo, tenhacuidado: dependendo do tamanho da série B da VM que cria, pode
ter menos CPU e memória do que algo como a série D2s_v3, por isso vai ser mais lenta.
Experimente agora
Para verificar os seus conhecimentos, trabalhe as seguintes questões:
¡ Para a maioria dos workloads de produção, que tipo de disco fornece o me-
lhor desempenho?
Um disco SSD premium é normalmente o que deve executar para
workloads de produção. Este tipo é muitas vezes a escolha padrão quando se cria
uma VM. Os discos SSD standard são uma boa segunda escolha e os SSD Ultra só
devem ser usados em aplicações intensivas em disco que requerem baixa latência.
Embora haja menos gastos com os HDD padrão, o desempenho é muitas vezes
excelente, assim como em ambientes virtuais on-premises.
¡ Que família VM é uma boa escolha para um servidor de base de dados?
Uma VM otimizada pela memória é uma boa opção, uma vez que, muitas
vezes, as bases de dados precisam de mais memória do que recursos da CPU.
Tente sempre estimar as necessidades dos recursos e, em seguida, monitorizar
o desempenho após a implementação. Não tenha medo de mudar para um tama-
nho de VM diferente para fornecer o desempenho desejado.
O servidor web básico que vai construir neste capítulo requer um tipo específico
de endereço IP virtual: um endereço IP público. Este endereço IP público é atribuído à
NIC virtual e permite que o tráfego externo chegue à sua VM. Em seguida, pode contro-
lar o fluxo do tráfego para a sua VM com NSG (grupos de segurança de rede). Pense
numa firewall normal que utiliza para abrir ou fechar várias portas e protocolos. Em
Azure, os grupos de segurança de rede bloqueiam o tráfego por predefinição e permi-
tem apenas o tráfego específico que definiu. O tráfego comum a permitir seria HTTP
ou HTTPS nas portas TCP 80 e 443. A gestão remota através da utilização do protocolo
de ambiente de trabalho remoto (RDP) ou Secure Shell (SSH) também pode ser
aberta, com cuidado, o que fará mais tarde neste capítulo para ver como ligar e instalar
alguns pacotes.
Experimente agora
Criar um par de chaves públicas SSH, através do Azure Cloud Shell:
Criação de um par de chaves SSH para autenticação 21
Figura 2.2 Selecione e inicie o Cloud Shell no portal Azure selecionando o ícone do Shell.
2 Quando abrir o Cloud Shell pela primeira vez, vai demorar alguns instantes para
criar um armazenamento persistente que está sempre ligado às suas sessões. Este
armazenamento permite-lhe guardar e obter scripts, ficheiros de configuração e
pares de chaves SSH. Aceite todos os avisos para permitir a criação do
armazenamento.
3 Se necessário, escolha Bash no menu suspenso no canto superior esquerdo do
Cloud Shell. Está também disponível o suporte PowerShell, embora nos concen-
tremos principalmente na Bash e no CLI do Azure ao longo do livro.
4 Para criar um par de chaves, introduza o seguinte comando:
ssh-keygen
Figura 2.3 Um par de chaves SSH criado no Azure Cloud Shell com o comando ssh-keygen
22 Capítulo 2 Criar uma virtual machine
6 Para ver a sua chave pública e utilizá-la com uma VM, introduza o seguinte
comando:
cat .ssh/id_rsa.pub
Experimente agora
Criar uma VM em Azure dá-lhe várias predefinições que pode usar para reduzir o número
de escolhas que tem que fazer. Para este exercício, veja os recursos que o Azure vai criar
com base no que aprendeu na secção 2.2 para questões de rede e armazenamento:
(continuação)
Uma forma comum de fornecer acesso remoto é usar um host bastião, ou uma caixa de
salto. Neste tipo de configuração, não se liga diretamente aos servidores de aplicações
do seu computador. Em vez disso, liga-se a um host bastião dedicado e, em seguida,
liga-se ao servidor que precisa de gerir. Esta abordagem bloqueia o acesso a um con-
junto limitado de endereços e proporciona uma forma segura de permitir a
gestão remota.
O Azure Bastion (https://docs.microsoft.com/azure/bastion) fornece uma abordagem
gerida para esta necessidade de ligação remota segura. Pode criar um host Azure Bas-
tion numa sub-rede dedicada e, em seguida, use este host para se ligar às VM que cor-
rem as suas aplicações. Essas VM não precisam de ser acessíveis ao público. Pode fazer
tudo através do portal Azure sem abrir portas de rede para SSH ou RDP. O próprio
host bastião é gerido para si em termos de atualizações de segurança e regras de
grupos de segurança de rede.
Experimente agora
Se o Linux for algo novo para si, não se preocupe! Siga os próximos passos para iniciar
sessão na sua VM:
Figura 2.4 Selecione a sua VM no portal Azure e selecione Ligar para gerar as informações de ligação SSH.
Com uma VM Linux, vê o comando SSH que inclui o seu nome endereço IP
público. Copie este comando de ligação SSH, tal como o ssh
azuremol@104.209.208.158.
Numa VM Windows, o botão Ligar faz download de um ficheiro de liga-
ção RDP para o computador que está pré-povoado com o endereço IP público
da VM.
2 Se necessário, abra o Cloud Shell novamente. Se estiver a alternar entre o Cloud
Shell e o portal, poderá minimizar o Cloud Shell para o manter disponível em
segundo plano.
3 Cole o comando SSH no Cloud Shell e, em seguida, prima Enter. A chave SSH
que criou anteriormente é utilizada automaticamente para o autenticar.
Quando se liga a uma VM com SSH pela primeira vez, esta pede a adicio-
nar a uma lista de hosts fidedignos. Esta é mais uma camada de segurança que a
SSH fornece. Se alguém tentar intercetar o tráfego e direcioná-lo para uma VM
remota diferente, o cliente SSH local sabe que algo mudou e vai avisá-lo antes
de se ligar.
Aceite o aviso para armazenar a ligação à VM remota. A figura 2.5 mostra o pro-
cesso de ligação SSH no Azure Cloud Shell.
26 Capítulo 2 Criar uma virtual machine
Figura 2.5 Utilize a cadeia de ligação mostrada no portal Azure para criar uma ligação SSH à VM a
partir do Cloud Shell.
Neste ponto,onde quer que se encontre, o aviso do Linux é-lhe totalmente estranho.
Não se preocupe. Não precisa de conhecer um grande número de comandos do Linux
e cada comando é explicado ao longo do livro. Dito isto, recomendo que aprenda pelo
menos algumas competências básicas de administração do Linux. Grande parte da
cloud é baseada em sistemas Linux, e há uma grande movimentação em direção a con-
tainers e microsserviços para desenvolvimento e gestão de aplicações. Se for um admi-
nistrador do Windows à antiga, seja bem-vindo! Há uma surpresa preparada para si no
fim do capítulo, por isso, seja paciente.
Experimente agora
Na sessão SSH para a VM, instale os pacotes do servidor Web com a APT:
os visitantes acedam ao seu servidor Web através da Internet, precisa de criar uma
regra no grupo de segurança de rede que permita o tráfego Web. Caso contrário, nin-
guém pode encomendar pizzas!
Experimente agora
Abra o Azure Cloud Shell e siga estes passos para ver o CLI do Azure em ação:
NOTA Se é atento, pode ter reparado que o comando gerou informações sobre
a versão do Python. Por que esta informação é importante? O Python é uma
linguagem de programação poderosa e popular. O CLI do Azure é escrito em
Python, o que em parte a converte numa multiplataforma e está disponível
para que a instale localmente em qualquer computador se não quiser utilizar
sempre o Cloud Shell. Para acompanhar as ações da Microsoft em termos de
contribuição para a comunidade de código aberto, o CLI do Azure está dispo-
nível no GitHub para que qualquer pessoa faça contribuições, sugestões ou
reporte problemas (https://github.com/Azure/azure-cli).
1 No portal Azure, selecione a sua VM, caso tenha saído dela. O endereço IP
público encontra-se listado no canto superior direito da página de descrição
geral da VM.
Laboratório: criar uma VM Windows 29
Figura 2.6 Para ver o servidor Web em ação e ver a página predefinida do Apache 2, introduza
o endereço IP público num browser.
Figura 2.7 Para poupança de custos, elimine grupos de recursos quando já não precisar deles.
Se tiver o hábito de eliminar recursos quando deixar de os utilizar, pode fazer isso con-
fortavelmente neste livro com os créditos gratuitos do Azure. No mínimo, tente desalo-
car a sua VM no final de cada lição para que possa retomar no dia seguinte e controlar
o tempo de faturação.
Houston, temos um problema 31
Os problemas mais comuns com VM ocorrem quando se liga à sua VM. Pode
estar a ligar-se a administração remota com SSH ou RDP, ou a tentar aceder às suas
aplicações através de um browser Web ou cliente de ambiente de trabalho. Estes pro-
blemas estão frequentemente relacionados com a rede. Não culpo totalmente os res-
ponsáveis pela rede até ao capítulo 5, por isso veja algumas coisas que pode verificar:
32 Capítulo 2 Criar uma virtual machine
3
No capítulo 2, criou uma virtual machine (VM) e instalou pacotes manualmente para
executar um servidor Web básico. Poderia criar uma pizzaria online com esta VM se
estivesse ansioso para começar. Um dos maiores casos práticos das VMs do Azure con-
siste em executar aplicações Web, normalmente à escala. As aplicações Web são um
workload confortável para as VMs. É bom sentirmo-nos confortáveis, se também gos-
tar da manutenção que acompanha a gestão de todas as VM, como por exemplo, coi-
sas divertidas como atualizações de software, patches de segurança, registo
centralizado e relatórios de conformidade. E se pudesse obter todo o poder de um
servidor Web seguro para executar as suas aplicações Web, incluindo a capacidade de
dimensionamento automático para satisfazer as exigências, sem a necessidade de
criar e gerir todas essas VM? Deixe-me apresentá-lo ao serviço Azure Web Apps.
Neste capítulo, comparamos a abordagem de VM e servidores Web da Infraestru-
tura como Serviço (IaaS) com a abordagem da Plataforma como Serviço (PaaS). Vai
conhecer as vantagens do Azure Web Apps ao criar uma aplicação Web e descobrir
como trabalhar com as suas versões de desenvolvimento e produção. Em seguida, vai
aprender a implementar a sua aplicação Web automaticamente a partir de um con-
trolo de origem, como o GitHub. Este workflow é mostrado na figura 3.1. Azure Web
Apps permitem-lhe implementar e executar a sua pizzaria online numa questão de
minutos, sem a necessidade de instalar e configurar um pacote de VM e servidor web.
Figura 3.1 Neste capítulo, vai criar um plano do serviço de aplicações e uma aplicação Web básica
e, em seguida, implementar um site do GitHub.
33
34 Capítulo 3 Azure Web Apps
Quando precisa de criar um recurso do App Service, como uma aplicação Web, cria
ou utiliza um plano de serviço existente. O plano de serviço define a quantidade de
recursos disponíveis para si, a quantidade de automatização disponível para escalar e
apoiar a sua aplicação web, e quão altamente disponível se encontra para disponibilizar
o seu site com blocos de paragem e Traffic Manager (uma forma de encaminhar geo-
graficamente o tráfego para a instância mais próxima para um utilizador, que vamos ver
no capítulo 11). Como em qualquer coisa, recebe pelo que paga. A sua aplicação e
necessidades de negócio devem guiá-lo quanto à quantidade de recursos necessários e
quais as funcionalidades adicionais necessárias. Cada escalão de serviço baseia-se nas
funcionalidades dos escalões inferiores, geralmente adicionando mais armazenamento
e recursos disponíveis.
Os quatro escalões principais do plano de serviço são os seguintes:
¡ Gratuito/Partilhado—Utiliza uma infraestrutura partilhada; oferece armazena-
mento mínimo e não tem opções para implementar diferentes versões de teste,
encaminhamento de tráfego ou cópias de segurança. O escalão Partilhado permi-
te-lhe utilizar um domínio personalizado e cobra por esse domínio.
¡ Básico— Fornece recursos de cálculo dedicados para a sua aplicação web, e per-
mite-lhe utilizar o SSL e escalar manualmente o número de instâncias de aplica-
ções web que executou. Os escalões gratuitos/partilhados e básicos fornecem um
bom ambiente para testar o serviço de Web Apps, mas não recomendaria execu-
tar qualquer workload de produção ou desenvolvimento reais. O desempenho
não é um fator limitativo, mas perde algumas das funcionalidades automatizadas,
como cópias de segurança e escalas.
¡ Padrão—Adiciona cópias de segurança diárias, dimensionamento automático de
instâncias de aplicações Web e blocos de implementação, e permite encaminhar
utilizadores com o Traffic Manager. Este escalão pode ser adequado para aplica-
ções de baixa procura ou ambientes de desenvolvimento em que não precisa de
um grande número de cópias de segurança ou blocos de implementação.
¡ Premium—Fornece cópias de segurança mais frequentes, maior armazenamento
e um maior número de blocos de implementação e opções de dimensionamento
de instâncias. Este escalão é ideal para a maioria dos workloads de produção.
O caso do isolamento
Com soluções PaaS tais como as Web Apps, a infraestrutura é intencionalmente
reduzida. Como os nomes de alguns escalões do plano de serviço implicam, as apli-
cações Web são executadas numa plataforma partilhada de recursos disponíveis.
Isso não significa que as aplicações Web são inseguras e que outros podem ver os
seus dados privados! Mas por motivos de conformidade ou regulamentares podem
exigir que execute as suas aplicações num ambiente controlado e isolado. Introduza
App Service Environments: ambientes isolados que lhe permitem executar instâncias
do App Service como as aplicações Web numa parte segmentada de um datacenter
do Azure. Controla o tráfego de rede de entrada e saída e pode implementar firewalls
e criar ligações de rede privada virtual (VPN) nos recursos on-premises.
Todos estes componentes da infraestrutura ainda são amplamente abstraídos com
ambientes do App Service, mas esta abordagem fornece um excelente equilíbrio
quando pretende a flexibilidade das soluções PaaS, mas também pretende reter
alguns dos controlos mais refinados sobre o fluxo de tráfego das ligações de rede.
Criar uma aplicação Web 37
Pode fazer muito com os escalões Gratuito e Básico, embora para os workloads de pro-
dução deva provavelmente utilizar o escalão Padrão ou Premium. O exemplo deste
capítulo utiliza o escalão Padrão para que possa ver todas as funcionalidades disponí-
veis. Ao utilizar as Web Apps com as suas próprias aplicações, pode decidir quantas
destas funcionalidades são necessárias e selecionar o escalão do plano de serviço mais
apropriado em conformidade.
NOTA Se nunca tiver utilizado o Git, não se preocupe. Não precisa de entender
o que faz o Git neste momento, e tem tempo para brincar e explorar um
pouco no fim do capítulo. Conhecer o Git num mês de almoços, de Rick Umali
(https://www.manning.com/books/learn-git-in-a-month-of-lunches), é uma
excelente introdução para usar o Git se quiser aprender um pouco mais, e está
disponível para ler gratuitamente na plataforma Manning liveBook.
Experimente agora
Para criar uma aplicação Web, conclua os passos que se seguem:
Figura 3.3 Para ver a página predefinida da aplicação Web em ação, abra um browser com o URL do seu site.
Criar uma aplicação Web 39
Copiar ficheiros
Ficheiros HTML
git clone Criar local git push para a
de exemplo no
Criar local aplicação Web
GitHub.
do Azure.
Figura 3.4 Cria uma cópia local dos ficheiros de exemplo do GitHub com o comando git clone. Para
emitir estes ficheiros locais via push para a sua aplicação Web do Azure, utilize git push
Experimente agora
Para obter uma cópia da página HTML de exemplo do GitHub e efetuar a emissão da
mesma via push para a sua aplicação Web, conclua os passos seguintes:
1 Abra o Cloud Shell no portal Azure e aguarde alguns segundos até que a sua ses-
são se ligue. Para começar, precisa do site de amostra HTML do GitHub.
Para clonar ou copiar o site HTML de exemplo do GitHub, introduza o seguinte
comando:
git clone https://github.com/fouldsy/azure-mol-samples-2nd-ed.git
Se for a sua primeira vez a usar o Git no Cloud Shell, vai precisar de definir algu-
mas definições para que o Git entenda quem você é. Para a maioria dos exercícios
neste livro, o Git não se importa realmente com o utilizador, mas para a utilização
com os seus próprios projetos e aplicações, é uma ótima forma de realizar o con-
trolo de quem executa certas ações num sistema de controlo de origem. Só pre-
cisa de definir estas definições uma vez. Introduza o seu próprio endereço de
e-mail e nome completo nas config do Git da seguinte forma:
40 Capítulo 3 Azure Web Apps
3 Para se preparar para carregar a página HTML de exemplo, deve iniciar o Git e,
em seguida, adicionar e confirmar os seus ficheiros. Não se preocupe muito com
os comandos do Git por agora! Precisa de dizer ao Git que ficheiros devem ser
controlados e adicionados e deve ter uma maneira de controlar essas alterações
mais tarde, se necessário:
git init && git add . && git commit -m "Pizza"
4 Agora pode preparar-se para emitir este site HTML de exemplo via push para a
sua aplicação Web. Primeiro, defina as credenciais de implementação. Para pro-
teger as Web Apps quando utilizar um método de implementação como o Git ou
FTP, tem de fornecer um nome de utilizador e uma palavra-passe. As Web Apps
podem usar um conjunto de credenciais que são válidas em todos os planos de
serviço de aplicações em Azure ou credenciais de nível de aplicação que se apli-
cam apenas a uma única aplicação.
No mundo real, recomendo que use credenciais de nível de aplicação para
minimizar o alcance de um ataque caso uma das credenciais seja exposta. O Azure
gera automaticamente as credenciais de nível de aplicação, mas tem de recuperar
e atribuir essas credenciais de cada vez. Para manter as coisas simples, use uma
credencial definida que pode reutilizar nos próximos capítulos.
Crie as credenciais de implementação e especifique o seu próprio nome de
utilizadores e palavra-passe seguros. O nome de utilizador deve ser globalmente
exclusivo. Se ajudar, adicione as suas iniciais ao nome de utilizador ou a uma con-
venção de nomeação que faça sentido para o seu ambiente.
az webapp deployment user set --user-name azuremol --password @azurem0l!
5 Em seguida, precisa de obter o URL para o repositório Git da sua aplicação web.
Introduza o nome da aplicação web (não o nome de utilizador que criou no
passo 4) e o grupo de recursos que especificou quando a aplicação web foi criada
para ver o URL do repo do Git.
6 A sua aplicação Web está configurada para funcionar com os repositórios Git,
por isso precisa de indicar ao Cloud Shell qual é o repositório. No Git, definem-
-se estas localizações como remotas.
Copie o URL de clonagem do Git no passo 5 e, em seguida, defina este URL
como um destino para o site HTML de exemplo no Cloud Shell com o seguinte
comando:
git remote add azure your-git-clone-url
7 Para carregar ou copiar ficheiros com o Git, deve emiti-los via push. Para onde é
que o Git os emite via push? Um local remoto como o que configurou no passo 6,
como azure. A parte final do comando é um ramo, normalmente master. Um
ramo no Git é o meio para manter os modelos trabalhos em curso sob controlo.
Uma prática recomendada em ambientes de produção consiste em emitir via
push para os ramos de lançamento que pode nomear como pretender, como dev
ou staging. Estes ramos adicionais permitem que o seu código de produção seja
executado normalmente. Depois, pode, trabalhar em novas funcionalidades ou
atualizações com segurança e sem afetar os workloads reais que os seus clientes
utilizam.
Emita o site HTML de exemplo via push para a sua aplicação Web:
git push azure master
8 Quando lhe for pedido, introduza a palavra-passe que criou para as credenciais
de implementação. Pode copiar e colar a palavra-passe para minimizar erros aqui.
Pode ver na saída que a página predefinida do site da aplicação Web existente é remo-
vida e o site HTML de exemplo é carregado e configurado para ser executado. Veja um
exemplo de saída:
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 510 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Updating branch 'master'. remote: Updating submodules.
remote: Preparing deployment for commit id 'dda01e9d86'.
remote: Generating deployment script.
remote: Generating deployment script for Web Site
remote: Running deployment command...
remote: Handling Basic Web Site deployment.
remote: Creating app_offline.htm
remote: KuduSync.NET from: 'D:\home\site\repository' to:
'D:\home\site\wwwroot'
remote: Deleting file: 'hostingstart.html'
remote: Copying file: 'index.html'
remote: Deleting app_offline.htm
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
To https://azuremolikf@azuremol.scm.azurewebsites.net/azuremol.git
* [new branch] master -> master
42 Capítulo 3 Azure Web Apps
Para ver a sua aplicação Web atualizada, atualize o seu site num browser ou abra-o
novamente na janela Descrição Geral no portal Azure. Deve parecer-se como o exem-
plo maravilhoso na figura 3.5. Sim, o site é básico, mas o workflow para implementar o
site HTML estático mais básico numa complexa aplicação Web .NET ou Node.js é o
mesmo!
Os eventos da aplicação
são transmitidos para
os registos
Registos de
aplicações
Acesso via
Registos
Azure agrupados em FTP ou
Web App tempo real para transmissão
análise
em direto
Registos de
Os eventos do servidor
são transmitidos para servidor Web
os registos
Figura 3.6 A sua aplicação pode gerar registos de aplicações e registos de servidores. Para o ajudar
a analisar ou resolver problemas, pode fazer download destes registos por FTP ou visualizá-los em
tempo real.
Ver registos de diagnóstico 43
Experimente agora
Para configurar a sua aplicação Web para registos de diagnóstico, conclua os passos
seguintes:
Experimente agora
Veja os ficheiros de registo de streaming no portal Azure. Talvez seja necessário atualizar
a página no seu browser algumas vezes para gerar atividade nos registos.
44 Capítulo 3 Azure Web Apps
Figura 3.7 Pode ver os fluxos de registo do servidor Web das Web Apps de registos em direto a partir da
sua aplicação para ajudar a verificar e depurar o desempenho da aplicação. A caixa da consola no lado
direito do ecrã mostra os registos de streaming em tempo real da sua aplicação Web.
À medida que ficar mais familiarizado com o Azure e utilizar o módulo do CLI do
Azure ou do Azure PowerShell, pode transmitir registos em fluxo com estas ferramen-
tas. Os programadores também podem ativar a depuração remota com o Visual Studio
ou configurar o Application Insights para permitir que a aplicação Web forneça tele-
metria a serviços adicionais para monitorização e diagnóstico. A solução aqui é que, à
medida que migra para soluções PaaS como as aplicações Web, ainda pode obter regis-
tos de diagnóstico cruciais e dados de aplicações para resolver problemas e monitori-
zar o desempenho da sua aplicação Web.
2 Quando estiver pronto, selecione o bloco de teste a partir da lista. O portal mos-
tra as mesmas opções de configuração e de registo que o bloco de produção, o
que mostra como pode alterar as definições neste bloco de implementação sem
afetar o site ativo.
3 Desta vez, explore as opções no portal Azure para o Centro de Implementação.
Pretende utilizar o Git Local para o controlo de origem que utiliza o serviço de
compilação do App Service para o bloco de teste. Isto aconteceu em segundo
plano quando utilizou o Azure CLI no exercício anterior, mas tem outras opções
em termos de onde pode implementar o código e que serviço compila e cria essa
implementação.
4 Quando terminar, copie o Uri do Git Clone, tal como https://azuremol-dev.
scm.azurewebsites.net:443/azuremol.git. Veja como o repositório Git inclui
o -dev para o bloco de teste.
Está incluído um site de desenvolvimento de exemplo nos exemplos do GitHub
que clonou anteriormente.
5 No Azure Cloud Shell, mude para o diretório de desenvolvimento da seguinte
maneira:
cd ~/azure-mol-samples-2nd-ed/03/dev
7 Crie uma ligação para o novo repositório Git no bloco de teste com git remote
add dev, seguido pelo URL de implementação do Git do bloco de teste.
8 Utilize git push dev master para emitir as suas alterações via push para o bloco
de implementação.
9 Selecione o URL para o bloco de teste na janela Descrição Geral do portal Azure.
Não se nota uma grande alteração, claro, mas o título da página permite-lhe
saber que está a ver a versão de desenvolvimento.
10 No portal Azure para a aplicação Web, o
que acha que acontece se selecio-
nar o botão Trocar, como mostra a
figura 3.8? Experimente e, em seguida,
atualize a página principal, como por
exemplo https://azure-mol.azurewebsites.
net, no seu browser.
4
Podemos ter a certeza de uma coisa no mundo das TI: quando as coisas correm mal,
o armazenamento e a rede são, inevitavelmente, os culpados. Digo isto como alguém
que já foi administrador de SAN numa das minhas vidas passadas! Era muito amigo
da equipa de rede. Estou a brincar (sobre ser o melhor amigo), mas não importa
o quão bem uma aplicação foi concebida e escrita: os componentes fundamentais
da infraestrutura devem estar a funcionar para suportá-la. Fique comigo nos próxi-
mos capítulos enquanto exploro o Azure Storage e o Azure Networking. Pode sentir
a tentação de passar por cima destes serviços chegar ao material fantástico nos capí-
tulos posteriores, mas é válido passar algum tempo a explorar e a aprender estes
serviços core. Isso não vai fazer com que a sua comida saiba melhor, mas pode aju-
dar os seus clientes ao pedirem deliciosas pizzas para entrega!
Este capítulo analisa os diferentes tipos de armazenamento no Azure e quando
utilizá-los. Também falo sobre as opções de redundância e replicação do serviço
Azure Storage e como obter o melhor desempenho para as suas aplicações.
4.1.1 Discos do SO
Lembra-se que, se quisesse o melhor desempenho, tinha de comprar SSDs? Não há
nenhuma forma mágica para contornar esse requisito no Azure. Sinto muito. A ver-
dade é que os SSDs superam muito os discos giratórios normais. Há limites físicos para
a rapidez com que os discos giratórios podem. . . bem, girar. Os engenheiros da Micro-
soft ainda não conseguiram desafiar as leis da física! Ainda há casos práticos para dis-
cos giratórios normais (como o armazenamento de arquivos de baixo custo) e, assim
como em matrizes de armazenamento normais, as tecnologias mais recentes podem
fornecer um bom desempenho num conjunto de discos giratórios.
A primeira e principal escolha que precisa de fazer para uma VM do Azure é o tipo
de armazenamento que deve ser utilizado:
¡ Discos SSD premium — Utilize discos SSD de alto desempenho para obter um
desempenho ideal, maior IOPS e baixa latência. Tipo de armazenamento reco-
mendado para a maioria dos workloads de produção.
¡ Discos SSD padrão— Utilize SSD padrão e ofereça um desempenho consistente
comparativamente com as unidades de disco rígido (HDD). Estes discos são exce-
lentes para workloads de desenvolvimento e teste ou para utilização em ambien-
tes de produção com orçamento limitado e pouca procura.
¡ Discos HDD padrão — Utilize discos giratórios normais para obter
acesso a dados mais raros, como arquivos e cópias de segurança.
O tamanho da VM que escolher ajuda a determinar o tipo de armazenamento que
pode ser selecionado. De volta ao capítulo 2, quando criou uma VM, escolheu um
tamanho para obter rapidamente uma VM. A predefinição era provavelmente algo
como uma VM Série D2S_v3, que lhe dava acesso a discos SSD premium. Como pode
Discos Geridos 49
saber quais VMs podem aceder a discos SSD premium? Procure um s, no tamanho da
VM, para SSD. Existem algumas exceções à regra, mas esse é um bom padrão a seguir.
Os exemplos seguintes ajudam a identificar quais as VMs que podem aceder a discos
premium e quais as VMs que podem aceder a SSDs ou HDDs padrão:
¡ As VMs Série D2S_v3, Fs, GS e Ls podem aceder a discos SSD premium.
¡ As VMs série D, A, F e M só podem aceder a discos SSD ou HDD padrão.
Se selecionar um tamanho de VM que possa utilizar discos SSD premium, não tem qual-
quer obrigação de fazer isso. Pode criar e utilizar discos SSD ou HDD padrão. Ao escolher
discos SSD premium, prepara a aplicação para o futuro e tem a opção de utilizar SSDs de
alto desempenho, pois precisa deles sem redimensionar as suas VMs nem sofrer interrup-
ções no processo. Todos os tamanhos de VM podem utilizar discos SSD padrão.
Disco do SO efémero
Há um tipo especial de disco do SO denominado disco efémero. Continua a ser um disco
gerido, de certa forma, mas é local para o host do Azure subjacente. Este facto faz com
que um disco efémero seja realmente rápido, com baixa latência.
Como os dados não são escritos para uma matriz de armazenamento remoto, os dados
podem não persistir durante a reinicialização da VM se mudar para um host subjacente
diferente. Os discos efémeros são ótimos para workloads sem estado que podem lidar
com o arranque com uma imagem limpa de cada vez e não precisam de armazenar
dados localmente para aceder em reinicializações.
Apenas certos tamanhos de VM suportam discos efémeros, mas não há custos adicio-
nais para a sua utilização e estão disponíveis em todas as regiões. Perde-se alguma fun-
cionalidade para coisas como o Azure Site Recovery e o Azure Disk Encryption (capítulos
13 e 14, respetivamente), mas se quiser um armazenamento de alta velocidade e baixa
latência, consulte os discos efémeros.
Experimente agora
Como pode dizer quais tamanhos de VM estão disponíveis para si? No portal Azure, abra
o Cloud Shell. Introduza o seguinte comando (sinta-se livre para utilizar a sua própria
região):
az vm list-sizes --location eastus --output table
Lembre-se que qualquer tamanho com um s fornece acesso a discos SSD premium.
Experimente agora
Para criar uma VM e ver os discos de dados em ação, conclua os passos a seguir:
1 No Azure Cloud Shell, crie um grupo de recursos com az group create, forne-
cendo um nome para o grupo de recursos juntamente com uma localização:
az group create --name azuremolchapter4 --location eastus
Adicionar discos a uma VM 51
Experimente agora
Adicione um disco de dados adicional à sua VM, conforme mostrado a seguir.
Crie um novo disco com o comando az vm disk attach. Forneça um nome e tama-
nho para o disco. Lembra-se do tema anteriormente debatido sobre discos padrão e
premium? No exemplo a seguir, cria um disco SSD premium:
az vm disk attach \
--resource-group azuremolchapter4 \
--vm-name storagevm \
--name datadisk \
--size-gb 64 \
--sku Premium_LRS \
--new
52 Capítulo 4 Introdução ao Azure Storage
Figura 4.1 Uma conta do Azure Storage permite-lhe criar e utilizar uma grande variedade de
funcionalidades de armazenamento, muito além de apenas um lugar para armazenar ficheiros.
Neste capítulo, não me quero aprofundar demasiado sobre as bases de dados NoSQL.
O capítulo 10 explora algumas bases de dados NoSQL interessantes em detalhe com o
Azure Cosmos DB. Na verdade, no exercício a seguir, utiliza a API do Cosmos DB
para se ligar ao Azure Storage e criar uma tabela. A utilização de tabelas do Azure é mais
uma introdução às bases de dados NoSQL do que um exemplo sólido de utilização em
ambientes de produção.
Por enquanto, execute uma aplicação experimental rápida para ver como pode adicio-
nar e consultar dados, exatamente como faria com uma aplicação real. Estes exemplos
são básicos, mas mostram como pode armazenar os tipos de pizza que vende e quanto
custa cada pizza. Em vez de utilizar algo grande como o Microsoft SQL Server ou
o MySQL, utilize uma base de dados NoSQL com o armazenamento de tabelas do Azure.
Experimente agora
Para ver as tabelas do Azure em ação, conclua os passos a seguir:
de script que funciona em SOs. O Python não se destina apenas ao scripting; também
pode ser utilizado para criar aplicações complexas. Por exemplo, o Azure CLI que está a
utilizar é escrito em Python.
Utilizo Python para alguns dos exemplos neste livro porque estes devem funcionar fora
do Cloud Shell sem modificação. As distribuições de macOS e Linux são nativamente
incluídas com Python. Os utilizadores do Windows podem fazer download e instalar rapi-
damente Python e, em seguida, executar estes scripts localmente. Python é ótimo para
aqueles com pouca experiência de programação, como para os programadores mais
experientes que estão familiarizados com outras linguagens. A documentação do Azure
para o Azure Storage e muitos outros serviços fornece suporte para diversas linguagens,
incluindo .NET, Java e Node.js. Não está limitado a utilizar Python ao criar as suas pró-
prias aplicações que utilizam tabelas.
O Quick Python Book, 3.ª edição, de Naomi Ceder (http://mng.bz/6QZA), pode
ajudar a atualizar-se, se quiser saber mais. Há também um curso baseado em vídeo
para Get Programming with Python in Motion, de Ana Bell (http://mng.bz/oPap).
Experimente agora
Para ver o Azure Queues em ação, execute o seguinte script de Python a partir do mesmo
diretório azure-samples/4. Siga os avisos para ver as mensagens escritas, lidas e elimi-
nadas da fila:
python storage_queue_demo.py
Continue com a aplicação experimental que lida com pedidos de pizza. Pode ter um
componente de aplicação front-end com o qual os clientes interagem para encomen-
dar as pizzas e uma fila de mensagens que transmite mensagens para um componente
de aplicação de back-end que processa esses pedidos. Conforme os pedidos são recebi-
dos, as mensagens na fila podem ser visualizadas como mostrado na figura 4.2.
56 Capítulo 4 Introdução ao Azure Storage
Figura 4.2 As mensagens são recebidas do componente de aplicação front-end que detalha a pizza que cada
cliente pediu na propriedade Message Text.
Figura 4.3 À medida que cada mensagem é processada, é removida da fila. A primeira mensagem mostrada
na figura 4.2 foi removida depois de ser processada pelo componente de aplicação de back-end.
4.4.1 Focado na VM
Se quiser iniciar sessão numa VM e ver que o processo para inicializar um disco e criar
um sistema de ficheiros é o mesmo que qualquer outra VM com a qual tenha traba-
lhado, experimente um destes exercícios:
1 Inicie sessão na VM que criou na secção 4.2. Dependendo da sua escolha, irá
ligar-se com SSH ou RDP.
2 Inicialize o disco e crie uma partição.
¡ No Linux, o fluxo é fdisk, mkfs e mount.
¡ No Windows, utilize qualquer sequência com a qual esteja familiarizado — pro-
vavelmente Gestão de Discos > Inicializar > Criar Volume > Formato.
Rede virtual
VM caixa
VM Web
de salto
Alguns dos componentes de rede serão abstraídos se utilizar recursos de PaaS. Os com-
ponentes principais que utiliza para as VMs são os seguintes:
¡ Redes virtuais e sub-redes (incluindo conjuntos de endereços IP)
¡ Placas de interface de rede virtual
¡ Um ou mais endereços IP públicos
¡ Nome DNS interno e nomes DNS públicos opcionais para a resolução de
nomes externos
¡ Grupos de segurança de rede e regras, que protegem e controlam o fluxo
de tráfego de rede como uma firewall normal faz
Experimente agora
Em geral, é mais fácil visualizar as redes quando elas podem ser observadas em ação.
Vai utilizar o portal Azure para começar, o que acaba por ter alguns passos separados,
mas verá o poder do Azure CLI mais tarde no capítulo.
Não se preocupe muito sobre como utilizar os seus próprios espaços de endereço
ou nomes DNS personalizados. Para criar a sua rede virtual e sub-rede, conclua os pas-
sos a seguir:
Intervalos de endereços IP
As redes virtuais abrangem um determinado intervalo de IPs—um espaço de endereço.
Se já viu um endereço IP, pode ter reparado na máscara de sub-rede, muitas vezes algo
como 255.255.255.0. Esta máscara de sub-rede é frequentemente utilizada numa
forma abreviada que especifica o tamanho do intervalo, como /24.
O portal Azure assume por predefinição um espaço de endereço /24. Se pretender
aumentar o número de intervalos IP adicionais aqui sem ter que saber muito sobre
redes, basta aumentar o espaço de endereço para /16. Este tipo de endereço IP não se
concede diretamente a uma VM. No próximo passo, cria uma sub-rede que abrange uma
secção menor deste espaço de endereço.
Se os espaços de endereço de rede forem totalmente estranhos para si, não se preo-
cupe. Na maioria das vezes, não precisa de lidar com eles diariamente. A governação
sensata do Azure pode funcionar da mesma forma que no seu mundo de TI existente
on-premises: um grupo de pessoas pode gerir as redes virtuais do Azure e coloca as
suas aplicações num espaço pré-criado.
Experimente agora
Para criar uma NIC, conclua os passos que se seguem:
5 Não crie um grupo de segurança de rede por agora. Irá voltar ao mesmo em
alguns minutos. Se é inteligente e sabe tudo sobre IPv6, marque a caixa Ende-
reço IP Privado (IPv6) e forneça um nome. Caso contrário, utilize o IPv4.
6 Selecione o grupo de recursos existente do exercício anterior e, em seguida,
escolha criar a NIC na mesma região que a rede virtual.
7 Quando estiver pronto, crie a NIC.
62 Capítulo 5 Noções básicas do Azure Networking
Experimente agora
Para criar um endereço IP público e uma entrada DNS para a sua interface de rede, con-
clua os passos a seguir:
5 Introduza um nome DNS exclusivo. Este nome forma o nome de domínio com-
pletamente qualificado (FQDN) do recurso baseado na região do Azure em que
o cria. Se criar uma etiqueta de nome DNS para azuremol na região E.U.A. Leste,
por exemplo, o FQDN torna-se azuremol.eastus.cloudapp.azure.com.
Entradas de DNS
Que tal um nome DNS personalizado? O FQDN predefinido não é exatamente fácil de
utilizar! Utilize um endereço IP público estático e, em seguida, crie um registo CNAME na
sua zona DNS registada. Retém o controlo do registo DNS e pode criar quantas entradas
pretender para as suas aplicações.
Como exemplo, na zona DNS manning.com, pode criar um CNAME para azuremol que
aponta para um endereço IP público estático no Azure. Um utilizador iria aceder a azure-
mol.manning.com para obter a sua aplicação. Este endereço é muito mais fácil do que
webmol.eastus.cloudapp.azure.com!
Figura 5.2 O endereço IP público está associado a uma interface de rede. Com uma atribuição
dinâmica, nenhum endereço IP público é mostrado até que uma VM seja criada e ligada.
A figura 5.3 mostra o fluxo lógico de um pacote de rede de entrada à medida que
passa por um NSG. O mesmo processo seria aplicado aos pacotes de saída. O host do
Azure não diferencia o tráfego da Internet e o tráfego de outro lugar dentro do
ambiente do Azure, como outra sub-rede ou rede virtual. Qualquer pacote de rede de
entrada tem as regras do NSG de entrada aplicadas e qualquer pacote de rede de saída
tem as regras do NSG de saída aplicadas.
Aplicar a Sim
próxima regra
do NSG
Experimente agora
Para criar um grupo de segurança de rede, conclua os passos a seguir:
Experimente agora
Para associar a sua sub-rede de rede virtual ao grupo de segurança de rede, conclua
os passos a seguir:
Figura 5.4 São criadas regras de segurança predefinidas que permitem o tráfego da rede virtual interna ou do
balanceador de carga, mas recusam todo o outro tráfego.
Foram criadas três regras predefinidas para si. É importante enten-
der estas regras:
¡ AllowVnetInBound — Permite qualquer tráfego que seja interno à rede virtual. Se
tiver várias sub-redes na sua rede virtual, o tráfego não será filtrado por predefini-
ção e será permitido.
¡ AllowAzureLoadBalancerInBound — Permite que qualquer tráfego de um balancea-
dor de carga do Azure chegue à sua VM. Se colocar um balanceador de carga
entre as suas VMs e a Internet, esta regra irá garantir que o tráfego do balancea-
dor de carga chegue às suas VMs, como para monitorizar uma pulsação.
¡ DenyAllInBound — A regra final que é aplicada. Larga os pacotes de entrada que
chegaram até esse ponto. Se não existirem regras Permitir anteriores, esta regra
irá largar todo o tráfego por predefinição. Só precisa de permitir qualquer trá-
fego específico pretendido. O resto é largado.
A prioridade de uma regra do NSG é importante. Se for aplicada uma regra Permitir
ou Negar, não serão aplicadas regras adicionais. As regras são aplicadas em ordem de
prioridade numérica ascendente; uma regra com prioridade 100 é aplicada antes de
uma regra com uma prioridade 200, por exemplo.
Tal como se discutiu anteriormente sobre a governação de recursos do Azure, estas
regras do NSG já podem ser criadas e aplicadas a uma determinada sub-rede. Cria as
suas VMs e executa as suas aplicações e outra pessoa gere os NSGs.
É importante entender como o tráfego flui caso ocorra algum problema. Algumas
ferramentas no Azure podem ajudá-lo a determinar por que o tráfego pode não chegar
à sua aplicação quando deveria!
Experimente agora
Para criar as suas próprias regras com o grupo de segurança de rede, conclua os passos
a seguir:
68 Capítulo 5 Noções básicas do Azure Networking
1 Para criar uma regra do NSG a partir da janela anterior do portal Azure, sele-
cione Adicionar na secção Regras de Segurança de Entrada.
2 Tem duas opções para criar regras: Básico e Avançado. Para criar regras pré-cria-
das rapidamente, selecione Básico na parte superior da janela.
3 Escolha HTTP no menu pendente Serviço. São fornecidos muitos serviços pre-
definidos, como SSH, RDP e MySQL. Quando seleciona um serviço, é aplicado o
intervalo de portas apropriado: nesse caso, a porta 80. A ação predefinida sobre
as regras básicas permite o tráfego.
4 É atribuído um valor de prioridade a cada regra. Quanto menor o número,
maior a prioridade. Aceite a prioridade baixa predefinida, como 100.
5 Aceite o nome predefinido ou forneça o seu próprio nome. Em seguida,
selecione OK.
Experimente agora
Criou o primeiro NSG no portal Azure. Para criar outro NSG com a CLI do Azure,
conclua os passos a seguir:
3 Crie uma regra do NSG no novo NSG que permita a porta 22. Forneça o grupo
de recursos e o NSG que criou no passo anterior, juntamente com um nome,
como allowssh:
az network nsg rule create \
--resource-group azuremolchapter5 \
Criar uma aplicação Web de exemplo com tráfego seguro 69
--nsg-name remotensg \
--name allowssh \
--protocol tcp \
--priority 100 \
--destination-port-range 22 \
--access allow
4 Crie uma sub-rede de rede para a sua VM remota. Forneça um nome de sub-
-rede, como remotesubnet, juntamente com um prefixo de endereço dentro do
intervalo da rede virtual, como 10.0.2.0/24. Também anexa o NSG que criou
no passo 3 à sub-rede, como remotensg:
az network vnet subnet create \
--resource-group azuremolchapter5 \
--vnet-name vnetmol \
--name remotesubnet \
--address-prefix 10.0.2.0/24 \
--network-security-group remotensg
Tudo do que precisa para criar uma sub-rede, um NSG e uma regra são três comandos.
Sente o poder do Azure CLI? O Azure PowerShell é igualmente poderoso, portanto, não
pense que deve criar todos os recursos no portal Azure. À medida que for avançando
no livro, irá utilizar o Azure CLI em vez do portal na maioria dos casos.
Rede virtual
VM caixa
VM Web
de salto
Figura 5.5 Está a reunir duas sub-redes, NSGs, regras, interfaces de rede e VMs.
Este exemplo é semelhante a uma implementação pronta para produção em que uma
VM executa o servidor Web e está aberta ao tráfego público. É utilizada outra VM
numa sub-rede separada para as ligações remotas ao resto do ambiente de aplicação.
70 Capítulo 5 Noções básicas do Azure Networking
Quando cria uma VM, pode fornecer a interface de rede virtual que criou anterior-
mente. Se não especificou este recurso de rede, o Azure CLI cria uma rede virtual, uma
sub-rede e uma NIC utilizando os valores predefinidos incorporados. É ótimo para
criar uma VM rapidamente, mas é recomendado seguir o princípio dos recursos de
rede de longa duração. Estes recursos podem ser geridos por outra equipa e são o local
onde irá criar as suas VMs.
Experimente agora
Para utilizar o CLI Azure para criar o servidor Web e as VMs jumpbox, complete
os seguintes passos:
1 Crie a primeira VM para o seu servidor Web e forneça um nome, como webvm.
Anexe a interface de rede, como webvnic, e introduza uma imagem, como Ubun-
tuLTS. Forneça um nome de utilizador, como azuremol. O passo final, --generate-
ssh-keys, adiciona à VM as chaves SSH que criou no capítulo 2:
az vm create \
--resource-group azuremolchapter5 \
--name webvm \
--nics webvnic \
--image UbuntuLTS \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys
2 Crie a segunda VM para a jumpbox. Este exemplo mostra como pode utilizar
uma sub-rede existente e o NSG e permitir que a CLI do Azure crie a interface de
rede e faça as ligações apropriadas. Crie um endereço IP público, como remote-
publicip, como parte deste comando:
az vm create \
--resource-group azuremolchapter5 \
--name remotevm \
--vnet-name vnetmol \
--subnet remotesubnet \
--nsg remotensg \
--public-ip-address remotepublicip \
--image UbuntuLTS \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys
Experimente agora
Para utilizar o SSH com a sua VM jumpbox, conclua os passos a seguir:
4 Esta é a primeira vez que criou uma ligação SSH à VM jumpbox, portanto, aceite
o aviso para se ligar com as chaves SSH.
72 Capítulo 5 Noções básicas do Azure Networking
6 Aceite o aviso para continuar a ligação SSH. O agente SSH envia por túnel a
chave SSH privada através da jumpbox e permite-lhe estabelecer uma ligação com
sucesso à VM Web. E agora? Bem, tem um laboratório para ver este trabalho!
1 Instale um servidor Web Linux básico. Recorde-se do capítulo 2 quando criou uma
ligação SSH à VM e, em seguida, instalou o pacote de servidor Web LAMP com
apt. Na ligação SSH à VM Web criada na secção 5.3.2, instale e configure o LAMP
Web stack predefinido.
2 Navegue para o site predefinido. Quando o LAMP Web stack estiver instalado, abra o
browser na etiqueta de nome DNS que introduziu quando criou um endereço IP
público na secção 5.1.3. No meu exemplo, foi azuremol.eastus.cloud-
app.azure.com. Também pode utilizar o endereço IP público que se obteve
quando criou a VM Web. Lembre-se: esse endereço IP público é dife-
rente da VM jumpbox em que utilizou SSH!
Parte 2
Elevada disponibilidade
e dimensionamento
6
Na maioria dos dias, pretende passar o menor tempo possível a pensar em como
implementar um ambiente de aplicação e continuar com a implementação real. Em
muitos ambientes de TI, há um movimento para equipas de desenvolvimento e ope-
rações que colaboram e trabalham em estreita colaboração, graças à popularidade
do DevOps, que é objeto de um grande número de conferências e blogues.
Não há nada inerentemente novo ou inovador sobre a cultura de DevOps, mas
muitas vezes as diferentes equipas não trabalham juntas como deveriam. Ferramen-
tas modernas têm estimulado o movimento de DevOps, com soluções de integração
contínua/entrega contínua (CI/CD) que podem automatizar toda a implementa-
ção de ambientes de aplicações com base num único registo de código por um pro-
gramador. Em geral, a equipa de operações é aquela que cria e mantém estes
pipelines de CI/CD, o que permite testes e implementações muito mais rápidos de
atualizações de aplicações para programadores.
O modelo de implementação do Azure Resource Manager é fundamental para
criar e executar recursos, mesmo que não tenha percebido ainda. O Resource Mana-
ger é uma abordagem à criação e implementação de recursos, assim como os proces-
sos de automatização e modelos que impulsionam essas implementações. Neste
capítulo, irá aprender a utilizar as funcionalidades do Resource Manager, como con-
trolos de acesso e bloqueios, implementações de modelos consistentes e implemen-
tações multicamada automatizadas.
75
76 Capítulo 6 Azure Resource Manager
Rede virtual
VM 1 VM 2 VM 3 VM 4
Figura 6.1 Uma maneira de criar uma aplicação no Azure é criar todos os recursos relacionados
com essa implementação da aplicação no mesmo grupo de recursos e geri-los como uma entidade.
¡ Recursos semelhantes agrupados por função no mesmo grupo de recursos — Como mos-
trado na figura 6.2, esta abordagem é mais comum em aplicações e ambientes
maiores. A sua aplicação pode existir num grupo de recursos com apenas as VMs
e componentes de aplicações de suporte. Podem existir recursos de rede virtual e
endereços IP num grupo de recursos diferente, protegidos e geridos por um
grupo diferente de engenheiros.
A abordagem do Azure Resource Manager 77
Rede virtual
VM 1 VM 2 VM 3 VM 4
Figura 6.2 Uma abordagem alternativa é criar e agrupar recursos com base na sua função. Um exemplo
comum é que todos os recursos de rede core estão num grupo de recursos separado dos recursos de
computação da aplicação core. As VMs no grupo de recursos de computação podem aceder aos recursos
de rede no grupo separado, mas os dois conjuntos de recursos podem ser geridos e protegidos de forma
independente.
Figura 6.3 O controlo de acesso para cada recurso do Azure lista as atribuições atuais.
Pode adicionar atribuições ou selecionar Funções para ver informações sobre quais conjuntos
de permissões estão disponíveis.
A abordagem do Azure Resource Manager 79
Experimente agora
Abra o portal Azure num browser e, em seguida, selecione qualquer recurso que tenha,
como cloud-shell-storage. Escolha o botão Controlo de Acesso (IAM), como mostrado na
figura 6.3. Analise as atribuições de funções atuais. Veja como adicionar uma atribuição
de funções e explore todas as atribuições de funções disponíveis. O ícone de informa-
ções para cada função mostra quais permissões são atribuídas.
Consegue adivinhar o que essas funções significam? Elas assumem a função de Contri-
buinte da plataforma core e aplicam-na a um tipo de recurso específico. O caso prático
aqui remonta a esse conceito de como gere recursos semelhantes. Pode ser atribuído à
função de Contribuinte de Virtual Machines ou Contribuinte de Site. Então, as VMs ou
as aplicações Web criadas nesse grupo de recursos estariam disponíveis para que as
gerisse. Mas não pode gerir recursos de rede, que podem estar num grupo de recursos
totalmente diferente.
Experimente agora
Para ver os bloqueios de recursos do Azure em ação, como mostrado na figura 6.4,
conclua os passos a seguir:
1 Abra o portal Azure num browser e selecione qualquer grupo de recursos que
tenha, como cloud-shell-storage.
2 Escolha Bloqueios no lado esquerdo do portal.
3 Introduza um Nome de Bloqueio, como Proteger; escolha Eliminar no menu
pendente Tipo de Bloqueio; e escolha OK. O seu novo bloqueio aparece na lista.
4 Selecione Descrição Geral para o grupo de recursos e, em seguida, tente elimi-
nar o grupo de recursos. Precisa de introduzir o nome do grupo de recursos para
confirmar que pretende eliminá-lo (o que também é um bom aviso mental para
se certificar de que tem o recurso certo para eliminar!).
5 Ao escolher o botão Eliminar, analise a mensagem de erro apresentada para
ver como o bloqueio impediu o Azure de eliminar o recurso.
Pode direcionar recursos com base em etiquetas para aplicar bloqueios ou funções
RBAC ou reportar os custos e o consumo dos recursos. As etiquetas não são exclusivas
de um grupo de recursos e podem ser reutilizadas na sua subscrição. Podem ser aplica-
das até 50 etiquetas a um único recurso ou grupo de recursos, portanto, tem muita fle-
xibilidade na forma como marca e filtra os recursos marcados.
Experimente agora
Para ver as etiquetas de recursos do Azure em ação, conclua os passos a seguir:
Figura 6.5 Pode criar até 50 etiquetas name:value para cada recurso do Azure ou grupo de recursos.
Scripts VM 1
Listas de Possíveis
Operador verificação diferenças
VM 2
humano nas VMs
implementadas
Vários passos Pacotes do
e scripts para VM 3
instalador
criar VM
Figura 6.6 Os seres humanos cometem erros, como o erro de introdução de um comando ou omitir
um passo numa implementação. Pode acabar com VMs ligeiramente diferentes no final da saída.
A automatização é frequentemente utilizada para remover o operador humano da equação e, em vez
disso, criar implementações consistentes e idênticas todas as vezes.
Mesmo quando tem scripts, ainda precisa de alguém para escrevê-los, efetuar a sua
manutenção e mantê-los atualizados à medida que forem lançadas novas versões dos
módulos da CLI do Azure ou do PowerShell. Sim, às vezes, são feitas alterações nas fer-
ramentas para acomodar novas funcionalidades, embora sejam raras.
Como um exemplo de dependências, se criar uma NIC virtual, irá precisar de a ligar
a uma sub-rede. Logicamente, a sub-rede deve existir antes que possa criar a NIC vir-
tual, e a sub-rede deve fazer parte de uma rede virtual, para que a rede deva ser criada
antes da sub-rede. A figura 6.7 mostra a cadeia de dependências em ação. Se tentar
escrever um script por conta própria, deverá planear cuidadosamente a ordem em que
os recursos são criados e, mesmo assim, deverá criar a lógica para saber quando os
recursos principais estão prontos e pode passar para os recursos dependentes.
Depende de Depende de
NIC virtual Sub-rede Rede virtual
Figura 6.7 O Azure Resource Manager manipula as dependências para si. A plataforma sabe a ordem
em que deve criar os recursos e tem consciência do estado de cada recurso sem a utilização de lógica
manuscrita e ciclos como aqueles que deve utilizar nos seus próprios scripts.
{
"apiVersion": "2019-04-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "publicip",
"location": "eastus",
"properties": {
"publicIPAllocationMethod": "dynamic",
"dnsSettings": {
"domainNameLabel": "azuremol"
}
}
},
Mesmo que JSON seja novo para si, é escrito num formato (relativamente) legível por
humanos. Define um tipo de recurso — neste exemplo, Microsoft.Network/publicI-
PAddresses. Em seguida, fornece um nome, como publicip, e uma localização, como
eastus. Finalmente, define o método de alocação — dynamic, neste exemplo — e uma
etiqueta de nome DNS, como azuremol. Estes parâmetros são os mesmos fornecidos
quando utilizou o portal Azure ou a CLI. Se utilizar o PowerShell, terá que? Deverá
utilizar os mesmos parâmetros.
84 Capítulo 6 Azure Resource Manager
Experimente agora
Para ver um modelo completo do Resource Manager, abra um browser para
o repositório GitHub em http://mng.bz/QyWv.
{
"apiVersion": "2019-04-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat(‘publicip’, copyIndex())]",
"copy": {
"count": 2
}
"location": "eastus",
"properties": {
"publicIPAllocationMethod": "dynamic",
}
},
Modelos do Azure Resource Manager 85
Figura 6.8 Muitas extensões estão disponíveis no Visual Studio Code para melhorar e otimizar a forma como cria
e utiliza modelos do Azure Resource Manager.
86 Capítulo 6 Azure Resource Manager
Figura 6.9 Com o Visual Studio, pode criar graficamente modelos e explorar recursos JSON.
Uma maneira mais gráfica de criar modelos do Azure Resource Manager é utilizar o edi-
tor completo do Visual Studio, como mostrado na figura 6.9. Há versões para Windows e
macOS, mas precisa de uma licença separada para poder utilizar o editor. Está disponível
uma Community Edition, mas tenha cuidado se criar modelos dentro da sua empresa:
normalmente precisa de uma versão licenciada. Consulte os seus especialistas em licen-
ças, pois o Visual Studio é direcionado para os programadores de aplicações.
Pode, naturalmente, utilizar um editor de texto básico. Parte do motivo pelo qual os
modelos do Azure Resource Manager são escritos em JSON é que para isso não se
requer nenhuma ferramenta especial. Há uma curva de aprendizagem para trabalhar
com JSON, e é por isso que recomendo que explore os modelos de início rápido no
repositório de exemplos do Azure. Tenha cuidado com os avanços, as vírgulas finais e a
utilização de parênteses, parênteses retos e chavetas!
Vida em Marte
Existem ferramentas de terceiros e outras formas de utilizar modelos no Azure. A Hashi-
Corp fornece muitas ferramentas de open source e soluções de cloud computing; uma
delas é o Terraform. Com o Terraform, define todos os recursos que pretende criar da
mesma forma que faz num modelo nativo do Azure Resource Manager. Também pode
definir dependências e utilizar variáveis. A diferença é que o Terraform é tecnicamente
um fornecedor multiplataforma. As mesmas construções e abordagem de modelo
podem ser utilizadas no Azure, Google Cloud, AWS e vSphere, por exemplo. A diferença
são os aprovisionadores que utiliza para cada recurso.
É realmente uma abordagem de “um modelo para qualquer fornecedor”? Não, não é.
O Terraform também é uma aplicação que analisa o seu modelo e, em seguida, comu-
nica com o fornecedor de cloud relevante, como o Azure. Não tem funcionalidades de
edição, muito menos ferramentas gráficas, para criar o seu modelo. Escolhe um editor e
escreve o modelo manualmente. Novamente, a melhor maneira de aprender a utilizar
o Terraform é através da exploração da sua documentação e modelos de exemplo.
Laboratório: implementar recursos do Azure a partir de um modelo 87
A razão pela qual falo sobre este tópico está relacionada com o conceito de escolha no
Azure. Se achar que os modelos do Azure Resource Manager escritos em JSON são um
pouco complicados, explore um produto como o Terraform. Mas não desista de imple-
mentações do Resource Manager orientadas por modelos. Para alcançar estas imple-
mentações consistentes e reproduzíveis à escala, os modelos são a melhor abordagem,
por isso, encontre uma boa abordagem orientada por modelos que funcione para si.
Figura 6.10 Para cada modelo do Resource Manager no repositório de exemplos do GitHub, há um botão
Implementar no Azure. Se selecionar este botão, o portal Azure será carregado, e o modelo também.
Ser-lhe-ão pedidos alguns parâmetros básicos e o restante da implementação é controlado pelo modelo.
Laboratório: implementar recursos do Azure a partir de um modelo 89
Parâmetros em modelos
Conforme discutido na secção 6.2.1, pode utilizar parâmetros e variáveis nos seus
modelos. Lembre-se de que os parâmetros são valores pedidos e as variáveis são
valores dinâmicos que podem ser aplicados através de um modelo. Os valores pedidos
(parâmetros) variam de modelo para modelo. Portanto, dependendo do modelo de início
rápido selecionado, ser-lhe-á pedido que introduza um ou dois valores, ou pode ter de
fornecer sete ou oito itens.
Ao conceber os seus modelos, tente antecipar como você e outros utilizadores podem
pretender reutilizar o modelo à medida que implementa as aplicações. Pode fornecer
um valor predefinido e limitar quais valores são permitidos. Tenha cuidado com estes
valores predefinidos e permitidos; caso contrário, pode restringir demasiado os utiliza-
dores e forçá-los a criar os seus próprios modelos. Sempre que possível, tente criar
modelos core reutilizáveis que tenham flexibilidade suficiente.
90
A necessidade da redundância 91
VM VM
única única
Figura 7.1 Se a sua aplicação for executada numa
única VM, qualquer interrupção nessa VM faz com que
a aplicação fique inacessível. Isto pode fazer com que os
Resposta da Aplicação não clientes levem os seus negócios para outro lugar ou, pelo
aplicação devolvida acessível menos, não fiquem satisfeitos com o serviço fornecido.
Europa Ocidental
Endereço IP público
Balanceador de carga
VM 1 VM 2 VM 3
Figura 7.2 Uma região do Azure pode conter várias Zonas de Disponibilidade: datacenters fisicamente
isolados que utilizam energia, rede e arrefecimento independentes. Os recursos da rede virtual do Azure,
como os endereços IP públicos e os balanceadores de carga, podem abranger todas as zonas de uma
região para fornecer redundância para mais do que apenas as VMs.
Europa Ocidental
Endereço IP público
Balanceador de carga VM 2 VM 3
VM 1
¡ Os serviços com redundância entre zonas são para recursos que podem replicar-se
automaticamente entre zonas, tais como armazenamento com redundância entre
zonas e bases de dados SQL. Todo o recurso não está a ser executado numa deter-
minada zona; em vez disso, os respetivos dados estão distribuídos por zonas, de
modo a que continue a estar disponível se uma zona tiver um problema.
O suporte da Zona de Disponibilidade está disponível para mais de 20 serviços do
Azure em mais de dez regiões. O número de serviços e regiões que têm integração com
as Zonas de Disponibilidade continua a crescer. Contudo, dadas as limitações de
região, pode haver alturas em que o suporte da Zona de Disponibilidade não esteja
disponível para recursos core como as VMs. Nesses casos, há outro tipo de redundân-
cia de VM que pode ser utilizado em qualquer região, que analisamos na secção 7.2.1:
Conjuntos de Disponibilidade.
Experimente agora
Para criar recursos de rede redundantes em Zonas de Disponibilidade, conclua
os passos a seguir:
Experimente agora
Para criar uma VM numa Zona de Disponibilidade, conclua os passos a seguir:
NOTA Os exemplos nestes exercícios "Experimente agora" são simples, mas foram con-
cebidos para mostrar que as zonas requerem pouca configuração para serem utilizadas.
Não integrou o balanceador de carga com redundância entre zonas e a VM, mas no
capítulo 8, criará um ambiente de aplicação mais utilizável que é distribuído pelas
Zonas de Disponibilidade. O objetivo aqui é mostrar que a plataforma do Azure pro-
cessa a redundância e a distribuição dos seus recursos, para que possa concentrar-se
na aplicação em si.
Conjunto de Disponibilidade
Basdor de servidores Basdor de servidores Domínio de falha Domínio de falha
VM VM VM VM
VM VM VM VM
Figura 7.4 O hardware num datacenter do Azure é dividido logicamente em domínios de atualização e domínios de falha. Estes
domínios lógicos permitem que a plataforma do Azure entenda como distribuir as suas VMs pelo hardware subjacente para cumprir os
seus requisitos de redundância. Este exemplo é básico: um domínio de atualização provavelmente contém mais de um servidor físico.
As VMs que utilizam discos geridos (lembre-se de que todas as VMs devem utilizar discos geri-
dos!) também respeitam a distribuição e os limites lógicos dos domínios de falha. A plataforma
do Azure atribui logicamente clusters de armazenamento a domínios de falha para garantir que,
à medida que as VMs são distribuídas por grupos de hardware, os discos geridos também são dis-
tribuídos pelo hardware de armazenamento. Se todos os discos geridos acabassem num cluster
de armazenamento, não haveria redundância de VMs no hardware de servidor! E sim, os discos
geridos também podem ser utilizados com Zonas de Disponibilidade.
Experimente agora
Para ver os Conjuntos de Disponibilidade em ação, conclua os passos a seguir para
implementar um modelo do Resource Manager:
1 Abra um browser para um modelo do Resource Manager no repositório de exemplos do
GitHub em https://github.com/fouldsy/azure-mol-samples-2nd-ed/tree/master/ 07/
availability-set, e selecione o botão Implementar no Azure. Utiliza um modelo neste exer-
cício para que possa implementar rapidamente VMs e explorar como essas VMs são distri-
buídas pelo Conjunto de Disponibilidade.
O portal Azure é aberto e pede alguns parâmetros.
2 Escolha criar um novo grupo de recursos e forneça um nome como azuremolchapter7.
Selecione uma região e forneça os dados da chave SSH (pode obtê-los no Cloud Shell
com cat ~/.ssh/id_rsa.pub).
O modelo cria um Conjunto de Disponibilidade que contém três VMs. Estas VMs são
distribuídas pelos domínios lógicos de falha e atualização. Para complementar o que apren-
deu sobre o Resource Manager no capítulo 6, este modelo utiliza a função copyIndex()
para criar várias VMs e NICs.
3 Para confirmar que pretende criar os recursos detalhados no modelo, marque a caixa
“Aceito os termos e condições acima” e selecione Comprar.
A criação das três VMs no Conjunto de Disponibilidade irá demorar alguns minutos. Deixe a
implementação continuar no portal enquanto lê o restante desta secção.
Quando o modelo começa a ser implementado, é criado um Conjunto de Disponibilidade e o
número pedido de domínios de atualização e de falha é atribuído. As seguintes propriedades
foram definidas no modelo de exemplo:
“properties”: {
“platformFaultDomainCount”: “2”,
“platformUpdateDomainCount”: “5”,
“managed”: “true”
}
Estas propriedades criam um Conjunto de Disponibilidade com dois domínios de falha e cinco
domínios de atualização, como mostrado na figura 7.5, e indicam que as VMs devem utilizar dis-
cos geridos; portanto, faça a distribuição de discos conforme necessário. A região selecionada
para o Conjunto de Disponibilidade determina o número máximo de domínios de falha e atua-
lização. As regiões suportam 2 ou 3 domínios de falha e até 20 domínios de atualização.
Conjunto de Disponibilidade
Domínio de Domínio de
atualização 2 atualização 3
Domínio de
atualização 4
À medida que cria mais VMs num Conjunto de Disponibilidade, precisa de considerar quantos
domínios de atualização irão ser utilizados. Cinco domínios de atualização, por exemplo, signifi-
cam que até 20% das VMs podem não estar disponíveis devido à manutenção:
¡ Digamos que tem 10 VMs no seu Conjunto de Disponibilidade. Duas dessas VMs podem
ser submetidas a manutenção ao mesmo tempo. Se pretendesse permitir que apenas uma
VM de cada vez fosse submetida a manutenção, precisaria de criar 10 domínios de atualiza-
ção. Quanto mais domínios de atualização criar, mais tempo a sua aplicação poderá ficar
num estado de manutenção.
¡ Continuemos com o exemplo anterior de 10 VMs em 10 domínios de atualização. Agora há
potencial para perturbações nas suas aplicações até que todos os 10 domínios de atualização
tenham completado o respetivo ciclo de manutenção. Se tiver apenas 5 domínios de atualiza-
ção, esse prazo de manutenção é reduzido. Não é necessariamente mau ter um período de manu-
tenção mais longo; interessa qual é a sua tolerância é para um funcionamento potencial a uma
capacidade inferior à total.
É importante lembrar que estes domínios de atualização e ciclos de manutenção são o que a
plataforma do Azure realiza por si própria. Também precisa de ter em conta as suas próprias
necessidades de atualização e períodos de manutenção.
Quando a primeira VM é criada, a plataforma do Azure procura a primeira posição de imple-
mentação disponível. Este é o domínio de falha 0 e o domínio de atualização 0, como mostrado
na figura 7.6.
Quando a segunda VM é criada, a plataforma do Azure procura a próxima posição de imple-
mentação disponível. Agora, este é o domínio de falha 1 e o domínio de atualização 1, como
mostrado na figura 7.7.
VM 0 VM 0 VM 1
Figura 7.6 A primeira VM é criada Figura 7.7 Com uma segunda VM criada, as VMs são distribuídas
no domínio de falha 0 e no domínio uniformemente pelos domínios de falha e atualização. Isto é o que
de atualização 0. normalmente se considera o nível mínimo de redundância
necessário para proteger as suas aplicações.
O seu modelo cria três VMs. O que acha que acontece a seguir? A plataforma do Azure procura
novamente a próxima posição de implementação disponível. Criou apenas dois domínios de
falha, portanto, a VM é criada novamente no domínio de falha 0. Mas a VM é criada num domí-
nio de atualização diferente do da primeira VM. A terceira VM é criada no domínio de atualiza-
ção 2, como mostrado na figura 7.8.
100 Capítulo 7 Elevada disponibilidade e redundância
Conjunto de Disponibilidade
VM 0 VM 1
Experimente agora
Para ver como as suas VMs são distribuídas num Conjunto de Disponibilidade, conclua
os passos a seguir:
Figura 7.9 O Conjunto de Disponibilidade lista as VMs que contém e mostra o domínio de falha e
o domínio de atualização para cada VM. Esta tabela permite-lhe ver como as VMs são distribuídas
pelos domínios lógicos.
Se estiver particularmente atento, poderá perceber que as VMs não estão perfeitamente alinha-
das com a ordem esperada dos domínios de falha e atualização. Trata-se de um erro? Provavel-
mente não. Se examinarmos o exemplo na figura 7.9 e o compararmos com os conceitos que vimos
anteriormente, esperaríamos que as VMs fossem distribuídas como mostrado na tabela 7.1.
Tabela 7.1 Conjunto de Disponibilidade de VMs criadas sequencialmente e distribuídas por domínios
vm0 0 0
vm1 1 1
vm2 0 2
Então, o que correu mal? Nada. Pense novamente como o Resource Manager cria recur-
sos a partir de um modelo. A plataforma do Azure não espera que a primeira VM seja criada
antes que a segunda possa ser criada. As três VMs são criadas ao mesmo tempo. Assim, pode
haver uma diferença de uma fração de um segundo em que a VM é associada a um Conjunto de
Disponibilidade primeiro. Não importa qual é esta ordem, pois não consegue controlar o
que representam os domínios de falha e atualização subjacentes. Isso fica a cargo da plataforma
do Azure. Só precisa de garantir que as suas VMs são distribuídas, não onde são distribuídas.
Se tiver problemas com este laboratório, elimine os dois primeiros grupos de recursos
criados neste capítulo, como azuremolchapter7 e azuremolchapter7az. Se a quota
predefinida for baixa, as quatro VMs distribuídas por esses grupos de recursos poderão
impedi-lo de executar o exercício corretamente.
Para pedir um aumento das suas quotas de uma região, siga os passos descritos em
http://mng.bz/Xq2f.
Microsoft.Network/publicIPAddresses
Microsoft.Network/loadBalancers
Os dois recursos utilizam um SKU padrão, que fornece redundância entre zonas
por predefinição. Não há nenhuma configuração adicional para que isto fun-
cione! Vamos ver tudo isto em ação.
3 No browser, abra o modelo de início rápido em http://mng.bz/O69a, e selecione
o botão Implementar no Azure.
4 Crie ou selecione um grupo de recursos e, em seguida, forneça um nome de uti-
lizador e palavra-passe para as VMs.
5 Introduza um nome DNS exclusivo, como azuremol.
6 Decida se pretende criar VMs Linux ou Windows. As VMs Windows levam um
pouco mais de tempo a criar.
7 Especifique quantas VMs pretende criar, como 3.
8 Marque a caixa para concordar com os termos e condições da implementação do
modelo e selecione Comprar, como mostrado na figura 7.10.
104 Capítulo 7 Elevada disponibilidade e redundância
Figura 7.10 Para implementar o modelo de Zona de Disponibilidade no portal Azure, especifique
um grupo de recursos, um nome de utilizador e uma palavra-passe e, em seguida, o tipo de SO e o
número de VMs que pretende criar. O modelo utiliza ciclos, copyIndex(), dependsOn, variáveis
e parâmetros, conforme abordado no capítulo 6.
Depois de as VMs terem sido criadas, utilize o portal Azure ou o comando az vm show
para ver como as VMs foram distribuídas pelas zonas. Se estiver curioso sobre o que o
resto do modelo faz com os recursos de rede, o capítulo 8 fala detalhadamente sobre
os balanceadores de carga!
Laboratório: implementar VMs altamente disponíveis a partir de um modelo 105
Limpeza no corredor 3
Lembra-se que, no início do livro, disse que não deveria esquecer-se de
limpar para gastar o menor número de créditos do Azure possível? Recomendo que eli-
mine os grupos de recursos que criou neste capítulo. Os próximos dois capítulos conti-
nuam a criar várias VMs e instâncias de aplicações Web, por isso, certifique-se de que
mantém os custos e as quotas sob controlo.
Sempre que iniciar sessão no portal Azure, deve receber uma notificação pop-up
com o estado dos seus créditos do Azure. Se reparar que o seu crédito disponível
diminuiu muito de um dia para o outro, examine quais grupos de recursos pode ter-se
esquecido de eliminar!
Aplicações de balanceamento
de carga
8
Um componente importante das aplicações de elevada disponibilidade é como dis-
tribuir o tráfego por todas as VMs. No capítulo 7, aprendeu a diferença entre os
Conjuntos de Disponibilidade e as Zonas de Disponibilidade, bem como a criar
várias VMs em datacenters ou regiões do Azure para fornecer redundância de apli-
cações. Mesmo se tiver todas estas VMs distribuídas e com elevada disponibilidade,
isso não servirá de nada se apenas uma VM receber todo o tráfego dos clientes.
Balanceadores de carga são recursos de rede que recebem o trá-
fego da aplicação de entrada proveniente dos seus clientes, examinam o tráfego para
aplicar filtros e regras de balanceamento de carga e, em seguida, distribuem os pedi-
dos por um conjunto de VMs que executam a sua aplicação. No Azure, há algumas
maneiras diferentes de fazer o balanceamento de carga de tráfego, tais como quando
precisar de executar um descarregamento SSL em aplicações de grande dimensão
que utilizam o tráfego de rede encriptado. Neste capítulo, irá conhecer os vários
componentes do balanceador de carga e irá aprender a configurar regras e filtros de
tráfego e a distribuir o tráfego para as VMs. Irá basear-se nos componentes de ele-
vada disponibilidade do capítulo 8 e irá preparar-se para o capítulo 9 sobre como
dimensionar recursos.
106
Componentes do balanceador de carga do Azure 107
Internet
Balanceador
de carga
Endereço IP público
Conjunto IP de front-end
Conjunto IP de back-end
NIC NIC NIC
virtual virtual virtual
VM VM VM
Figura 8.1 O tráfego proveniente da Internet entra no balanceador de carga por meio de um endereço IP
público anexado a um conjunto IP de front-end. O tráfego é processado pelas regras do balanceador de
carga que determinam como e onde o tráfego deve ser encaminhado. As sondagens do estado de
funcionamento anexadas às regras garantem que o tráfego é distribuído apenas para os nós em bom
estado de funcionamento. Então, um conjunto de back-end de NICs virtuais ligadas às VMs recebe o
tráfego distribuído pelas regras do balanceador de carga.
VM de VM de
front-end back-end
Balanceador de VM de Balanceador de VM de
Internet
carga da Internet front-end carga interno back-end
VM de VM de
front-end back-end
Figura 8.2 Um balanceador de carga da Internet pode ser utilizado para distribuir o tráfego para as VMs
de front-end que executam o seu site e que, em seguida, se ligam a um balanceador de carga interno para
distribuir o tráfego para um escalão de base de dados de VMs. O balanceador de carga interno não
é acessível publicamente e só pode ser acedido pelas VMs de front-end na rede virtual do Azure.
Experimente agora
Para entender como os componentes do balanceador de carga funcionam em conjunto, con-
clua os passos a seguir para criar um balanceador de carga e um conjunto IP de front-end.
Verifica a resposta na
Balanceador de carga porta TCP 80
Internet Sondagem do estado VM
de funcionamento
Removido da distribuição
do balanceador de carga
se não houver resposta
Figura 8.3 Uma sondagem do estado de funcionamento de um balanceador de carga baseada na porta
verifica se existe resposta da VM numa porta e protocolo definidos. Se a VM não responder dentro do
limiar determinado, a VM será removida da distribuição de tráfego do balanceador de carga. Quando
a VM começa a responder novamente de forma correta, a sondagem do estado de funcionamento
deteta a alteração e adiciona novamente a VM à distribuição de tráfego do balanceador de carga.
Figura 8.4 Uma VM que execute um servidor Web e tenha uma página health.html personalizada
permanece na distribuição de tráfego do balanceador de carga, contanto que a sondagem do estado
de funcionamento receba uma resposta com código HTTP 200 (OK). Se o processo do servidor Web
encontrar um problema e não puder devolver as páginas pedidas, essas páginas serão removidas da
distribuição de tráfego do balanceador de carga. Este processo fornece uma verificação mais completa
do estado do servidor Web do que as sondagens do estado de funcionamento baseadas na porta.
Experimente agora
Para criar uma sondagem do estado de funcionamento para o seu balanceador
de carga, como na figura 8.4, conclua os seguintes passos:
Depois de a sondagem do estado de funcionamento ser criada, o que deve fazer para
verificar o estado das suas VMs? As sondagens do estado de funcionamento estão asso-
ciadas às regras do balanceador de carga. A mesma sondagem do estado de funciona-
mento pode ser utilizada com várias regras do balanceador de carga. Lembra-se do
capítulo 5, no qual criou grupos de segurança de rede (NSGs) e regras? Estes NSGs
podem ser associados a várias VMs ou sub-redes da rede virtual. Às sondagens do estado
de funcionamento aplica-se uma relação um para muitos semelhante.
Vamos ver como podemos colocar a sua sondagem do estado de funcionamento a
funcionar e criar regras do balanceador de carga.
Balanceador de carga
Conjunto de
back-end
Regra do balanceador
de carga VM 1
Sessão 1
Modo de afinidade de
sessão (predefinido)
Sessão 1 Hash de 5 cadeias de identificação:
• IP de origem
Internet Sessão 2 • Porta de origem VM 2
• IP de destino
• Porta de destino
• Tipo de protocolo
Sessão 2
VM 3
Figura 8.5 No modo de afinidade de sessão, o utilizador liga-se à mesma VM de back-end apenas
durante a sessão.
Balanceador de carga
Conjunto de
back-end
Regra do balanceador
de carga Sessão 1 VM 1
Modo de afinidade de IP de origem Sessão 2
Hash de 2 cadeias Hash de 3 cadeias
Sessão 1 de identificação: de identificação:
• IP de origem • IP de origem
Internet Sessão 2 VM 2
• IP de destino • IP de destino
• Protocolo
VM 3
Figura 8.6 Quando configura as regras do balanceador de carga para utilizar o modo de afinidade de
IP de origem, o utilizador pode fechar e, em seguida, iniciar uma nova sessão, mas continuar a ligar-
se à mesma VM de back-end. O modo de afinidade de IP de origem pode utilizar um hash de 2 cadeias
de identificação que utiliza o endereço IP de origem e destino ou um hash de 3 cadeias de identificação
que também utiliza o protocolo.
114 Capítulo 8 Aplicações de balanceamento de carga
Experimente agora
Para criar uma regra do balanceador de carga que utiliza uma sondagem do estado
de funcionamento, conclua os passos a seguir:
Se executar vários sites numa VM que responda em portas diferentes, uma determi-
nada regra poderá direcionar o tráfego para um site específico na VM.
Manter a segurança
Analisaremos alguns tópicos de segurança na parte 3 do livro, mas a segurança deve
ser uma consideração sempre presente à medida que cria e executa aplicações no
Azure. A segurança não deve ser algo deixado para mais tarde. Com o surgimento do
cloud computing, de VMs descartáveis e de aplicações Web, é fácil ignorar algumas
melhores práticas básicas de segurança. Especialmente se trabalha no Azure como
parte de uma subscrição empresarial mais ampla, certifique-se de que os recursos cria-
dos não fornecem acidentalmente uma maneira de os hackers obterem acesso à sua
infraestrutura.
Que tipo de coisas não devem ser feitas? Bem, algumas coisas que já viu neste
livro! As portas de gestão remota para SSH e RDP não devem ser abertas à Internet pública
como fez. Deve, pelo menos, restringir o acesso a um intervalo de endereços IP específico.
A melhor prática seria utilizar um serviço gerido como o Azure Bastion ou criar
manualmente uma VM segura que tenha gestão remota disponível. Quando for necessá-
rio, liga-se ao host do Azure Bastion ou à sua VM protegida e, em seguida, liga-se às VMs
adicionais através da rede virtual interna do Azure. No capítulo 5 utilizou esta aborda-
gem básica de VM jumpbox. Esta abordagem minimiza a superfície de ataque e reduz a
necessidade de utilizar regras do NSG e regras NAT do balanceador de carga. No capí-
tulo 16 aborda-se a Centro de Segurança do Azure e mostra-se como pode pedir e abrir
dinamicamente as portas de gestão remota durante um período específico, o que
é o melhor de ambos os mundos.
Mesmo que trabalhe numa subscrição privada do Azure sem conectividade com outras
subscrições do Azure na escola ou no trabalho, tente minimizar a quantidade de conecti-
vidade remota que fornece.
Experimente agora
Para criar uma regra NAT do balanceador de carga, conclua os passos a seguir:
Balanceador de carga
Conjunto de back-end: VM de
escalão de aplicação
VM 1 VM 2 VM 3
Regras do
Conjunto IP balanceador
Internet de front-end de carga
Sondagens do Conjunto de back-end: VM multimédia
estado de
funcionamento
VM 1 VM 2 VM 3
Figura 8.8 Podem ser criados um ou mais conjuntos de back-end num balanceador de carga. Cada
conjunto de back-end contém uma ou mais VMs que executam o mesmo componente da aplicação.
Neste exemplo, um conjunto de back-end contém VMs que executam o escalão de aplicações Web e
outro conjunto de back-end contém as VMs que fornecem conteúdo multimédia, como imagens e vídeo.
Componentes do balanceador de carga do Azure 117
Cria e utiliza um balanceador de carga com VMs, mas tudo funciona ao nível da rede
virtual. O conjunto IP de front-end utiliza endereços IP públicos ou privados. A sonda-
gem do estado de funcionamento examina as respostas numa determinada porta ou
protocolo. Mesmo quando é utilizada uma sondagem HTTP, o balanceador de carga
procura uma resposta positiva da rede. As regras do balanceador de carga concentram-
-se em como distribuir o tráfego a partir de uma porta externa no conjunto de front-
-end para uma porta no conjunto de back-end.
Quando atribui VMs ao conjunto de back-end que recebe o tráfego distribuído pelo
balanceador de carga, é a NIC virtual que é ligada ao balanceador de carga. A VM é
anexada à NIC virtual. Pense no capítulo 5 e verá que esta separação de VMs e NICs vir-
tuais faz sentido no que diz respeito ao modo como os recursos são geridos. As regras do
NSG controlam o tráfego que pode entrar na VM, mas são aplicadas a uma sub-rede da
rede virtual ou NIC virtual, não à VM.
Quais são as implicações disto na configuração dos conjuntos IP de back-end? Tem
de criar o resto dos seus recursos de rede virtual antes de poder ligar uma VM ao balan-
ceador de carga. Os passos para criar os recursos de rede são um resumo do que
aprendeu há alguns capítulos, por isso vamos ver do quanto se lembra!
Rede virtual
Sub-rede
Experimente agora
Para criar os recursos de rede adicionais, como mostrado na figura 8.9, conclua os pas-
sos a seguir:
4 Crie uma regra do NSG que permita que o tráfego da porta TCP 80 chegue
às suas VMs. Esta regra é necessária para que as VMs do servidor Web recebam
e respondam ao tráfego do cliente:
az network nsg rule create \
--resource-group azuremolchapter8 \
--nsg-name webnsg \
--name allowhttp \
--priority 100 \
--protocol tcp \
--destination-port-range 80 \
--access allow
5 Adicione outra regra para gerir o tráfego SSH de forma remota. Esta regra do
NSG funciona com a regra NAT do balanceador de carga criada na secção 8.1.4
para uma das suas VMs:
az network nsg rule create \
--resource-group azuremolchapter8 \
--nsg-name webnsg \
--name allowssh \
--priority 101 \
--protocol tcp \
--destination-port-range 22 \
--access allow
7 O balanceador de carga funciona com NICs virtuais, portanto, crie duas NICs
virtuais e ligue-as à sub-rede da rede virtual. Também especifique o nome do
balanceador de carga e o conjunto de endereços de back-end aos quais as NICs
virtuais se ligam. A regra NAT do balanceador de carga só é anexada à primeira
NIC virtual criada:
az network nic create \
--resource-group azuremolchapter8 \
--name webnic1 \
--vnet-name vnetmol \
--subnet subnetmol \
Criar e configurar VMs com o balanceador de carga 119
--lb-name loadbalancer \
--lb-address-pools backendpool \
--lb-inbound-nat-rules natrulessh
8 Crie a segunda NIC da mesma forma, menos a regra NAT do balanceador de carga:
az network nic create \
--resource-group azuremolchapter8 \
--name webnic2 \
--vnet-name vnetmol \
--subnet subnetmol \
--lb-name loadbalancer \
--lb-address-pools backendpool
Internet
Balanceador
de carga
Endereço IP público
Conjunto IP de front-end
Back-end IP piscina
Figura 8.10 Aqui não
NIC NIC NIC foi criada nenhuma VM,
virtual virtual virtual a configuração do balan
Grupo de segurança de rede ceador de carga lida com os
Sub-rede da rede virtual recursos de rede virtual. Há
uma estreita relação entre
Rede virtual
o balanceador de carga e os
recursos de rede virtual.
ao balanceador de carga para que qualquer tráfego seja distribuído. Essas NICs virtuais
requerem uma rede virtual e uma sub-rede e, idealmente, estão protegidas por um
NSG. As VMs que executam a sua aplicação não têm quase nada a ver com os passos
para criar e configurar o balanceador de carga!
120 Capítulo 8 Aplicações de balanceamento de carga
Experimente agora
Para criar as VMs e anexá-las ao balanceador de carga, conclua os passos a seguir:
Para ver o balanceador de carga em ação, precisa de instalar um servidor Web básico,
como fez no capítulo 2. Também pode testar a regra NAT do balanceador de carga.
Pode começar a ver como todos estes componentes do Azure estão relacionados e
como são criados uns sobre os outros?
Experimente agora
No capítulo 5, falámos sobre o agente SSH. O agente SSH permite-lhe passar uma
chave SSH de uma VM para a próxima. Apenas a VM1 tem uma regra NAT do balancea-
dor de carga, por isso precisa de utilizar o agente para se ligar à VM2. Para instalar um
servidor Web nas suas VMs, conclua os passos a seguir:
Criar e configurar VMs com o balanceador de carga 121
1 Inicie o agente SSH e adicione a sua chave SSH para se ligar a ambas as VMs:
eval $(ssh-agent) && ssh-add
No capítulo 2, utilizou apt-get para instalar todo o LAMP stack, incluindo o ser-
vidor Web Apache. Vamos ver algo um pouco diferente do servidor Web Apache
com o independente, mas poderoso servidor Web NGINX. Numa VM Windows, o
IIS normalmente seria instalado aqui. Execute o seguinte comando para instalar
o servidor web NGINX:
sudo apt update && sudo apt install -y nginx
Figura 8.11 Quando abre o endereço IP público do balanceador de carga num browser, o tráfego é
distribuído para uma das VMs que executam o seu site básico. A sondagem do estado de funcionamento
do balanceador de carga utiliza a página health.html para confirmar as respostas do servidor Web com
um código HTTP 200 (OK). Em caso afirmativo, a VM fica disponível como parte da distribuição de
tráfego do balanceador de carga.
Figura 8.12 No portal Azure, selecione o grupo de recursos do balanceador de carga e veja o modelo do
Resource Manager.
9
Nos dois capítulos anteriores, examinámos como criar aplicações altamente disponíveis
e utilizar balanceadores de carga para distribuir o tráfego para várias VMs que executam a
sua aplicação. Mas, como executa e gere eficientemente várias VMs e executa o número
certo de instâncias de VM quando os seus clientes mais precisam? Quando
a procura do cliente aumenta, pretende aumentar automaticamente o dimensionamento da
sua aplicação para lidar com essa procura. E quando a procura diminui, como no meio da
noite, quando a maioria das pessoas sem filhos pequenos estão a dormir, pretende diminuir
o dimensionamento da aplicação e poupar algum dinheiro.
No Azure, pode dimensionar automaticamente os recursos de IaaS com conjuntos de
dimensionamento de virtual machines. Estes conjuntos de dimensionamento executam VMs
idênticas, normalmente distribuídas atrás de um balanceador de carga ou gateway da aplica-
ção. Define as regras de dimensionamento automático que aumentam ou diminuem
o número de instâncias de VM à medida que a procura do cliente muda. O balanceador de
carga ou o gateway da aplicação distribui automaticamente o tráfego para as novas instâncias
de VM, o que lhe permite concentrar-se em como criar e executar melhor as suas aplicações.
Os conjuntos de dimensionamento dão-lhe o controlo dos recursos de IaaS com algumas das
vantagens elásticas de PaaS. As aplicações Web, sobre as quais não falámos muito nos últimos
capítulos, aparecem agora neste capítulo, com a sua própria capacidade de dimensiona-
mento com a procura de aplicações.
Neste capítulo, examinaremos como conceber e criar aplicações que podem ser dimen-
sionadas automaticamente. Vimos por que esta capacidade de dimensionar com a procura o
ajuda a executar aplicações eficientes e a explorar diferentes maneiras de dimensionar com
base em métricas diferentes.
124
Por que criar aplicações dimensionáveis e fiáveis? 125
falta de recursos disponíveis. O ponto ideal para as aplicações e os recursos dos quais raramente
necessitam é estático. Normalmente, a aplicação exige refluxo e fluxo durante todo o dia e
noite, ou entre dias úteis e fins de semana.
Há duas maneiras principais segundo as quais pode dimensionar os recursos, como mostrado
na figura 9.1: verticalmente e horizontalmente. Tanto os conjuntos de dimensionamento de vir-
tual machines como as aplicações Web podem ser dimensionados vertical ou horizontalmente.
Figura 9.1 Pode aumentar e reduzir verticalmente as suas aplicações, ou aumentá-las e reduzi-las horizontalmente.
O método que utiliza depende de como a sua aplicação é criada para processar o dimensionamento. O dimensionamento
vertical ajusta os recursos atribuídos a uma VM ou a uma aplicação Web, como o número de cores de CPU ou
a quantidade de memória. Este método para dimensionar uma aplicação funciona bem se a aplicação executar
apenas uma instância. O dimensionamento horizontal altera o número de instâncias que executam a sua aplicação
e ajuda a aumentar a disponibilidade e a resiliência.
As aplicações dimensionáveis têm uma forte relação com as aplicações altamente disponíveis.
Nos capítulos 7 e 8, falámos bastante sobre os Conjuntos de Disponibilidade e as Zonas de Dispo-
nibilidade, e como configurar os balanceadores de carga. Ambos os capítulos focam a necessi-
dade de executar várias VMs. Quando a sua aplicação pode ser dimensionada automaticamente,
a disponibilidade dessa aplicação também é aumentada à medida que essas VMs são distribuídas
por Conjuntos de Disponibilidade ou Zonas de Disponibilidade. Tudo isto é bom. O poder do
Azure é que não precisa de se preocupar sobre como adicionar mais instâncias de aplicações,
reparti-las por todo o hardware do datacenter ou até mesmo datacenters e, em seguida, atualizar
os recursos de rede para distribuir o tráfego para as novas instâncias da aplicação.
Figura 9.2 À medida que uma base de dados cresce, precisa de mais recursos para armazenar e processar os dados em
memória. Para dimensionar verticalmente neste cenário, adiciona mais CPU e memória.
Talvez precise de dimensionar além da procura de CPU ou memória. E se executar um site que
processe imensas imagens ou vídeos? Pode não haver muitos requisitos de processamento, mas
as procuras de largura de banda podem ser altas. Para aumentar a largura de banda disponível,
pode aumentar o número de NICs na sua VM. E se precisar de armazenar mais imagens e vídeos,
adiciona mais armazenamento. Pode adicionar ou remover recursos como NICs virtuais e arma-
zenamento à medida que a VM continua a ser executada.
Redimensionar virtual machines
No Azure, pode aumentar o tamanho da VM (aumentar verticalmente) se precisar de mais
recursos de computação para a sua aplicação. No capítulo 2, criou uma VM básica. O seu tama-
nho era provavelmente algo como Standard_D2s_v3. Esse nome não diz muito sobre os recursos
de computação atribuídos a uma VM para determinar se precisa de aumentar a CPU ou a memó-
ria. Se pretender dimensionar verticalmente, precisa de saber quais são as suas opções.
Experimente agora
Siga adiante para ver os tamanhos de VM disponíveis e os recursos de computação:
4 8192 Standard_D2s_v3 2
8 16384 Standard_D4s_v3 4
16 32768 Standard_D8s_v3 8
32 65536 Standard_D16s_v3 16
8 4096 Standard_F2s_v2 2
16 8192 Standard_F4s_v2 4
32 16384 Standard_F8s_v2 8
Por que criar aplicações dimensionáveis e fiáveis? 127
2 2048 Standard_B1ms 1
2 1024 Standard_B1s 1
4 8192 Standard_B2ms 2
4 4096 Standard_B2s 2
Figura 9.3 Para dimensionar uma aplicação Web verticalmente de forma manual, altera o escalão de
preços (tamanho) do plano do serviço de aplicações subjacente. O plano do serviço de aplicações define
a quantidade de recursos atribuídos à sua aplicação Web. Se a sua aplicação requerer uma quantidade
diferente de armazenamento, número de CPUs ou blocos de implementação, pode alterar para um
escalão diferente para dimensionar corretamente os recursos atribuídos à procura da aplicação.
Para dimensionar
vCPU horizontalmente, vCPU vCPU vCPU
aumenta o número
vRAM vRAM de VMs que executam vRAM vRAM vRAM vRAM vRAM vRAM
a sua aplicação.
vRAM vRAM vRAM vRAM vRAM vRAM vRAM vRAM
Figura 9.4 Para lidar com um aumento da procura da sua aplicação, pode aumentar o número de VMs
que executam a aplicação, distribuindo a carga por várias VMs, em vez de por VMs de instância única
cada vez maiores.
Conjuntos de dimensionamento de virtual machines 129
Conjunto de dimensionamento
de virtual machines
Zona de disponibilidade 1
VM 1
Zona de disponibilidade 2
Balanceador
Internet de carga VM 2
Zona de disponibilidade 2
VM 3
Experimente agora
Para criar um conjunto de dimensionamento com a CLI do Azure, conclua
os passos a seguir:
1 Abra o portal Azure e selecione o ícone do Cloud Shell na parte superior do
dashboard.
2 Crie um grupo de recursos com az group create; especifique um nome do
grupo de recursos, como azuremolchapter9, e uma localização:
az group create --name azuremolchapter9 --location westeurope
Pronto! Criou várias VMs numa Zona de Disponibilidade que pode ser dimensionada.
Prepare-se para o que é realmente fantástico sobre o conjunto de dimensionamento
que acabou de criar com a CLI do Azure. Lembra-se de todo o capítulo sobre balancea-
dores de carga (capítulo 8), e todos aqueles comandos CLI que tinha de utilizar, e
como os modelos podem simplificar o modo como cria um balanceador de carga?
Aquele comando az vmss create criou e configurou um balanceador de carga para si!
é um bom indicador de que precisa de pedir um aumento de quotas. Pode ver a sua
quota atual para uma determinada região da seguinte maneira:
az vm list-usage --location westeurope
Para pedir um aumento das suas quotas de uma região, siga os passos descritos
em http://mng.bz/Xq2f.
Experimente agora
Consulte os recursos criados com o seu conjunto de dimensionamento, conforme des-
crito nos comandos a seguir.
Para ver quais os recursos que foram criados com o seu conjunto de dimensionamento,
execute o seguinte comando:
az resource list \
--resource-group azuremolchapter9 \
--output table
A saída é semelhante ao seguinte exemplo. Veja a coluna Tipo para comprovar que
uma rede virtual, um endereço IP público e um balanceador de carga foram criados:
Name ResourceGroup Type
O que significa toda esta magia? Quando cria um conjunto de dimensionamento com
a CLI do Azure, são criados um balanceador de carga com redundância entre zonas e
um endereço IP público. As VMs são criadas e adicionadas a um conjunto IP de back-
-end no balanceador de carga. As regras NAT são criadas, o que permite que possa
ligar-se às instâncias de VM. A única coisa que falta são as regras do balanceador de
carga, pois variam de acordo com as aplicações que pretende executar. À medida que
adiciona ou remove VMs ao conjunto de dimensionamentos, a configuração do balan-
ceador de carga é atualizada automaticamente para permitir que o tráfego seja distri-
buído para as novas instâncias. Esta magia não está limitada à CLI do Azure—se utilizar
Azure PowerShell ou o portal Azure, estes recursos de rede de suporte serão criados e
ligados para trabalharem em conjunto.
Conjuntos de dimensionamento de virtual machines 133
Experimente agora
O seu dimensionamento foi criado com duas instâncias. Pode dimensionar manual-
mente o número de instâncias de VM no seu conjunto de dimensionamento. Quando o
fizer, o balanceador de carga atualiza automaticamente a configuração do conjunto IP
de back-end. Defina a --new-capacity do conjunto de dimensionamento como quatro
instâncias da seguinte maneira:
az vmss scale \
--resource-group azuremolchapter9 \
--name scalesetmol \
--new-capacity 4
Conjunto de dimensionamento
Conjunto de dimensionamento de virtual machines Conjunto de dimensionamento
de virtual machines VM 1 VM 2 VM 3 de virtual machines
VM 1 VM 2 VM 3 A carga é A carga é VM 1 VM 2
aumentada reduzida
VM 4 VM 5
Reduz horizontal e automaticamente
Aumenta horizontal e automatica- para reduzir o número de instâncias
mente para aumentar o número de de VM
instâncias de VM
Figura 9.6 Os conjuntos de dimensionamento podem aumentar e reduzir horizontalmente de forma automática.
Define regras para monitorizar determinadas métricas que acionam as regras para aumentar ou diminuir o número
de instâncias de VM executadas. À medida que a sua procura de aplicações for alterada, o número de instâncias de
VM também será. Esta abordagem maximiza o desempenho e a disponibilidade da sua aplicação, minimizando o
custo desnecessário quando o carregamento da aplicação diminui.
134 Capítulo 9 Aplicações dimensionáveis
Experimente agora
Para criar regras de dimensionamento automático para um conjunto de dimensiona-
mento, conclua os passos que se seguem:
Figura 9.8 Agora deve ter uma regra que aumenta a contagem de instâncias em 1 quando a carga
média da CPU é superior a 70% e outra regra que diminui a contagem de instâncias em um quando a
carga média da CPU é inferior a 30%.
Experimente agora
Para criar uma aplicação Web com o Azure CLI, conclua os passos que se seguem:
1 No capítulo 3, criou uma aplicação Web no portal Azure. Como na maioria dos
recursos, muitas vezes é mais rápido e fácil utilizar o Azure CLI. Abra o Cloud
Shell no portal Azure.
2 Crie um plano do serviço de aplicações com um tamanho padrão S1. Este tama-
nho permite-lhe efetuar o dimensionamento automático de até 10 instâncias da
sua aplicação Web:
az appservice plan create \
--name appservicemol \
--resource-group azuremolchapter9 \
--sku s1
3 Crie uma aplicação Web que utilize um repositório Git local para implementa-
ção, como fez no capítulo 3:
az webapp create \
--name webappmol \
--resource-group azuremolchapter9 \
--plan appservicemol \
--deployment-local-git
Experimente agora
Para criar regras de dimensionamento automático para uma aplicação Web, conclua
os passos seguintes:
1 Lembra-se das regras NAT do balanceador de carga? Por predefinição, cada ins-
tância de VM num conjunto de dimensionamento tem uma regra NAT que lhe
permite comunicar com ela diretamente através de SSH. As portas não estão na
porta TCP padrão 22. Veja a lista de instâncias de VM num conjunto de dimen-
sionamento e os respetivos números de porta da seguinte maneira:
az vmss list-instance-connection-info \
--resource-group azuremolchapter9 \
--name scalesetmol
140 Capítulo 9 Aplicações dimensionáveis
2 Para se ligar a uma porta específica via SSH, utilize o parâmetro -p da seguinte
maneira (forneça o seu próprio endereço IP público e números de porta):
ssh azuremol@40.114.3.147 -p 50003
3 Instale um servidor Web Nginx básico em cada instância de VM com apt ins-
tall. Pense em como fez no capítulo 8.
4 Para ver o conjunto de dimensionamento em ação, abra o endereço IP público
do balanceador de carga do conjunto de dimensionamento num browser.
5 Se tiver problemas, certifique-se de que o equilibrador de carga criou correcta-
mente uma regra de equilibrador de carga para a porta TCP 80 e tem uma sonda
de saúde associada para o either TCP port 80 ou a sua própria sonda de saúde
HTTP personalizada que procura/saúde.html na VM.
2 A sua aplicação Web tem um repositório Git local. Adicione um remoto para a
sua aplicação Web, tal como fez no capítulo 3:
git remote add webappmolscale <your-git-clone-url>
3 Envie este exemplo para a sua aplicação Web. Isto permite confirmar um código
individual, mas, em seguida, a sua aplicação é distribuída por várias instâncias de
aplicações Web:
git push webappmolscale master
10
Bases de dados globais com
Cosmos DB
Dados. É impossível trabalhar sem este serviço. Quase todas as aplicações que com-
pila e executa criam, processam ou obtêm dados. Tradicionalmente, estes dados
foram armazenados numa base de dados estruturada, como MySQL, Microsoft SQL
ou PostgreSQL. Estas bases de dados grandes e estruturadas estão consolidadas e
são muito conhecidas, dispõem de ampla documentação e tutoriais, e podem ser
acedidas a partir da maioria das principais linguagens de programação.
Uma grande potência implica uma grande responsabilidade e, em geral, essas
bases de dados estruturadas tradicionais acarretam muitos custos indiretos e gestão
da infraestrutura. Isso não significa que não deva utilizá-las, longe disso. Mas quando
se trata de aplicações executadas à escala global, criar clusters de servidores de bases
de dados que replicam os seus dados e redirecionam inteligentemente os clientes
para a instância mais próxima não é uma tarefa fácil.
É aí que o Azure Cosmos DB se converte no seu melhor amigo. Não precisa de se
preocupar sobre como replicar os seus dados, garantir a consistência e distribuir os
pedidos dos clientes. Em vez disso, adiciona os dados num dos muitos modelos dis-
poníveis e, em seguida, escolhe onde pretende que os seus dados fiquem disponíveis.
Neste capítulo, irá obter mais informações sobre os modelos de bases de dados não
estruturados no Cosmos DB, irá aprender a criar e configurar a sua base de dados
para distribuição global, bem como a criar aplicações Web que utilizem a sua instân-
cia do Cosmos DB com elevada redundância e capacidade de dimensionamento.
141
142 Capítulo 10 Bases de dados globais com Cosmos DB
Tabela
id pizzaName tamanho custo FigurAa 10.1 Numa base
de dados estruturada, os
1 Pepperoni 16” 18 USD
dados são armazenados
2 Vegetariana 16” 15 USD em linhas e colunas dentro
de uma tabela. Cada linha
3 Havaiana 16” 12 USD
contém um conjunto fixo de
colunas que representam o
esquema da base de dados.
Nas bases de dados estruturadas, cada servidor deve conter toda a base de dados para
que as consultas e a obtenção de dados sejam bem-sucedidas. Os dados são unidos em
consultas extraídas de diferentes tabelas com base nos critérios que o programador cria
como parte da consulta estruturada. Daí provém o termo linguagem SQL (Structured
Query Language). À medida que as bases de dados crescem em tamanho e complexi-
dade, os servidores que executam a base de dados devem ser suficientemente dimensio-
nados para processar esses dados em memória. Com os conjuntos de dados muito
grandes, essa tarefa torna-se difícil e dispendiosa. Dado que precisam de uma estrutura,
também se torna difícil adicionar propriedades e alterar a estrutura mais tarde.
Só precisam responder aos seus próprios pedidos. Pode adicionar nós a um cluster
rapidamente em resposta à procura do cliente, quando necessário.
Isso significa que, numa base de dados NoSQL, não é necessário que toda a base de
dados caiba na memória de um host. Apenas parte da base de dados, um fragmento, pre-
cisa de ser armazenada e processada. Se a sua aplicação trabalha com grandes quanti-
dades de dados estruturados, uma base de dados NoSQL pode prejudicar o desempenho,
porque são consultados vários hosts para obter informações que serão devolvidas ao
cliente. Se tiver uma grande quantidade de dados não estruturados para processar, as
bases de dados NoSQL podem aumentar o desempenho e até mesmo a gestão e a efi-
ciência. Na figura 10.4. é mostrado um exemplo de dimensionamento horizontal de
bases de dados não estruturadas entre hosts.
Figura 10.4 As bases de dados NoSQL não estruturadas são dimensionadas horizontalmente. À medida
que uma base de dados cresce, é fragmentada em segmentos de dados que são distribuídos entre os
servidores de base de dados.
Experimente agora
Para ver o Cosmos DB em ação, crie uma conta utilizando o portal Azure:
7 Quando tiver tudo pronto, reveja e crie a sua conta Cosmos DB. A criação da
conta demora alguns minutos.
Atualmente, a sua base de dados está vazia, por isso vamos explorar como pode arma-
zenar alguns dados básicos para o menu da sua pizzaria. O Cosmos DB agrupa os dados
numa base de dados em algo chamado um container. Não, não é o mesmo tipo de con-
tainer que é a força motriz por trás do Docker, Kubernetes e aplicações nativas de
cloud de que pode ter ouvido falar. Esta confusão com os nomes não é uma vantagem,
mas acompanhe-me por agora.
Nas bases de dados Cosmos DB que utili-
zam o modelo de documento, os dados são
agrupados de forma lógica em containers
chamados de coleções. Outros modelos da API
Pizza de Pizza Pizza
têm um nome ligeiramente diferente para a
pepperoni vegetariana havaiana
entidade de container, tal como
gráfico para a Gremlin API. Para a nossa SQL
Coleção API, as coleções armazenam partes relacio-
nadas de dados que podem ser rapidamente
Base de dados de documentos do Cosmos DB indexadas e consultadas, como mostrado na
figura 10.6. As coleções não diferem total-
Figura 10.6 Uma base de dados Cosmos DB que utiliza o mente da sua maneira de organizar uma
modelo de documento armazena os dados em coleções.
Estas coleções permitem-lhe agrupar dados para base de dados SQL tradicional em tabe-
indexação e consultas mais rápidas. las, mas as coleções oferecem uma flexibili-
dade muito maior no momento de distribuir
os dados para desempenho ou redundância.
Criar uma conta e uma base de dados Cosmos DB 147
Como o Cosmos DB foi concebido para lidar com grandes quantidades de dados e
débito, pode escolher como dimensionar e controlar o fluxo e o custo desses dados. O
débito é calculado em unidades de pedido por segundo (RU/s) e uma unidade de
pedido equivale a 1 KB de dados de documento. Em suma, define quanta largura de
banda pretende para a sua base de dados. Caso ainda não tenha adivinhado, quanto
mais largura de banda (RU/s) quiser, mais pagará. O Cosmos DB mostra quantos
dados está a utilizar e quanto débito a sua aplicação utiliza. Normalmente, não precisa
de se preocupar muito em conseguir o dimensionamento correto. Mas, para a sua piz-
zaria, vamos começar pouco a pouco!
Experimente agora
Para criar uma coleção e preencher algumas entradas na base de dados, conclua
os passos seguintes:
Experimente agora
Para adicionar algumas entradas à base de dados, execute os seguintes passos, como
mostra a figura 10.7:
Figura 10.7 Com o Explorador de Dados no portal Azure, pode navegar nas coleções para
consultar ou criar novos documentos. Esta ferramenta gráfica permite-lhe gerir rapidamente a sua
base de dados a partir de um browser.
{
"description": "Veggie",
"cost": "15",
"gluten": "free"
}
7 Adicione um último tipo de pizza. Desta vez, adicione uma propriedade que
inclua oss ingredientes da pizza. Para adicionar outro item novo, introduza os
dados seguintes e selecione Guardar:
{
"description": "Hawaiian",
"cost": "12",
"toppings": "ham, pineapple"
}
Estas três entradas mostram o poder de uma base de dados NoSQL. Adicionou pro-
priedades às entradas sem necessidade de atualizar o esquema da base de dados. Duas
propriedades diferentes mostraram que a massa da pizza vegetariana é sem glúten da
pizza e os ingredientes da pizza havaiana. O Cosmos DB aceita essas propriedades adi-
cionais e esses dados ficam agora disponíveis nas suas aplicações.
Algumas propriedades JSON extra são adicionadas para coisas como id, _rid e _
self. Estas não são propriedades com as qual precise de se preocupar muito por
enquanto. O Cosmos DB utiliza estas propriedades para monitorizar e identificar os
dados; não deve editá-los manualmente ou eliminá-los.
Cosmos DB Melbourne,
(E.U.A. Oeste) Austrália
Cosmos DB
(E.U.A. Leste)
Cosmos DB
Paris, França
Região de (Ásia Oriental)
escrita principal
Dados
Cosmos DB (Sudeste Kuala Lumpur,
replicados para
da Austrália) Malásia
várias regiões
Os clientes consultam
Garantias de consistên- e leem o Cosmos DB
cia para dados do a partir da região
Cosmos DB mais próxima
Figura 10.8 Os dados são replicados de uma instância do Cosmos DB principal para várias regiões do
Azure em todo o mundo. Em seguida, as aplicações Web podem ser direcionadas para serem lidas a partir
da região mais próxima e os clientes podem ser encaminhados dinamicamente para a localização mais
próxima para minimizar a latência e melhorar os tempos de resposta.
de forma assíncrona para outras regiões. Os dados também são replicados rapida-
mente para as regiões de leitura que designar. Pode controlar a ordem de ativação pós-
falha, para designar regiões de leitura e, com a sua aplicação, especificar automática
ou manualmente as regiões a partir das quais os dados serão lidos.
Pode definir um modelo de consistência (que é mais uma questão de
design do que operacional) para definir a rapidez com que as escritas em várias regiões
são replicadas. Os modelos de consistência vão de forte, o qual que espera que as
escritas sejam confirmadas por réplicas e, assim, as leituras das garantias são consis-
tentes, a eventual, o que é mais descontraído. O modelo eventual garante que todos os
dados são replicados, mas pode haver um ligeiro atraso quando as leituras das réplicas
devolvem valores diferentes até estarem todos sincronizados.
Há um equilíbrio entre uma distribuição geográfica mais limitada, como com o
modelo de consistência forte, e uma replicação geográfica mais ampla com o modelo
de consistência eventual, mas sabendo que há um ligeiro atraso à medida que os
dados são replicados. Também devemos levar em consideração os custos de largura de
banda e processamento, dependendo do grau de consistência e pontualidade com que
pretende replicar os dados. A plataforma do Azure lida com a replicação subjacente de
dados a partir do seu ponto de escrita; não precisa de criar aplicações para replicar os
dados ou determinar a melhor forma de ler dados a partir de endpoints replicados.
Numa uma escala global, pode ter tantas VM ou aplicações Web quantas
criou nos capítulos anteriores, mas em diferentes regiões do mundo. Essas aplicações
Criar uma conta e uma base de dados Cosmos DB 151
ligam-se a uma instância local do Cosmos DB para consultar e ler todos os seus dados.
Através de algumas funcionalidades de tráfego de rede do Azure interessantes que ire-
mos analisar no capítulo 11, os utilizadores podem ser encaminhados automaticamente
para uma destas instâncias de aplicações Web locais, que também utilizam uma instân-
cia local do Cosmos DB. Em caso de interrupções ou manutenção regionais, toda a
plataforma encaminha o cliente para a instância mais próxima.
No mundo das bases de dados estruturadas tradicionais, nas quais gere as VMs, a
instalação de bases de dados e a configuração de clusters, essa configuração requer um
planeamento de design cuidadoso e a sua implementação é complicada. Com o Cos-
mos DB, o processo é feito com três cliques. Honestamente!
Experimente agora
Para replicar os dados do Cosmos DB globalmente, conclua os passos seguintes:
Figura 10.9 Selecione uma região do Azure para replicar a base de dados Cosmos DB e, em seguida,
escolha Guardar. Esses são todos passos necessários para distribuir os seus dados globalmente.
152 Capítulo 10 Bases de dados globais com Cosmos DB
Experimente agora
Utilize az cosmosdb show para encontrar informações sobre a sua localização
de leitura e escrita:
Este comando devolve um resultado extenso, por isso vamos examinar as duas partes
principais: as localizações de leitura e as localizações de escrita. Eis um exemplo do
resultado para a secção readLocations:
"readLocations": [
{
"documentEndpoint":"https://azuremol-eastus.documents.azure.com:443/",
"failoverPriority": 0,
"id": "azuremol-eastus",
"isZoneRedundant": "false",
"locationName": "East US",
"provisioningState": "Succeeded"
},
{
"documentEndpoint":
➥"https://azuremol-westeurope.documents.azure.com:443/",
"failoverPriority": 1,
"id": "azuremol-westeurope",
"isZoneRedundant": "false",
"locationName": "West Europe",
"provisioningState": "Succeeded"
}
],
Quando a sua aplicação estabelece uma ligação a uma base de dados Cosmos DB, pode
especificar uma política de ligação. Se, em geral, as bases de dados não forem o seu
forte, pense numa ligação ODBC (Open Database Connectivity) básica que possa criar
numa máquina Windows. Normalmente, a cadeia de ligação define um nome de host,
o nome de uma base de dados, uma porta e as credenciais. O Cosmos DB não é difer-
ente. Pode estabelecer ligação ao Cosmos DB a partir de várias linguagens, incluindo
.NET, Python, Node.js e Java. As linguagens podem diferir, mas todos os SDKs partil-
ham uma configuração semelhante: a deteção de um endpoint. Existem duas proprie-
dades principais da política de ligação que são importantes:
¡ Deteção automática de endpoints: o SDK lê todos os endpoints disponíveis a partir do
Cosmos DB e utiliza a ordem de ativação pós-falha especificada. Esta abordagem
garante que a sua aplicação segue sempre a ordem especificada ao nível da base
de dados. Pode, por exemplo, pretender que todas as leituras percorram a região
E.U.A. Leste e que apenas utilizem a Europa Ocidental quando há manutenção
na localização principal.
¡ Localizações de endpoints preferenciais: especifica as localizações que pretende uti-
lizar. Um exemplo é se implementar a sua aplicação na Europa Ocidental e quiser
garantir que utiliza o endpoints da Europa Ocidental. Perde-se alguma flexibili-
dade à medida que os endpoints são adicionados ou removidos, mas certifique-se
de que o endpoints predefinido está próximo da sua aplicação, sem haver a neces-
sidade de um encaminhamento de rede mais avançado para ajudar a
determiná-lo.
Normalmente, a aplicação permite que o SDK do Cosmos DB efetue a gestão desta
tarefa. A aplicação não altera a maneira como gere a ligação à base de dados: sabe ape-
nas que pode ligar-se a várias localizações. Mas o SDK é o que estabelece a ligação e utiliza
este conhecimento da localização.
154 Capítulo 10 Bases de dados globais com Cosmos DB
Azure
2. Pede localizações dos Cosmos DB
endpoints automáticos
Azure Cosmos
7. Dados enviados DB (leitura
a partir do endpoint principal
de leitura principal
Figura 10.10 O fluxo de pedidos por meio de um SDK do Cosmos DB quando uma aplicação utiliza
o conhecimento da localização para consultar o Cosmos DB
1 A sua aplicação precisa de fazer uma ligação a uma base de dados Cosmos DB. Na
política de ligação, ativa a deteção automática de endpoints. A aplicação utiliza o
SDK do Cosmos DB para fazer uma ligação de base de dados.
2 O SDK do Cosmos DB faz um pedido de ligação e indica que pretende utilizar
localizações de endpoints automáticos.
3 É devolvida uma ligação com base nas credenciais e na base de dados pedidas.
4 O SDK devolve um objeto de ligação para que a aplicação o utilize. As infor-
mações sobre a localização são abstraídas da aplicação.
5 A aplicação pede alguns dados a partir da base de dados Cosmos DB. O SDK é
utilizado novamente para consultar e obter os dados.
6 O SDK utiliza a lista de endpoints disponíveis e faz o pedido ao primeiro endpoints
disponível. Em seguida, o SDK utiliza o endpoints de ligação para consultar os dados.
Se o endpoints principal não estiver disponível, como durante um evento de
manutenção, será automaticamente utilizada a próxima localização do endpoints.
7 O Cosmos DB devolve os dados a partir da localização do endpoints.
8 O SDK devolve os dados a partir do Cosmos DB à aplicação para analisá-los e
apresentá-los, conforme necessário.
Aceder aos dados distribuídos globalmente 155
As últimas coisas a ver no Cosmos DB são as chaves de acesso, que lhe permitem con-
trolar quem pode aceder aos dados e que permissões têm. As chaves podem ser gera-
das novamente e, como faz com as palavras-passe, pode pretender implementar uma
política para executar regularmente este processo de regeneração de chave. Para
aceder aos dados distribuídos no Cosmos DB, precisa de obter as suas chaves. O portal
Azure fornece uma maneira de ver todas as chaves e cadeias de ligação para a sua base
de dados.
Experimente agora
Para ver as chaves da sua conta Cosmos DB, conclua os passos seguintes:
Figura 10.11 A secção Chaves da sua conta Cosmos DB lista as informações de ligação e as chaves de
acesso. Precisa destas informações quando criar e executar aplicações, como no laboratório de fim
de capítulo.
156 Capítulo 10 Bases de dados globais com Cosmos DB
Grande parte do que acontece no Cosmos DB são processos técnicos para distribuir os
seus dados e permitir que as suas aplicações leiam e escrevam a partir das localizações
mais apropriadas. Mas é precisamente disso que se trata. Saber que o serviço Cosmos
DB ajuda a conceber e planear a sua aplicação ou a resolver problemas se as aplicações
não permitirem que o SDK execute operações de leitura e escrita conforme necessário.
Mas não se preocupe com a forma e o momento; concentre-se nas suas aplicações e
utilize os serviços do Azure como o Cosmos DB para desfrutar das funcionalidades e
das vantagens da cloud que lhe permitem operar a uma escala global.
5 Mude para o diretório que contém o exemplo da aplicação Web do Cosmos DB:
cd ~/azure-mol-samples-2nd-ed/10/cosmosdbwebapp
9 Crie uma ligação para o novo repositório Git no bloco de teste com git remote
add azure, seguido pelo URL de implementação do Git.
10 Utilize git push azure master para emitir as suas alterações via push para a sua
aplicação Web.
Laboratório: implementar uma aplicação Web que utiliza o Cosmos DB 157
11 Selecione o URL para a aplicação Web na janela Descrição Geral do portal Azure.
12 Abra este URL num browser para ver a sua pizzaria, que agora funciona
com o Cosmos DB, como mostrado na figura 10.12.
Figura 10.12 A aplicação Web básica do Azure mostra o seu pequeno menu de pizzas com base
nos dados da base de dados Cosmos DB. A pizzaria de capítulos anteriores é mostrada, mas agora
a lista de pizzas e seus preços é alimentada pela Cosmos DB. O site ainda é básico, pois o objetivo
é que veja o serviço em ação e compreenda como poderia começar a construir as suas próprias
aplicações.
11
Gerir o tráfego e o
encaminhamento de rede
158
O que é o DNS do Azure? 159
Cliente
Londres
Internet
Regiões do Azure
Zona do DNS do Azure
azuremol.com Região Leste dos E.U.A. Região da Europa
Ocidental
eastus.azuremol.com westeurope.azuremol.com
VM Web 1 VM Web 2
53.17.91.8 102.42.9.67
A 53.17.91.8 A 102.42.9.67
Figura 11.1 Neste capítulo, examinaremos como pode criar zonas DNS no DNS do Azure. Para minimizar
a latência e melhorar os tempos de resposta, o Traffic Manager pode, então, ser utilizado para consultar
o DNS e direcionar os clientes para a sua instância da aplicação mais próxima.
O DNS do Azure funciona da mesma forma que qualquer solução DNS existente que
utilize ou conheça. A zona e os registos são armazenados no Azure e os servidores de
nomes que respondem às consultas DNS são distribuídos globalmente pelos datacen-
ters do Azure.
Cliente
O DNS do Azure dá suporte a todos os tipos de registo esperados numa oferta de servi-
ços DNS regular. Os registos IPv4 e IPv6 podem ser criados. Os tipos de registo são os
seguintes:
¡ A — Registos de host IPv4, para direcionar os clientes para as suas aplicações
e serviços
¡ AAAA — Registos de host IPv6, para os crânios que utilizam o IPv6 para direcio-
nar os clientes para as suas aplicações e serviços
¡ CNAME — Nome canónico ou alias, registos, como fornecer um nome abreviado
que é mais fácil de utilizar do que o nome de host completo de um servidor
¡ MX — Registos de troca de e-mails para encaminhar o tráfego de e-mail para os
seus servidores ou fornecedores de e-mail
¡ NS — Registos de servidor de nomes, que incluem os registos gerados automatica-
mente para os servidores de nomes do Azure
¡ PTR — Registos PTR, para consultas DNS revertidas para mapear endereços IP
para nomes de host
¡ SOA—Registos de início de autoridade, que incluem os registos gerados
automaticamente para os servidores de nomes do Azure
¡ SRV—Registos de serviço, para fornecer a deteção de serviços de rede, como para
identidade
¡ TXT—Registos de texto, como para Sender Protection Framework (SPF) ou
DomainKeys Identified Mail (DKIM)
Numa configuração típica de DNS, configura vários servidores DNS. Mesmo com a
distribuição geográfica desses servidores para redundância, os clientes podem consul-
tar um servidor de nomes do outro lado do mundo. Esses milissegundos necessários
para consultar, resolver e, em seguida, pedir uma resposta para a aplicação Web podem
acumular-se quando tem muitos clientes que querem pedir pizza.
Uma zona do DNS do Azure é replicada globalmente pelos datacenters do Azure. A
rede Anycast assegura que quando um cliente faz uma consulta DNS no seu domínio, o
servidor de nomes mais próximo disponível responde ao seu pedido. Como consegue o
encaminhamento Anycast fazer isso? Normalmente, um único endereço IP é propa-
gado em várias regiões. Em vez de utilizar uma consulta DNS simples que resolve um
único endereço IP que existe apenas numa localização, o encaminhamento Anycast
permite que a infraestrutura de rede determine de maneira inteligente de onde vem
um pedido e direcione o cliente para a região anunciada mais próxima. Este encami-
nhamento permite que os seus clientes se liguem à sua aplicação Web mais rapidamente
e oferece uma melhor experiência geral ao cliente.
Não precisa de ser um especialista em redes para entender totalmente como isto
funciona; o Azure faz isso por si! Quando combina o DNS do Azure com o Azure Traffic
Manager (secção 11.2), não só devolve consultas DNS a partir dos servidores de nomes
mais próximos, como também liga os clientes à instância da aplicação mais próxima.
Faça que esses milissegundos contem!
aos servidores de nomes do Azure. Esta delegação faz com que todas as consultas DNS
sejam direcionadas imediatamente para esses servidores de nomes do Azure, como mos-
trado na figura 11.3. Atualmente, o Azure não lhe permite comprar e registar domínios na
plataforma; portanto, precisa de comprar o nome de domínio por meio de um registador
externo e, em seguida, direcionar os registos NS para os servidores de nomes do Azure.
Figura 11.3 Para delegar o seu domínio no Azure, conFigura o fornecedor de domínio atual com os
endereços do servidor de nomes do Azure. Quando um cliente faz uma consulta DNS para o seu domínio,
os pedidos são enviados diretamente para os servidores de nomes do Azure da sua zona.
Porquê delegar o DNS ao Azure? Para simplificar a gestão e as operações. Se criar servi-
ços adicionais, ajuste a configuração do balanceador de carga, ou se quiser melhorar os
tempos de resposta com o DNS globalmente replicado, o Azure fornecerá essa única
interface de gestão para concluir essas tarefas. Quando as suas zonas DNS são alojadas
no Azure, também pode implementar algumas das funcionalidades de segurança do
Gestor de Recursos abordadas no capítulo 6: funcionalidades como o RBAC (controlo
de acesso baseado em funções) para limitar e auditar o acesso às zonas DNS e aos blo-
queios de recursos para impedir a eliminação acidental, ou mesmo maliciosa, da zona.
A maioria dos registadores de domínio fornecem interfaces e controlos bastante bási-
cos para gerir zonas e registos DNS. Para reduzir as despesas gerais de gestão e melhorar a
segurança, o DNS do Azure permite-lhe utilizar a CLI do Azure, o Azure PowerShell ou as
APIs REST para adicionar ou editar registos. As equipas de operações podem utilizar as
mesmas ferramentas e workflows para integrar novos serviços; e se ocorrerem problemas,
muitas vezes é mais fácil resolver problemas quando puder verificar se o DNS funciona
como esperado sem introduzir a variável de um fornecedor DNS de terceiros.
Portanto, se estiver convencido de que há uma lógica para delegar o seu domínio ao
DNS do Azure, para quais servidores de nomes do Azure direciona o seu domínio? Se
criar uma zona do DNS do Azure, os servidores de nomes serão listados no portal, como
mostrado na figura 11.4. Também pode aceder a estes endereços de servidores de
nomes com o Azure CLI ou o Azure PowerShell.
Nestas últimas páginas, não houve exercícios “Experimente agora”, porque a
menos que compre e configure um domínio real, não pode testar como pode encami-
nhar o tráfego real.
162 Capítulo 11 Gerir o tráfego e o encaminhamento de rede
Figura 11.4 Pode ver os servidores de nomes do Azure para a sua zona DNS no portal Azure, no
Azure CLI ou no Azure PowerShell.
tráfego. Pode criar uma zona do DNS do Azure sem um domínio real, mas não poderá
ser encaminhado nenhum tráfego para a mesma. Na vida real, atualiza os registos NS
com o seu fornecedor atual para direcionar quaisquer consultas do seu domínio para
os servidores de nomes do Azure. A propagação da delegação do seu domínio pela
hierarquia DNS global pode levar entre 24 e 48 horas (embora geralmente seja muito
menos tempo), portanto, planeie-a de maneira conveniente; isto pode causar breves
interrupções dos clientes que acedam à sua aplicação.
VM Web
Leste dos
E.U.A.
53.17.91.8
Figura 11.5 Um cliente envia uma consulta DNS para um serviço DNS para www.azuremol.com. O serviço DNS
encaminha a consulta para o Traffic Manager, que devolve um endpoint com base no método de encaminhamento
em utilização. O endpoint é resolvido num endereço IP, que o cliente utiliza para se ligar à aplicação Web.
Encaminhamento global e resolução com o Traffic Manager 163
(continuação)
e o Front Door oferece o mesmo tipo de opções de serviço e configuração, mas o Front
Door é especificamente projetado para trabalhar na camada de aplicação. O Front Door
também tem alguns truques de desempenho interessantes, tais como a divisão de TCP
para quebrar ligações em pedaços menores e reduzir a latência.
No capítulo 8, analisámos os balanceadores de carga e mencionámos o Application
Gateway, que funciona na camada de aplicação e permite fazer ações como o descarre-
gamento de TLS. O capítulo focava os balanceadores de carga para ajudar a aprender os
conceitos core nos quais o Application Gateway se basearia. O mesmo é aplicável aqui.
Focamo-nos no Traffic Manager neste capítulo, embora muitos dos mesmos conceitos e
opções de configuração, como opções de encaminhamento, também estejam disponí-
veis para o Azure Front Door. Tal como acontece com a maioria das coisas no Azure, o
que deve ser utilizado em cada serviço é impulsionado pelas aplicações que executa e
pelas necessidades das mesmas.
disponibilidade, quis sempre ter a certeza de que tinha redundância. Se associar uma
região a um determinado endpoint e utilizar o encaminhamento geográfico, não terá
opção de ativação pós-falha se esse endpoint encontrar um problema ou se executar a
manutenção.
Em vez disso, os perfis subordinados aninhados permitem-lhe definir uma priori-
dade que direciona sempre o tráfego para um endpoint em bom estado de funciona-
mento. Se o endpoint não estiver em bom estado, o tráfego vai para um
endpoint alternativo. A figura 11.6 mostra uma ativação pós-falha do tráfego numa
região diferente, embora também possa criar várias instâncias de aplicações Web nos
E.U.A. Oeste e utilizar um método de encaminhamento ponderado no perfil subordi-
nado. À medida que começa a reduzir horizontalmente o ambiente de aplicação, tenha
tempo para pensar na melhor forma de fornecer elevada disponibilidade aos endpoints
por trás do Traffic Manager. Para estes exemplos, irá criar uma ativação pós-falha entre
regiões para ver claramente as diferenças de comportamento.
Figura 11.6 Um perfil do Traffic Manager principal com o método de encaminhamento geográfico deve
utilizar perfis subordinados que contenham vários endpoints. Depois, esses endpoints subordinados
podem utilizar o encaminhamento prioritário para direcionar o tráfego para o endpoint preferencial. O
perfil subordinado da região E.U.A. Leste, por exemplo, envia sempre tráfego para o endpoint na região
E.U.A. Leste, contanto que o endpoint esteja em bom estado de funcionamento. Se o endpoint não
estiver em bom estado de funcionamento, então, o tráfego será direcionado para a Europa Ocidental.
Sem este perfil subordinado, os clientes na região E.U.A. Leste não puderam efetuar a ativação pós-falha
para um endpoint alternativo e não puderam aceder à sua aplicação Web.
Experimente agora
Para criar os perfis do Traffic Manager para a sua aplicação distribuída, conclua os pas-
sos a seguir.
O resto dos exercícios utiliza a região E.U.A. Leste e Europa Ocidental. Se não vive em
nenhuma dessas regiões, escolha uma região diferente que seja mais apropriada. Ape-
nas lembre-se de ser consistente em todos os exercícios! O laboratório de fim de capítulo
mostra como tudo isto se reúne e funciona, mas não será direcionado corretamente
para as suas aplicações Web se viver fora da América do Norte ou da Europa e não alte-
rar as regiões em conformidade.
166 Capítulo 11 Gerir o tráfego e o encaminhamento de rede
4 Crie um dos perfis subordinados do Traffic Manager. Desta vez, utilize o método
de encaminhamento prioritário e o nome eastus e especifique outro nome DNS
exclusivo, como azuremoleastus:
az network traffic-manager profile create \
--resource-group azuremolchapter11 \
--name eastus \
--routing-method priority \
--unique-dns-name azuremoleastus
6 Agora criou uma aplicação Web algumas vezes, por isso, utilize a CLI para criar
rapidamente dois planos do serviço de aplicações e uma aplicação Web em cada
plano. Uma destas aplicações Web fica na região E.U.A. Leste; a outra na Europa
Ocidental. No laboratório de fim de capítulo, irá carregar páginas Web de exem-
plo para estas aplicações Web; portanto, por enquanto, basta criar o site vazio e
preparar as aplicações para utilizar um repositório Git local.
Crie a aplicação Web na região E.U.A. Leste da seguinte maneira:
az appservice plan create \
--resource-group azuremolchapter11 \
--name appserviceeastus \
--location eastus \
--sku S1
az webapp create \
--resource-group azuremolchapter11 \
--name azuremoleastus \
--plan appserviceeastus \
--deployment-local-git
Encaminhamento global e resolução com o Traffic Manager 167
Figura 11.7 Nesta secção, irá associar os endpoints aos perfis do Traffic Manager e define a prioridade
para o tráfego a ser distribuído.
As primeiras associações que faz destinam-se aos endpoints da aplicação Web. Lembre-
-se de que, para ter elevada disponibilidade, pretende que ambas as aplicações Web
fiquem disponíveis para cada perfil do Traffic Manager. Utiliza um método de encami-
nhamento prioritário para direcionar todo o tráfego para a aplicação Web principal
para cada perfil. Se essa aplicação Web não estiver disponível, o tráfego poderá efetuar
a ativação pós-falha para o endpoint secundário da aplicação Web.
168 Capítulo 11 Gerir o tráfego e o encaminhamento de rede
Quando criou os perfis do Traffic Manager na secção 11.3.1, foram utilizadas algumas
predefinições para as opções de verificação do estado de funcionamento e a monitori-
zação dos endpoints. Vamos explorar quais são essas opções:
¡ DNS Time to Live (TTL): 30 segundos—Define quanto tempo as respostas do Traffic
Manager podem ser colocadas em cache. Um TTL breve garante que o tráfego do
cliente é encaminhado apropriadamente quando são efetuadas atualizações na
configuração do Traffic Manager.
¡ Protocolo de monitorização de endpoints: HTTP —Também pode optar por HTTPS ou
por uma verificação TCP básica. Da mesma forma que com os balanceadores de
carga, o HTTP ou o HTTPS garante que seja devolvida uma resposta HTTP 200
OK a partir de cada endpoint.
¡ Porta: 80—A porta a ser verificada em cada endpoint.
¡ Caminho: /—Por predefinição, verifica a raiz do endpoint, embora também possa
configurar uma página personalizada, como a página de verificação do estado de
funcionamento utilizada pelos balanceadores de carga.
¡ Intervalo de Sondagem de Endpoints: 30 segundos —Com que frequência deve verifi-
car-se o estado de funcionamento do endpoint. O valor pode ser 10 segundos ou
30 segundos. Para executar uma sondagem rápida a cada 10 segundos, há um
custo adicional por endpoint.
¡ Número de Falhas a Tolerar: 3—Quantas vezes um endpoint pode falhar numa
verificação do estado de funcionamento antes de ser marcado como
indisponível.
¡ Tempo Limite de Sondagem: 10 segundos —O período de tempo antes de uma pes-
quisa ser marcada como falha e o endpoint ser novamente sondado.
Não precisa de alterar nenhuma destas opções predefinidas. Para workloads críticos
quando cria os seus próprios ambientes de aplicações no mundo real, pode reduzir o
número de falhas a tolerar ou o intervalo de sondagem. Estas alterações irão garantir
que quaisquer problemas do estado de funcionamento sejam detetados rapidamente,
e o tráfego seria encaminhado para um endpoint diferente mais cedo.
Experimente agora
Para associar endpoints a perfis e concluir o encaminhamento geográfico, conclua
os passos seguintes:
1 No portal Azure, navegue e selecione o seu grupo de recursos. Para este exercí-
cio, selecione o perfil do Traffic Manager criado para a região E.U.A. Leste.
2 Escolha Endpoints na barra de navegação à esquerda no perfil e, em seguida,
selecione Adicionar.
3 Crie um endpoint Azure e insira um nome, como eastus.
4 Existem diferentes tipos de recurso de destino; pretende utilizar o App Service.
Para o recurso de destino, selecione a sua aplicação Web na região E.U.A. Leste,
como azuremoleastus.
5 Deixe a Prioridade definida para 1, aceite quaisquer outras predefinições que
possam ser definidas e, em seguida, selecione OK.
Encaminhamento global e resolução com o Traffic Manager 169
6 Repita o processo para adicionar outro endpoint. Desta vez, nomeie o endpoint
como westeurope, selecione a sua aplicação Web na Europa Ocidental como o
recurso de destino e defina uma prioridade de 100.
O seu perfil do Traffic Manager lista, agora, dois endpoints: um para a aplica-
ção Web na região E.U.A. Leste e outro para a aplicação Web na Europa Ociden-
tal, como mostrado na figura 11.8. Este encaminhamento baseado na prioridade
dos endpoints direciona sempre o tráfego para a aplicação Web na região
E.U.A. Leste quando esse recurso está em bom estado de funcionamento. Se esse
recurso não estiver disponível, há redundância para efetuar a ativação pós-falha
para a aplicação Web na Europa Ocidental.
Figura 11.8 Estão listados dois endpoints no perfil do Traffic Manager. O endpoint para a região E.U.A.
Leste tem a prioridade mais baixa, portanto, recebe sempre o tráfego quando o endpoint está em bom estado
de funcionamento. A redundância é fornecida com o endpoint da Europa Ocidental, que é utilizado apenas quando
o endpoint da região E.U.A. Leste não está disponível.
Figura 11.9 A mesma configuração de endpoints como o perfil anterior do Traffic Manager, desta vez com a
localização das aplicações Web revertidas. Estes perfis subordinados podem ser sempre utilizados para encaminhar
sempre os clientes para a aplicação Web na região E.U.A. Leste ou Europa Ocidental, mas agora tem a redundância
para efetuar a ativação pós-falha para outro endpoint se o endpoint principal na região não estiver disponível.
Este processo tem só mais uma parte, prometo! Lembre-se de que esta é uma boa
prática para obter elevada disponibilidade se utilizar o Traffic Manager para a distribui-
ção global de aplicações. No mundo real, o seu ambiente pode não ser tão complexo.
Veja o diagrama novamente para ver os perfis subordinados e as associações às aplica-
ções Web regionais que precisa de criar, como mostrado na figura 11.10.
Perfil com
método de
encaminhamento
geográfico
Figura 11.10 Os perfis subordinados do Traffic Manager para a região E.U.A. Leste e a Europa
Ocidental foram criados, com as aplicações Web regionais e as prioridades configuradas
conforme necessário. Agora, precisa de associar os perfis subordinados ao perfil principal.
Encaminhamento global e resolução com o Traffic Manager 171
Para direcionar o tráfego com base na geografia, define uma região, como a América do
Norte, e um perfil aninhado, tal como eastus. Todos os clientes da região da América do
Norte são direcionados para este perfil subordinado. Configurou as prioridades desse
perfil subordinado para que a aplicação Web na região E.U.A. Leste providencie sempre
o tráfego. Porém, forneceu uma opção redundante para efetuar a ativação pós-falha para
a aplicação Web na Europa Ocidental, conforme necessário.
Para os clientes na Europa Ocidental ocorre o inverso. Pode ser adicionado outro
endpoint para o perfil principal do Traffic Manager, desta vez com a Europa como a
região a ser associada ao endpoint e, em seguida, o perfil aninhado westeurope. Todo o
tráfego europeu é encaminhado para este perfil, e a aplicação Web na Europa Ociden-
tal providencia sempre a aplicação Web. Caso ocorra um problema, o tráfego pode efe-
tuar a ativação pós-falha para a região E.U.A. Leste.
Se houver mandatos de soberania de dados ou de políticas para as quais o tráfego
não pode efetuar a ativação pós-falha para uma região diferente, talvez seja necessário
ajustar a configuração dos endpoints e dos perfis do Traffic Manager. Pode, por exem-
plo, criar várias aplicações Web na Europa Ocidental, como viu no capítulo 9. Desta
forma, tem várias instâncias de aplicações Web que podem servir os clientes. Ou, se a
sua aplicação foi executada em VMs, utilize um conjunto de dimensionamento atrás de
um balanceador de carga para definir um perfil de redundância semelhante.
Experimente agora
Aqui é onde a sua própria localização regional importa! Se vive fora de um dos agrupa-
mentos regionais mostrados nos perfis do Traffic Manager, certifique-se de que sele-
ciona a sua própria região; caso contrário, não conseguirá aceder à aplicação Web no
laboratório de fim de capítulo.
Para associar os perfis subordinados ao perfil principal, conclua os passos seguintes:
Figura 11.11 Perfis subordinados aninhados com as regiões geográficas associadas. Este perfil principal do
Traffic Manager direciona todo o tráfego da Europa para a aplicação Web na Europa Ocidental, com redundância
para utilizar a região E.U.A. Leste se houver um problema. Para os clientes na América do Norte/América Central/
Caraíbas, o caso é o contrário.
As aplicações Web estão atualmente definidas para aceitar o tráfego apenas no
seu domínio predefinido, o qual está na forma de webappname.azurewebsites.net.
Quando o Traffic Manager direciona os clientes para essas instâncias de aplica-
ções Web, o tráfego parece vir do domínio do perfil principal, como azuremol.
trafficmanager.net. As aplicações Web não reconhecem este domínio, portanto, a
aplicação Web não será carregada.
7 Adicione o domínio do perfil principal do Traffic Manager a ambas as instân-
cias de aplicações Web criadas nos passos 4-6. Se necessário, pode encontrar o
nome do domínio na página Descrição Geral do perfil principal do Traffic
Manager:
az webapp config hostname add \
--resource-group azuremolchapter11 \
--webapp-name azuremoleastus \
--hostname azuremol.trafficmanager.net
az webapp config hostname add \
--resource-group azuremolchapter11 \
--webapp-name azuremolwesteurope \
--hostname azuremol.trafficmanager.net
Agora, quando abre o endereço do seu perfil principal do Traffic Manager num browser,
como https://azuremol.trafficmanager.net, you can’t tell which endpoint you access, as
both web apps run the same default web page. No laboratório de fim de capítulo, irá car-
regar uma página Web básica em cada aplicação Web para as diferenciar!
Vamos parar para examinar o que criou através destes exercícios. Isto é importante
porque agora os clientes podem utilizar todas as funcionalidades de elevada disponibi-
lidade e redundância dos capítulos anteriores, com o encaminhamento automático de
tráfego que os direciona para a instância mais próxima da sua aplicação Web. Neste
capítulo, criou o seguinte:
¡ Uma aplicação Web na região E.U.A. Leste e outra na Europa Ocidental
¡ Os perfis do Traffic Manager que utilizam o encaminhamento geográfico para
direcionar todos os clientes da América do Norte e Central para a aplicação Web
da região E.U.A. Leste e todos os clientes da Europa para a aplicação
Web da Europa Ocidental.
¡ As políticas subordinadas do Traffic Manager com encaminhamento prioritário
que facilita a utilização de uma ativação pós-falha da região alternativa se a aplica-
ção Web principal para a região não estiver disponível.
Encaminhamento global e resolução com o Traffic Manager 173
Cliente
Internet
Azure Traffic
Azure DNS
Manager
Figura 11.12 Após os últimos capítulos, deve entender como criar aplicações IaaS ou PaaS altamente disponíveis
no Azure. As soluções IaaS podem utilizar zonas de disponibilidade, balanceadores de carga e conjuntos de
dimensionamento. As soluções PaaS podem utilizar aplicações Web de dimensionamento automático e o Cosmos
DB. O Traffic Manager e o DNS do Azure podem encaminhar automaticamente os clientes para a instância de
aplicação mais apropriada, com base na sua localização geográfica.
174 Capítulo 11 Gerir o tráfego e o encaminhamento de rede
O laboratório de fim de capítulo carrega alguns sites básicos para as suas aplicações
Web, apenas para provar que o Traffic Manager funciona e o endpoint apropriado pro-
videncia o seu tráfego. Se tiver tempo, vá em frente e faça o exercício. Caso contrário,
tire um tempo para si e faça uma sesta. Prometo que não digo ao seu chefe!
Temos mais um capítulo nesta segunda secção do livro, e fala sobre como pode certificar-
-se de que as suas aplicações permanecem em bom estado de funcionamento: como
monitorizar e resolver problemas das suas aplicações e infraestrutura.
2 Comece pela página Web eastus e, em seguida, repita os seguintes passos no dire-
tório westeurope:
cd ~/azure-mol-samples-2nd-ed/11/eastus
4 No portal Azure, a janela Descrição Geral da sua aplicação Web lista o URL de
clonagem do Git. Copie este URL e, em seguida, defina-o como um destino para
o seu site HTML de exemplo no Cloud Shell com o seguinte comando:
git remote add eastus <your-git-clone-url>
5 Emita o site HTML de exemplo via push para a sua aplicação Web:
git push eastus master
175
176 Capítulo 12 Monitorizção e resolução de problemas
Experimente agora
Para criar uma VM e ativar o diagnóstico de arranque, conclua os passos seguintes:
Figura 12.1 Por predefinição, o diagnóstico de arranque está ativado quando cria
uma VM no portal Azure. É criada uma conta de armazenamento; o diagnóstico de
arranque é armazenado nesta conta. Num exercício posterior, irá examinar e ativar o
diagnóstico do SO convidado; por isso, não o ative agora. Para utilização em ambientes
de produção, recomendo que ative o diagnóstico de arranque e o diagnóstico do SO
convidado para cada VM criada.
Experimente agora
Para ver o diagnóstico de arranque para a sua VM, conclua os passos seguintes:
Automation e extensões de VM
No capítulo 18, iremos abordar a Automation do Azure, a qual permite realizar tarefas
nas suas VMs de forma automatizada e agendada. Uma funcionalidade poderosa da
Automation do Azure é a capacidade de atuar como um servidor de extração da Desired
State Configuration (DSC) do PowerShell. O PowerShell DSC define um determinado
estado de como um sistema deve ser configurado, quais pacotes devem ser instalados,
ficheiros e permissões, e assim por diante. Cria definições para a configuração preten-
dida e aplica-as às VMs ou aos servidores físicos. Em seguida, pode reportar e impor a
conformidade com essas políticas. A extensão DSC do Azure PowerShell é utilizada para
aplicar configurações DSC, tais como de um servidor de extração de Auto-
matização do Azure.
Outras extensões que podem aplicar configurações e executar scripts em VMs incluem a
Extensão de Script Personalizado do Azure. Com a Extensão de Script Personalizado,
define um conjunto simples de comandos ou aponta para um ou mais scripts externos,
como os alojados no Armazenamento do Azure ou no GitHub. Estes scripts podem exe-
cutar tarefas complexas de configuração e instalação e garantir que todas as VMs imple-
mentadas sejam consistentemente configuradas.
A extensão DSC do Azure PowerShell e a Extensão de Script Personalizado são geralmente
utilizadas com conjuntos de dimensionamento de máquinas virtuais. Aplica uma destas
extensões ao conjunto de dimensionamento e, como as instâncias de VM são criadas den-
tro do conjunto de dimensionamento, são configuradas automaticamente para executar a
sua aplicação. O objetivo destas extensões é minimizar a configuração manual necessária
de VMs, que é um processo propenso a erros que requerem interação humana.
Outras formas de automatizar as configurações de VM incluem Puppet e Chef, ambos
com extensões de VM do Azure disponíveis. Se já estiver a utilizar uma ferramenta de
configuração e gestão, verifique se o fornecedor oferece suporte ao Azure. Há uma
boa possibilidade de que uma extensão da VM estar disponível para facilitar a sua vida.
Experimente agora
Para ativar a extensão de diagnóstico da VM, conclua os passos seguintes:
Figura 12.3 Pode configurar eventos e níveis de registo para vários componentes na VM. Esta
funcionalidade permite-lhe centralizar os seus registos da VM para análise e gerar alertas. Sem a
necessidade de instalar sistemas de monitorização complexos e, muitas vezes, dispendiosos, pode
analisar e receber notificações quando surgem problemas nas suas VMs do Azure.
Experimente agora
Para ver as métricas ao nível do convidado, conclua os passos seguintes:
Muitas mais métricas estão agora disponíveis, em comparação com as métricas básicas
baseadas no host do capítulo 9. Explore algumas das métricas para host da VM e convi-
dados disponíveis e pense em algumas aplicações para as quais possa querer monitori-
zar métricas específicas.
Quais são alguns cenários nos quais convém utilizar o Observador de Rede e as funcio-
nalidades de resolução de problemas que o mesmo oferece? Vejamos alguns proble-
mas comuns e vejamos como o Observador de Rede pode ajudar.
VPNs e ExpressRoute
As VPNs (redes privadas virtuais) do Azure fornecem comunicações seguras entre os escri-
tórios on-premises e os datacenters do Azure. O Azure ExpressRoute fornece ligações pri-
vadas de alta velocidade e dedicadas a partir de escritórios on-premises para os
datacenters do Azure e é frequentemente utilizado em organizações de grande dimensão.
Ambas as ligações são um pouco mais complicadas para configurar o que podemos cobrir
em apenas uma hora durante o almoço e, muitas vezes, são coisas que só se configuram
uma vez. A equipa de rede é, normalmente, responsável pela sua configuração e pode
nem mesmo aperceber-se de que está a aceder ao Azure através de uma ligação privada.
184 Capítulo 12 Monitorizção e resolução de problemas
Todos os testes da sua aplicação funcionam muito bem. Pode aceder à aplicação atra-
vés de um browser, fazer pedidos e receber notificações por e-mail. Mas quando os seus
clientes tentam fazer um pedido, a aplicação não carrega.
Como é que o Observador de Rede pode ajudar? Através da verificação dos fluxos de
IP. O Observador de Rede simula o fluxo de tráfego para o seu destino e reporta se o
tráfego pode alcançar a sua VM.
Experimente agora
Para ativar o Observador de Rede e verificar os fluxos de IP, conclua os passos seguintes:
Aqui estão alguns exemplos comuns de como as regras do NSG podem ser aplicadas:
¡ Nível de sub-rede—Permitir a porta TCP 5986 para uma gestão remota segura a par-
tir da sub-rede de gestão 10.1.10.20/24.
¡ Nível do grupo de segurança de aplicações —Permitir a porta TCP 80 para o tráfego
HTTP para as aplicações Web e aplicar o grupo de segurança de aplicações a
todas as VMs de aplicações Web.
¡ Nível da NIC virtual—Permitir a porta TCP 3389 para acesso ao ambiente de traba-
lho remoto a partir da sub-rede de gestão 10.1.10.20/24.
Estas regras são básicas e permitem explicitamente um determinado tráfego. Se
nenhuma regra de permissão corresponderem a um pacote de rede, serão aplicadas
regras predefinidas DenyAll para interromper o tráfego.
Durante o teste realizado na aplicação analisado no exemplo, pode ter configurado
essa regra HTTP para permitir apenas o tráfego proveniente de uma das suas sub-redes
on-premises. Agora, os clientes que acedem através da Internet pública não conseguem
estabelecer a ligação.
Experimente agora
Para determinar onde uma regra do NSG é aplicada, conclua os passos seguintes:
Figura 12.4 Quando seleciona uma VM, o Observador de Rede examina como todas as regras do NSG
são aplicadas e a ordem de precedência, e mostra quais regras efetivas estão aplicadas no momento.
Em seguida, pode explorar em detalhe a sub-rede, a NIC virtual e as regras predefinidas para localizar
e editar onde uma determinada regra é aplicada.
186 Capítulo 12 Monitorizção e resolução de problemas
As regras predefinidas da VM que criou anteriormente não são empolgantes, mas pode
percorrer a sub-rede, a interface de rede e as regras predefinidas para obter uma sen-
sação de como as regras efetivas são combinadas e como pode identificar onde as
regras são aplicadas se precisar de efetuar alterações.
Figura 12.5 Uma captura de pacotes de rede quando vista no Message Analyzer da Microsoft. Cada
pacote individual está disponível para inspeção. Pode agrupá-los e filtrá-los por meio de um protocolo
de comunicação ou cliente-host. Essa profundidade de dados da rede permite examinar os pacotes reais
que fluem entre os nós para resolver problemas quando ocorrer um erro. Um ex-colega disse-se uma vez:
“os pacotes nunca mentem”. O puzzle consiste em averiguar o que dizem.
Observador de Rede do Azure 187
Experimente agora
Para instalar a extensão da VM do Observador de Rede e capturar pacotes de rede,
conclua os passos seguintes:
Leva um minuto ou dois a iniciar a captura. Quando a captura estiver em curso, os dados
são transmitidos para a conta do Azure Storage ou para o ficheiro local na VM. A lista de
capturas é mostrada na página do portal do Observador de Rede. Se transmitir os regis-
tos para o Azure Storage, poderá fazer com que a captura vá diretamente para a conta do
Armazenamento e fazer download do ficheiro de captura .cap. Em seguida, pode abrir a
captura de pacotes num programa de análise, conforme abordado na secção 12.3.3. Na
verdade, a captura de rede de exemplo mostrada na figura 12.5, anteriormente neste
capítulo, é de uma captura de um pacote do Observador de Rede do Azure!
Servidores
VMs on-premises
Azure físicos on-prem- VM externas
(VMware/Hyper-V)
VMs ises (Windows/- (como AWS)
Linux)
Figura 13.1 Vários servidores físicos ou VMs, de vários fornecedores e localizações, podem ser
copiados pelo serviço de orquestração central. O Azure Backup utiliza as políticas definidas para fazer
cópias de segurança dos dados com uma determinada frequência ou de acordo com uma agenda. Depois,
estas cópias de segurança podem ser armazenadas no Azure ou numa solução de armazenamento
on-premises. Os dados são inteiramente encriptados para maior segurança.
VM
protegida
A primeira operação de
cópia de segurança faz
cópia de segurança de
todos os dados da VM
para a localização de
recuperação
selecionada. A tarefa de cópia de As tarefas de cópia de
segurança seguinte faz apenas segurança adicionais continuam
cópia de segurança dos dados apenas a fazer cópia de
que foram alterados desde a segurança dos dados que foram
operação anterior de cópia de alterados desde a operação
segurança. anterior de cópia de segurança.
Figura 13.2 Nas cópias de segurança incrementais, apenas os dados que foram alterados desde a operação
anterior são copiados. A primeira cópia de segurança está sempre completa. Em cada tarefa de cópia de segurança
subsequente, apenas os dados que foram alterados desde a cópia anterior foram copiados. Pode controlar a
frequência das cópias de segurança por meio de políticas. Com esta abordagem, a quantidade de dados que deve
viajar com segurança pela rede e permanecer na localização de armazenamento de destino é minimizada. O Azure
Backup mantém as relações das cópias de segurança incrementais entre si, para que, ao restaurar os dados, estes
sejam consistentes e estejam completos.
Com o Azure Backup, pode armazenar até 9999 pontos de recuperação para cada ins-
tância protegida. Para ter uma ideia, se fizer cópias de segurança diárias, poderá man-
ter os pontos de restauração durante mais de 27 anos. Ou, se fizer cópias de segurança
semanais, poderá mantê-las durante 200 anos. Acho que deveria ser suficiente para
cobrir quase todas as situações de auditoria! Pode optar por manter as cópias de segu-
rança diariamente, semanalmente, mensalmente ou anualmente, o que está de acordo
com a maioria das políticas de cópia de segurança existentes.
194 Capítulo 13 Cópia de segurança, recuperação e replicação
Para implementar a estratégia de cópia de segurança ideal para o seu workload, pre-
cisa de entender e determinar o objetivo de ponto de recuperação (RPO) e o objetivo de tempo
de recuperação (RTO) aceitáveis.
Objetivo de ponto de recuperação
O RPO define o ponto em que pode restaurar os dados na cópia de segurança mais
recente. Por predefinição, o Azure Backup faz uma cópia de segurança diária. Em
seguida, define as políticas de retenção, como durante quantos dias, semanas, meses
ou anos pretende manter estes pontos de recuperação. Embora, normalmente, o RPO
seja utilizado para definir a quantidade máxima de perda de dados aceitável, também
deve considerar o quanto pretende retroceder no tempo. A figura 13.3 mostra como o
RPO define a quantidade de perda de dados aceitável.
Cópia de
segurança
diária
Perda de dados aceitável
VM protegida
Cópia de
segurança
semanal
Figura 13.3 O objetivo do ponto de recuperação (RPO) define a quantidade de perda de dados que
pode sustentar para uma instância protegida. Quanto mais longo for o RPO, maior será a perda de dados
aceitável. Um RPO de 1 dia significa que até 24 horas de dados podem ser perdidos, dependendo de
quando a perda ocorreu em relação à última cópia de segurança. Um RPO de uma semana significa que
podem ser perdidos até sete dias de dados.
Não é frequente que ocorram interrupções graves ou que sejam perdidas grandes
quantidades de dados. Por outro lado, incidentes de perda ou substituição de peque-
nas quantidades de dados são mais comuns. Frequentemente, passam despercebidos
ou não são notificados até depois de um tempo desde que ocorreram. É aqui que a
política de retenção das instâncias protegidas torna-se importante. Se tiver uma polí-
tica de retenção curta, talvez não consiga restaurar os dados no ponto de recuperação
necessário. É importante encontrar o equilíbrio entre a quantidade de pontos de recu-
peração e os custos de armazenamento que a sua retenção implica.
O armazenamento do Azure é relativamente barato, geralmente inferior a 0,02 $ por
gigabyte de armazenamento. Este custo equivale a aproximadamente 2 $ por mês para
cópias de segurança de dados de VM com 100 GB (mais uma taxa para o serviço de
Backup Azure em si). Dependendo do quanto os seus dados mudam, o tamanho dos
pontos de recuperação incrementais pode aumentar rapidamente. Reter pontos de
recuperação durante semanas ou meses pode custar dezenas de dólares por mês por
instância protegida. Isto não é para o desencorajar, mas é importante planear as suas
necessidades e realizar uma gestão inteligente dos seus custos. O armazenamento a
0,02 $ por gigabyte parece barato até que tenha centenas de gigabytes por instância
protegida e dezenas ou centenas de instâncias para proteger.
Azure Backup 195
Única cópia
de segurança
completa Duração aceitável da
interrupção da aplicação
VM protegida
Várias cópias
de segurança
incrementais
Menor tempo Tempo de
para recuperar recuperação
os dados progressivamente
mais longo
Figura 13.4 O RTO define quanto tempo é aceitável para o processo de restauração de dados ser
executado e a aplicação estar indisponível. Quanto mais pontos de recuperação estiverem envolvidos no
processo de restauração, mais longo será o RTO. Da mesma forma, quanto mais próximas as cópias de
segurança estiverem armazenadas do ponto de restauração, mais curto será o RTO.
dos pontos de recuperação. Voltando ao Cosmos DB, não há nada para incluir na cópia
de segurança: porque a plataforma do Azure é automaticamente responsável por repli-
car e proteger os dados. Se criar uma solução personalizada no MySQL ou no Microsoft
SQL Server, seria normal utilizar um tipo semelhante de clustering e replicação para
garantir que haja várias cópias da base de dados. Portanto, caso uma instância seja per-
dida, não seria necessário restaurá-la a partir de uma cópia de segurança. As cópias de
segurança protegem principalmente contra uma interrupção grave do serviço ou no
caso de os dados serem corrompidos.
Experimente agora
Todas as cópias de segurança do Azure são armazenadas num cofre dos Serviços
de Recuperação. Para criar um cofre e uma política de cópia de segurança, conclua
os passos a seguir:
A vida simples
Também pode configurar cópias de segurança de VM ao criar uma VM no portal Azure.
Na página Definições na qual configure as definições de rede virtual ou diagnóstico e
opções de resolução de problemas, pode ativar o Azure Backup. Pode escolher um cofre
dos Serviços de Recuperação existente ou criar um e, em seguida, criar ou utilizar uma
política de cópia de segurança. Atualmente, não pode ativar cópias de segurança como
parte da implementação da VM na CLI do Azure ou no Azure PowerShell, mas geralmente
basta um único comando pós-implementação para fazer isso.
Gosto de planear uma estratégia de cópia de segurança, políticas de retenção e agen-
das, motivo pelo qual estes exercícios criaram primeiro o cofre e as políticas dos Servi-
ços de Recuperação. Mas, se pretender criar uma VM e ativar as cópias de segurança
rapidamente, poderá fazer isso no portal Azure num único passo.
Agora tem uma política de cópia de segurança, que também define políticas de reten-
ção para vários períodos, mas ainda não tem nada para copiar. Vamos criar uma VM
com o Cloud Shell para que possa criar uma cópia de segurança e, num exercício pos-
terior, replicar os dados.
Experimente agora
Para criar uma VM de teste para cópia de segurança e replicação, conclua os passos
a seguir:
Experimente agora
Para fazer uma cópia de segurança de uma VM com a sua política definida, conclua os
passos a seguir:
198 Capítulo 13 Cópia de segurança, recuperação e replicação
Figura 13.5 Para criar a primeira cópia de segurança, selecione o botão Criar Cópia de Segurança
Agora. O estado é atualizado quando concluído e mostra a hora da cópia de segurança mais recente,
o ponto de restauração mais recente e o ponto de restauração mais antigo.
Experimente agora
Para restaurar uma VM completa, conclua os passos a seguir:
Figura 13.7 Quando a cópia de segurança da VM for concluída, a página de descrição geral
mostrará os dados da última cópia de segurança e dos pontos de restauração disponíveis. Para
iniciar o processo de restauração, selecione Restaurar VM.
Demora alguns minutos a ligar o ponto de recuperação e a criar uma VM restaurada com
os discos anteriores anexados. Neste ponto, pode ligar-se à VM restaurada para testar atua-
lizações de software ou restaurar grandes quantidades de dados, conforme necessário.
Também pode fazer cópia de segurança de uma aplicação Web; portanto, esta abor-
dagem não é apenas para VMs. O processo é um pouco diferente, mas os conceitos são
os mesmos. Migrar o seu modelo de aplicação para uma solução de PaaS como uma
aplicação Web não significa que pode esquecer-se dos princípios básicos das cópias de
segurança e da retenção!
Recursos on-premises
Vários servidores
virtuais ou físicos
podem ser protegidos
e replicados com O Azure Site Recovery atua como
o Site Recovery. Azure Site um orquestrador para replicar
workloads com base em políticas
Recovery definidas que definem a agenda
e as localizações.
Figura 13.8 O Azure Site Recovery coordena a replicação e a migração de recursos físicos ou virtuais
para outra localização. As localizações on-premises e o Azure podem servir como pontos de origem e de
destino para proteção, replicação ou migração.
Um aspeto importante é que o Azure Site Recovery serve para mais do que apenas VMs
do Azure; o Site Recovery pode ser utilizado para replicar VMs do VMware ou Hyper-V
on-premises para o Azure para recuperação após desastre (DR) ou como parte de uma
migração para o Azure. Também pode utilizar o Azure Site Recovery puramente como
o orquestrador para replicar VMs on-premises de uma localização para uma localiza-
ção on-premises secundária.
202 Capítulo 13 Cópia de segurança, recuperação e replicação
Da mesma forma que o Azure Backup não significa “só funciona com o Azure”, o
Azure Site Recovery não significa “apenas replica VMs do Azure”. O Azure Backup e o
Azure Site Recovery podem ser utilizados como soluções híbridas para cópia de segura-
ção e recuperação após desastre. Estes serviços do Azure podem ser utilizados para pro-
teger todas as suas workloads, tanto on-premises como na no Azure. Em seguida, uma
única estrutura de comunicação para conformidade e validação pode ser gerada para
garantir que todos os workloads que pensar que estão protegidos estão realmente em
segurança contra perdas de dados.
Por que utilizaria o Azure Site Recovery? Dois motivos principais são mais comuns:
replicação e migração.
A replicação protege-o de uma interrupção completa da região do Azure. Seria pre-
ciso um evento catastrófico para uma região inteira ficar offline, mas quando trabalha
em TI, sabe que tudo é possível. Mesmo os conjuntos de disponibilidade e as zonas de
disponibilidade, que vimos no capítulo 7, normalmente só o protegem de uma inter-
rupção menor dentro de uma região do Azure. Se a região inteira ficar inativa, a sua
aplicação ficará indisponível. Com o Site Recovery, todo o seu ambiente de aplicação,
incluindo recursos de rede virtual, é replicado para uma região secundária do Azure.
Ao clicar num botão, essa localização secundária pode ser colocada online e ficar ativa.
Em seguida, o tráfego pode então ser encaminhado para esta localização secundária e
começar a providenciar os seus clientes. A figura 13.9 apresenta uma descrição geral de
alto nível sobre como o Azure Site Recovery protege o seu ambiente.
Ambientes de Ambiente de
produção recuperação
VM do Azure
Azure Site Recovery
Discos virtuais Discos virtuais
Política de replicação
VM, configu- Configuração e
Rede virtual ração, Cofre dos Serviços de Rede virtual
dados replicados
do Azure armazenamento Recuperação do Azure
a partir da
e rede virtual produção com
Sub-rede replicada Sub-rede
base na política
definida
Figura 13.9 O Azure Site Recovery replica a configuração, os dados e as redes virtuais do ambiente de
produção para um ambiente de recuperação. As VMs não são criadas no ambiente de recuperação até
que seja iniciada uma ativação pós-falha. Apenas os dados são replicados.
A VM consiste apenas nos metadados que definem o tamanho da VM, quais discos estão
anexados e a quais recursos de rede a VM se liga. Estes metadados são replicados, o que
permite que as VMs sejam criadas rapidamente quando uma ativação pós-falha é ini-
ciada. Os discos virtuais são replicados para o ambiente de recuperação e são anexados
quando uma VM de recuperação é criada durante um evento de ativação pós-falha.
Azure Site Recovery 203
Ambientes de produção
Ambiente de recuperação
Este dos EUA
Costa Oeste EUA
VM do Azure
Cache da conta
Discos virtuais
Discos virtuais Os dados escritos nos Storage Dados replicados da
discos de produção são cache da conta de
imediatamente armazenamento
replicados para a cache para o ambiente
da conta de armazena- de recuperação
mento.
Figura 13.10 As alterações nos discos de produção são imediatamente replicadas para uma cache
da conta de armazenamento. Esta cache da conta de armazenamento evita impactos de desempenho
nos workloads de produção na medida que aguardam para replicar as alterações na localização de
recuperação remota. Em seguida, as alterações da cache da conta de armazenamento são replicadas
para o ponto de recuperação remoto para manter a consistência dos dados.
O segundo cenário no qual pode efetuar uma ativação pós-falha é para testar que o
processo funciona. Da mesma forma que as cópias de segurança devem ser testadas regu-
larmente, deve testar um plano de replicação e ativação pós-falha. Quando precisa de
colocar uma localização secundária online, seria bastante comprometedor e stressante
descobrir que há um problema de configuração nas redes virtuais ou que não pode exe-
cutar a ativação pós-falha com êxito em nenhuma das aplicações. O Azure deve fornecer
uma opção especificamente para testar a ativação pós-falha. Normalmente, é utilizada
uma rede virtual do Azure isolada na localização secundária e os workloads de produção
continuam a ser executados normalmente na localização principal. Se utilizar o Azure
Site Recovery, certifique-se de que testa regularmente o processo de ativação pós-falha!
A segurança dos seus dados é importante. Mais especificamente, a segurança dos dados
dos seus clientes é fundamental. Todas as semanas lemos nas notícias que alguma
empresa importante detetou uma violação de dados. Muitas vezes, estes incidentes são
causados por uma falta de segurança, uma configuração incorreta ou um simples des-
cuido. Nesta era digital, é muito fácil para os hackers automatizarem as tentativas de
obter acesso aos dados. O tempo necessário para se recuperar de um incidente de segu-
rança ao nível da aplicação pode não ser nada comparado com o tempo que leva à
empresa recuperar a confiança do cliente se os seus dados foram expostos.
O Azure inclui funcionalidades de encriptação que dificultam a utilização de des-
culpas como o facto de não ter tempo ou experiência para proteger os dados. Neste
capítulo, examinamos como encriptar os dados armazenados no Azure Storage, em
discos geridos ou em toda a VM. Foram escritos livros inteiros sobre a encriptação de
dados e este capítulo não aprofunda os métodos e as considerações de encriptação.
Em vez disso, verá como ativar alguns dos serviços e funcionalidades core do Azure
para proteger os seus dados durante o ciclo de vida da aplicação.
206
O que é a encriptação de dados? 207
011
110
101
Figura 14.1 Neste exemplo básico, um hacker pode intercetar o tráfego de rede enviado por uma
ligação HTTP não encriptada. Como os dados não são encriptados, o hacker pode juntar os pacotes
de rede e obter as suas informações pessoais e financeiras. Se se ligar ao servidor Web por meio de uma
ligação HTTPS encriptada, um hacker não poderá ler o conteúdo dos pacotes de rede e ver os dados.
ter no seu dia a dia. Provavelmente não gosta da ideia de expor os seus próprios dados, por isso
faça tudo o que puder para proteger os dados dos seus clientes.
Virtual machine
Disco
Disco Memória gerido
temporário virtual Os dados são encriptados
quando são escritos num
disco gerido.
O disco temporário e os
dados em memória da VM
não são encriptados.
Figura 14.3 À medida que os dados são escritos num disco gerido, são encriptados. Os dados em
memória na VM ou os dados em discos temporários locais da VM não são encriptados, a menos que toda
a VM esteja ativada para a encriptação, o que veremos mais adiante na secção 14.4.2. A encriptação
automática de dados escritos em discos geridos não provoca nenhuma sobrecarga na VM. A plataforma
do Azure executa a operação de encriptação no armazenamento subjacente. A VM não precisa de
manipular os processos de encriptação/desencriptação.
Encriptação do Serviço de Armazenamento 209
Esta encriptação de dados inativos para os discos geridos significa que não afeta o
desempenho das VMs. Não há nenhum processamento adicional para a VM executar
para encriptar e desencriptar os dados, portanto, toda a potência da CPU disponível
pode ser utilizada para executar aplicações. Em cenários típicos de encriptação de
VMs, a VM utiliza uma certa quantidade de potência de computação para processar e
gerir a encriptação de dados. A contrapartida da encriptação automática de
discos geridos é que apenas o SO e os discos de dados estão protegidos. Outros dados
em memória ou em discos temporários na VM poderiam ficar expostos.
A Microsoft gere as chaves de encriptação digital dentro da plataforma do Azure
com a encriptação automática de discos geridos. Isto cria outra contrapartida em que
pode encriptar automaticamente os seus dados sem a necessidade de criar, gerir, alter-
nar ou revogar chaves, mas tem de confiar na Microsoft para proteger essas chaves.
Conta de armazena-
mento encriptado HTTP
Dados Aplicação
Os dados são HTTPS
encriptados à medida Blob Ficheiro
Apenas o tráfego que utiliza
que são escritos no
a comunicação encriptada,
blob ou no armazena-
como HTTPS, é aceite.
mento de ficheiros
Figura 14.4 Quando ativa a SSE, os blobs e ficheiros do Azure são encriptados à medida que os dados
são escritos no disco. As tabelas e filas do Azure não são encriptadas. Para obter uma melhor segurança
dos dados, pode forçar todas as comunicações com uma conta de Armazenamento a utilizarem
protocolos de comunicação seguros, como HTTPS. Isto protege os dados em trânsito até ao momento
em que são encriptados no disco.
(continuação)
Os SDKs do Azure, como os exemplos do Python que examinámos no capítulo 4, podem
utilizar ligações encriptadas. Os documentos de referência para cada SDK específico da
linguagem fornecem orientação sobre como implementar comunicações seguras.
A utilização de comunicações seguras deve ser incorporada nas aplicações desde o iní-
cio. A ativação de comunicações seguras numa aplicação existente pode causar proble-
mas se alguns componentes não tiverem sido configurados corretamente originalmente.
Pelo menos, primeiro teste as comunicações seguras para uma aplicação existente num
ambiente de desenvolvimento.
Experimente agora
Para criar uma conta de armazenamento e ativar a encriptação e as comunicações
seguras, conclua os passos a seguir:
1 Abra o portal Azure e escolha o ícone do Cloud Shell na parte superior do menu.
2 Crie um grupo de recursos, especificando um nome do grupo de recursos, como
azuremolchapter14, e uma localização, como eastus:
az group create --name azuremolchapter14 --location eastus
"enabled": true,
"lastEnabledTime": "2019-09-27T03:33:17.441971+00:00"
},
"file": {
"enabled": true,
"lastEnabledTime": "2019-09-27T03:33:17.441971+00:00"
},
"queue": null,
"table": null
}
}
]
Experimente agora
Para criar um cofre de chaves e uma chave de encriptação, conclua os passos a seguir:
1 Abra o portal Azure e escolha o ícone do Cloud Shell na parte superior do menu.
2 Crie o cofre de chaves com o comando az keyvault create; especifique o grupo
de recursos que criou no exercício anterior, como azuremolchapter14, e forneça
um nome exclusivo para o seu cofre de chaves, como azuremolkeyvault:
az keyvault create \
--resource-group azuremolchapter14 \
--name azuremolkeyvault \
--enabled-for-disk-encryption
Vamos parar para pensar sobre o motivo pelo qual adiciona um parâmetro para --ena-
bled-for-disk-encryption. Quando encripta uma VM, a plataforma do Azure pre-
cisa de conseguir iniciar e desencriptar a VM para que esta possa ser executada. A
plataforma do Azure não tem nenhuma permissão para aceder a estes dados e a Micro-
soft não tem acesso para ver nem utilizar essas chaves de encriptação para outra finali-
dade que não seja iniciar uma VM. Quando ativa um cofre de chaves para a encriptação
de discos, concede permissões para que o Azure aceda ao cofre de chaves e utilize a
chave de encriptação associada a uma VM.
Recapitulando, a Microsoft não tem acesso a essas chaves ou aos seus dados, apenas
tem a capacidade de iniciar a sua VM encriptada. É bastante difícil fazer algo com uma
VM encriptada quando esta não pode arrancar. A figura 14.5 mostra como a plataforma
do Azure utiliza a chave de encriptação para iniciar uma VM encriptada.
Figura 14.5 Quando um cofre de chaves está ativado para a encriptação de discos, concede permissão para
que a plataforma do Azure peça e utilize a chave de encriptação para iniciar uma VM encriptada com sucesso.
3 Para criar uma chave, especifique o cofre que criou no passo 2, como azure-
molkeyvault, e forneça um nome para a chave, como azuremolencryptionkey:
az keyvault key create \
--vault-name azuremolkeyvault \
--name azuremolencryptionkey \
--protection software
Figura 14.6 Quando encripta uma VM, a extensão de encriptação de discos do Azure é instalada. Esta
extensão gere a utilização do BitLocker em VMs Windows ou dm-crypt em VMs Linux, para executar a
encriptação de dados na sua VM. A extensão também é utilizada quando consulta o estado de
encriptação de uma VM.
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "OS disk encryption started",
"time": null
}
]
A encriptação de discos pode demorar um pouco, por isso sugiro que espere
cerca de uma hora antes de voltar a este exercício prático, a menos que pretenda
fazer uma longa pausa para o almoço! Atenção, não me considero o seu chefe, mas
ficará rapidamente entediado ao ver a mesma mensagem de estado da
encriptação.
4 Quando o estado da encriptação reportar Encriptação com êxito para todos
os volumes, reinicie a VM:
az vm restart --resource-group azuremolchapter14 --name molvm
216
Proteger informações na cloud 217
As aplicações e os serviços,
ou recursos do Azure, como
VMs, podem ver, criar e
atualizar itens no cofre.
Chave Cofre
Itens, como certificados,
chaves e segredos (como
palavras-passe) podem ser
armazenados com segurança
no Vault e auditar o seu acesso.
Figura 15.1 O Azure Key Vault fornece uma maneira segura de armazenar as informações digitais, como
certificados, chaves e segredos. Em seguida, estes itens seguros podem ser acedidos diretamente pelas
suas aplicações e serviços, ou recursos do Azure, tais como VMs. Com a interação humana mínima, pode
distribuir centralmente credenciais e certificados seguros pelos seus ambientes de aplicações.
dispositivos não são exclusivos no Azure; são dispositivos de hardware de todo o setor, que
fornecem um alto nível de segurança para todos os dados armazenados.
Figura 15.2 O Azure Key Vault é um recurso lógico no Azure, mas todos os certificados, segredos e
chaves são armazenados num HSM. Em cenários de desenvolvimento ou teste, pode ser utilizado um
cofre protegido por software, que então executa qualquer operação de encriptação criptográfica, como
a encriptação ou a desencriptação de dados, no software, e não no hardware no HSM. Em ambientes de
produção, deve utilizar um cofre protegido por HSM, onde todo o processamento é realizado no hardware.
Atualmente, pode utilizar dois tipos de cofres de chaves: protegido por software e pro-
tegido por HSM. A diferença pode parecer confusa, por isso é que quero esclarecer
tudo antes de começarmos:
¡ Um cofre protegido por software armazena chaves, segredos e certificados num HSM,
mas todas as operações criptográficas necessárias para encriptar ou desencriptar
o seu conteúdo são executadas pela plataforma Azure no software. Os cofres pro-
tegidos por software são ótimos para cenários de desenvolvimento e teste, embora
possa decidir que os workloads de produção requerem uma maneira um pouco
mais segura para executar as operações criptográficas.
¡ Um cofre protegido por HSM também armazena chaves, segredos e certificados num
HSM, e as operações criptográficas necessárias para encriptar ou desencriptar o
seu conteúdo são executadas diretamente no HSM. Também pode gerar as suas
próprias chaves seguras num HSM on-premises e, em seguida, importá-las para o
Azure. Existem algumas ferramentas e processos adicionais a serem seguidos, mas
desta forma garante que controla completamente as chaves e que estas nunca
saem dos limites do HSM.
Para maximizar a segurança e a integridade dos seus dados, os
cofres protegidos por hardware são a abordagem preferencial dos workloads de
produção.
Independentemente de qual tipo de cofre utiliza, é importante lembrar que todos os seus
dados são armazenados com segurança num HSM validado (no mínimo) com o Padrão
Federal de Processamento de Informações (FIPS) 140–2 nível 2, e que a Microsoft não
Proteger informações na cloud 219
pode aceder às chaves ou obtê-las. Os cofres protegidos pelo HSM são um custo adicional.
Portanto, como em todos os aspetos do Azure e do cloud computing, deve comparar o
custo com o risco incorrido em caso de comprometimento dos seus dados.
2. Se o acesso ao cofre de
chaves e ao segredo for
1. A VM pede o segredo do
permitido, o segredo é
cofre de chaves
obtido a partir do cofre
Palavra-passe da
VM Linux Chave Cofre base de dados
3. Segredo devolvido à VM
Instalação do
MySQL Server
Figura 15.3 Nos próximos exercícios, irá criar um exemplo de um segredo armazenado
num cofre de chaves que pode ser utilizado como a palavra-passe da base de dados para
uma instalação do MySQL Server. É criada uma VM com permissões para pedir o
segredo do cofre de chaves. Em seguida, o segredo obtido é utilizado para introduzir
automaticamente uma credencial segura durante o processo de instalação da aplicação.
Um dos primeiros exercícios deste livro foi criar uma VM e, em seguida, instalar o
LAMP stack do servidor Web. Provavelmente precisou de fornecer uma palavra-passe
do MySQL Server ou foi utilizada automaticamente uma palavra-passe em branco.
Agora que sabe tudo sobre cofres de chaves, pode obter automaticamente uma pala-
vra-passe do cofre e utilizá-la dinamicamente para instalar e configurar o servidor.
Experimente agora
Para criar um cofre de chaves e adicionar um segredo, conclua os passos a seguir:
1 Abra o portal Azure, execute o Cloud Shell e crie um grupo de recursos, como
o azuremolchapter15:
az group create --name azuremolchapter15 --location eastus
2 Crie um cofre de chaves com um nome único, tal como azuremol, e ative-o para
implementação para que possa utilizar o cofre para injetar chaves e certificados
numa VM:
220 Capítulo 15 Proteger informações com o Azure Key Vault
az keyvault create \
--resource-group azuremolchapter15 \
--name azuremol \
--enable-soft-delete \
--enabled-for-deployment
4 Tem permissões completas para o cofre de chaves, para que possa ver o conteúdo
do seu segredo:
az keyvault secret show \
--name databasepassword \
--vault-name azuremol
Do ponto de vista da gestão, também pode executar ações comuns, como fazer cópias
de segurança e restaurar, fazer downloads, atualizar e eliminar itens armazenados num
cofre de chaves. Uma propriedade adicional que se define ao criar o cofre de chaves é
a opção enable-soft-delete. Se as suas aplicações e serviços não puderem obter os
segredos que precisam do cofre de chaves, poderá deparar-se com uma interrupção da
aplicação bastante grande! Um cofre de chaves pode armazenar metadados dos segre-
dos durante até 90 dias depois de terem sido realmente eliminados, o que lhe permite
recuperar os dados que são eliminados de forma incorreta ou maliciosa.
5 Elimine a chave que acabou de criar para simular um erro, ou possivelmente
alguém com intenção maliciosa:
az keyvault secret delete \
--name databasepassword \
--vault-name azuremol
Azure Active
1. Principal de serviço, um tipo Directory
especial de conta, criado no
Azure Active Directory Principal de serviço
Ativar a identidade
de serviço gerida
numa VM do Azure
Instance 3. A VM utiliza o Instance
Metadata Service para pedir
Metadata o token de acesso para se
Service ligar a um serviço ou recurso
Figura 15.4 Quando cria uma identidade gerida para uma VM, é criado um principal de serviço no Azure Active
Directory. Este principal de serviço é um tipo especial de conta que pode ser utilizado para os recursos se
autenticarem. Em seguida, esta VM utiliza o endpoint de Instance Metadata Service para efetuar pedidos de
acesso aos recursos. O endpoint liga-se ao Azure AD para pedir tokens de acesso quando a VM precisa de pedir
dados a partir de outros serviços. Quando um token de acesso é devolvido, pode ser utilizado para pedir acesso aos
recursos do Azure, como um cofre de chaves.
222 Capítulo 15 Proteger informações com o Azure Key Vault
Uma identidade gerida permite criar um tipo especial de conta que pode ser usada por
um recurso do Azure, como uma VM. Se tiver utilizado um serviço de diretório como o
Active Directory, é frequentemente utilizada uma conta de computador para identifi-
car e conceder acesso aos vários recursos de rede de que um computador precisa. Não
cria e utiliza contas de utilizador regulares para este tipo de autenticação, o que
melhora a segurança: pode conceder um conjunto restritivo de permissões apenas a
um computador, em vez de também ter de se preocupar com permissões de utilizador
e acesso às pastas partilhadas, por exemplo.
Uma identidade gerida é como uma conta de computador, mas é armazenada no
Azure Active Directory (Azure AD). A identidade, denominada principal de serviço, é
exclusiva a cada VM e pode ser utilizada para atribuir permissões a outros recursos do
Azure, como uma conta do Azure Storage ou um cofre de chaves. A VM tem permissões
para aceder a esses recursos, para que possa executar tarefas de script (como a Automa-
tion do Azure, que iremos explorar no capítulo 18) que não requerem nenhuma inter-
venção do utilizador ou que não requer nomes de utilizadores e palavras-passe. As VMs
autenticam-se e a plataforma do Azure autoriza o acesso aos recursos atribuídos.
É possível criar dois tipos de identidades geridas:
¡ Atribuído pelo sistema— Este tipo de identidade gerida é aplicada diretamente a um
recurso, como uma VM, e é utilizado apenas por esse recurso. Cada recurso tem a
sua própria identidade única quando se trata de auditoria ou resolução de pro-
blemas de acesso. Quando o recurso é eliminado, a identidade gerida é eliminada
automaticamente.
¡ Atribuído pelo utilizador—Um recurso Azure separado é criado e gerido para a identi-
dade gerida especificada. Esta identidade gerida pode ser partilhada através de
outros recursos para definir o acesso. Quando quaisquer recursos que utilizam a
identidade são eliminados, a identidade gerida permanece disponível para uso.
Vamos ver como pode utilizar uma identidade gerida atribuída pelo sistema para pedir
o segredo databasepassword de um cofre de chaves. Assim que a VM consiga obter o
segredo, a palavra-passe pode ser utilizada para instalar automaticamente um servidor
de base de dados MySQL. Com um cofre de chaves e MSIs, pode executar alguns
comandos para obter o segredo do cofre de chaves, executar o instalador do MySQL
Server e fornecer automaticamente a palavra-passe segura.
No caso de eventos de manutenção, o endpoint IMDS também pode ser consultado para
que a VM fique ciente de um evento de atualização ou arranque pendente. Qualquer
tarefa de pré-atualização ou arranque necessárias podem ser executadas. Como o IMDS
é um endpoint REST num endereço IP não encaminhável, não há nenhum agente ou
extensão para a VM ser instalada nem representa nenhum problema de segurança de
rede ou encaminhamento.
Para finalidades da identidade gerida, o endpoint IMDS é utilizado para reencaminhar
o pedido de um token de acesso ao Azure AD. Esta abordagem fornece uma maneira segura
para que as VMs peçam acesso sem a necessidade de falar diretamente com o AAD.
Experimente agora
Para criar uma VM com uma MSI, conclua os passos a seguir:
1 Crie uma VM Ubuntu; em seguida, forneça o seu grupo de recursos, como azu-
remolchapter15 e um nome para a VM, como molvm. Uma conta de utilizador
denominada azuremol é criada e as chaves SSH que utilizou nos capítulos ante-
riores são adicionadas à VM:
az vm create \
--resource-group azuremolchapter15 \
--name molvm \
--image ubuntults \
--admin-username azuremol \
--generate-ssh-keys
2 Como uma melhor prática de segurança, não deve permitir que as contas acedam
a todos os recursos em toda a sua subscrição do Azure. Especialmente para identi-
dades geradas, conceda apenas a quantidade mínima necessária de permissões.
Para este exercício, limite o acesso apenas ao seu grupo de recursos, tal como azu-
remolchapter15. Defina o âmbito consultando o ID do grupo de recursos com
--query id. Em seguida, este ID é então atribuído a uma variável denominada scope:
scope=$(az group show --resource-group azuremolchapter15
➥--query id --output tsv)
3 Crie uma identidade gerida atribuída por sistemas para a VM com a função de
leitura para que só possa ler recursos, e não fazer alterações nos mesmos. Limite
a identidade ao grupo de recursos. A variável que criou no passo anterior que
contém o ID do grupo de recursos é fornecida:
az vm identity assign \
--resource-group azuremolchapter15 \
--name molvm \
--role reader \
--scope $scope
224 Capítulo 15 Proteger informações com o Azure Key Vault
5 Agora, defina a política de acesso no cofre de chaves para que o principal de ser-
viço da sua VM possa ler segredos, e introduza o seu primeiro servicePrinci-
palName do passo 4:
az keyvault set-policy \
--name azuremol \
--secret-permissions get \
--spn 887e9665-3c7d-4142-b9a3-c3b3346cd2e2
Um ponto aqui é que quando a identidade gerida foi criada e limitada ao grupo de
recursos, isto não significou que a VM podia realizar todas as tarefas que quisesse. Pri-
meiro, a única função criada para a identidade foi conceder-lhe permissões para ler os
recursos. Mas, ainda tinha de atribuir permissões ao cofre de chaves em si. Estas cama-
das de segurança e permissões permitem-lhe controlar de forma granular os recursos
exatos aos quais cada identidade pode aceder.
Agora que tem acesso a um cofre de chaves, provavelmente quer saber como obter o
segredo, certo?
A maioria dos casos de utilização do Azure Key Vault não teria uma VM a ligar e a
obter os segredos desta forma. O Key Vault é realmente útil quando as próprias aplica-
ções, dentro do código, ligam-se para obter segredos. O código de aplicação utilizaria o
Azure SDK apropriado, como Python, .Net ou Java. Para evitar complexidades de resu-
mir o que está a acontecer através da codificação, o seguinte exercício utiliza uma VM e
algum trabalho com a linha de comandos. À medida que trabalha neste exercício, lem-
bre-se que esta magia normalmente aconteceria no código da aplicação.
Instance
Azure Metadata
VM 3. Token de acesso devolvido do Service
5. Segredo do cofre Azure Active Directory
2. O IMDS transmite o
de chaves para pedido de VM do token de
databasepassword 4. Token de acesso acesso para o Azure Active
devolvido à VM utilizado pela VM para Directory para o recurso
pedir acesso ao recurso, de destino
como o cofre de chaves
Azure Active
Azure Key Vault
Directory
databasepassword Principal de serviço
secret
Figura 15.5 A VM utiliza o IMDS para pedir o acesso a um cofre de chaves. O endpoint comunica com
o Azure AD para pedir um token de acesso. O token de acesso é devolvido à VM, que é utilizado para pedir
o acesso a partir do cofre de chaves. Se o acesso for concedido pelo cofre de chaves, o segredo para
databasepassword é devolvido à VM.
Experimente agora
Para obter e utilizar um segredo numa VM com uma identidade gerida conclua os
passos a seguir:
3 Para aceder a um cofre de chaves, precisa de um token de acesso. Este token de acesso
é pedido a partir do IMDS. É um pedido HTTP, e numa VM Linux pode utilizar o pro-
grama curl para efetuar o pedido. O IMDS transmite o seu pedido ao AAD:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?
➥api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
➥-H Metadata:true
4 A saída é um pouco difícil de ler, porque o texto não parece ter pés nem cabeça.
Está no formato JSON Web Token (JWT). Para processar a saída JSON e tornar
as coisas mais legíveis, instale um analisador JSON denominado jq:
sudo apt-get update && sudo apt-get -y install jq
5 Efetue o seu pedido curl novamente, mas desta vez veja a saída com jq:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?
➥api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
➥-H Metadata:true --silent | jq
Estes primeiros passos mostram como os pedidos são efetuados e como é a saída, como
mostrado na figura 15.6. Se ainda iniciar sessão na VM e pedir manualmente um token
de acesso, qual é o sentido de utilizar uma identidade gerida? Poderia apenas fornecer
as suas próprias credenciais. Em ambientes de produção, provavelmente iria utilizar
um script executado na VM para efetuar automaticamente o pedido de um token de
acesso e, em seguida, obter o segredo a partir do cofre da chave. Vamos avançar para
ver como automatiza este processo e obtém o segredo.
VM do Instance
Azure Metadata
3. Token de acesso devolvido Service
5. Segredo do cofre do Azure Active Directory
2. O IMDS transmite o
de chaves para pedido de VM do token de
databasepassword 4. Token de acesso
acesso para o Azure Active
devolvido à VM utilizado pela VM para
Directory para o recurso
pedir acesso ao recurso,
de destino
como o cofre de chaves
Azure Active
Azure Key Vault
Directory
databasepassword Principal de serviço
secret
Figura 15.6 O pedido curl cobre os três primeiros passos deste diagrama. O pedido curl é efetuado,
o endpoint comunica com o Azure AD e um token de acesso é emitido.
Obter um segredo de uma VM com identidade gerida 227
6 Para facilitar o processo (e se vai realizá-lo num script) pode utilizar jq para
processar a resposta de curl, extrair apenas o token de acesso e defini-lo como
uma variável denominada access_token:
access_token=$(curl
➥'http://169.254.169.254/metadata/identity/oauth2/token?
➥api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
➥-H Metadata:true --silent | jq -r '.access_token')
7 Como um passo manual para ajudá-lo a entender como isto se parece, veja
a variável access_token:
echo $access_token
8 Agora, a parte divertida! Utilize o token de acesso para pedir o seu segredo a par-
tir do cofre de chaves. Vamos primeiro fazer isso manualmente para que entenda
o que acontece.
9 Obtenha o segredo com outro pedido curl e formate a saída com jq. Introduza
o seu próprio nome de cofre de chaves no início do https:// address:
curl https://azuremol.vault.azure.net/secrets/databasepassword?
➥api-version=2016-10-01 -H "Authorization: Bearer $access_token"
➥--silent | jq
A saída é semelhante à seguinte, que mostra o valor da palavra-passe armazenada
no segredo, juntamente com alguns metadados adicionais sobre o segredo, com
os quais não precisa de se preocupar agora:
{
"value": "SecureP@ssw0rd!",
"contentType": "Database password",
"id":
➥"https://azuremol.vault.azure.net/secrets/databasepassword/
➥87e79e35f57b41fdb882c367b5c1ffb3",
}
Este pedido curl é a segunda parte do workflow, como mostrado na figura 15.7.
228 Capítulo 15 Proteger informações com o Azure Key Vault
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api
version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
Instance
VM do
Metadata
Azure
3. Token de acesso devolvido Service
do Azure Active Directory
5. Segredo do cofre
de chaves para 2. O IMDS transmite o
databasepassword 4. Token de acesso pedido de VM do token de
devolvido à VM utilizado pela VM para acesso para o Azure Active
pedir acesso ao recurso, Directory para o recurso
como o cofre de chaves de destino
Azure Active
Azure Key Vault
Directory
databasepassword Principal de serviço
secret
Figura 15.7 Este segundo pedido curl cobre os dois últimos passos no diagrama. O token de acesso é utilizado
para pedir o segredo a partir do cofre de chaves. A resposta JSON é devolvida, incluindo o valor do segredo.
10 Da mesma forma que utilizou uma variável para armazenar o token de acesso,
pode, num script, atribuir também o valor do segredo a uma variável. Desta vez,
utilize jq para processar a resposta, extraia apenas o valor secreto e defina-o
como uma variável denominada database_password:
database_password=$(curl
➥https://azuremol.vault.azure.net/secrets/databasepassword?
➥api-version=2016-10-01 -H "Authorization: Bearer $access_token"
➥--silent | jq -r '.value')
11 Mais uma vez, como um passo manual para ajudá-lo a entender o processo, veja o
conteúdo da variável database_password:
echo $database_password
access_token=$(curl
➥'http://169.254.169.254/metadata/identity/oauth2/token?
Obter um segredo de uma VM com identidade gerida 229
➥api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
➥-H Metadata:true --silent | jq -r '.access_token')
database_password=$(curl
➥https://azuremol.vault.azure.net/secrets/databasepassword?
➥api-version=2016-10-01 -H "Authorization: Bearer $access_token"
➥-silent | jq -r '.value')
15 Inicie sessão no MySQL Server. Quando for pedida uma palavra-passe, introduza o
valor de database_password, que é o valor do segredo a partir do cofre de chaves:
mysql -u root -p
Tem sessão iniciada no MySQL Server, que confirma que o segredo do cofre
de chaves foi utilizado para criar as credenciais do SQL Server com sucesso!
16 Introduza exit duas vezes para fechar a linha de comandos do MySQL Server e,
em seguida, feche a sessão SSH para a VM.
Este é um exemplo básico; ainda precisa de proteger o MySQL Server, bem como for-
necer credenciais adicionais para que as aplicações possam aceder às bases de dados
ou tabelas, por exemplo. A vantagem de utilizar um segredo a partir de um cofre de
chaves é que garante que todas as palavras-passe são as mesmas. Se utilizar conjuntos
de dimensionamento de virtual machines, por exemplo, cada instância de VM poderá
pedir automaticamente o segredo e instalar o MySQL Server para que esteja pronto
para providenciar os dados da sua aplicação. Essas palavras-passe nunca são definidas
em scripts, e ninguém precisa de ver quais são as palavras-passe. Pode até mesmo gerar
palavras-passe aleatoriamente e alterná-las como segredos num cofre de chaves.
230 Capítulo 15 Proteger informações com o Azure Key Vault
Armazenar palavras-passe num cofre de chaves é ótimo, mas pode utilizar um cofre
de chaves para armazenar certificados e obtê-los automaticamente a partir das suas apli-
cações ou VMs? É claro que pode!
2. Pedido de assinatura de
1. Pedido para criar um certificado (CSR) enviado
certificado enviado para para a autoridade de
o cofre de chaves certificação (CA)
Utilizador,
aplicação ou Key Vault Autoridade de
serviço certificação
4. Certificado emitido 3. Certificado X.509
a partir do cofre de chaves assinado devolvido
e armazenado no
cofre de chaves
Figura 15.8 Um utilizador, uma aplicação ou um serviço pode pedir um novo certificado a partir de um
cofre de chaves. Um pedido de assinatura de certificado (CSR) é enviado pelo cofre de chaves para uma AC
externa de terceiros ou uma AC interna fidedigna. O Azure Key Vault também pode atuar como a sua própria
AC para gerar certificados autoassinados. Em seguida, a AC emite um certificado X.509 assinado, que é
armazenado no cofre de chaves. Finalmente, o cofre de chaves devolve o certificado ao requerente original.
certificados autoassinados não são de confiança para outros serviços e aplicações, por
isso, normalmente geram um aviso, mas os certificados autoassinados permitem-lhe
ficar operacional rapidamente e certificar-se de que o seu código funciona conforme o
esperado com o tráfego encriptado.
O Azure Key Vault pode gerar certificados autoassinados por si. De facto, o Key Vault
atua como a sua própria AC para pedir, emitir e, em seguida, armazenar certificados.
Vamos utilizar esta capacidade para gerar um certificado autoassinado e ver como inje-
tá-lo facilmente numa VM. Em seguida, o certificado é utilizado para um servidor Web
básico para mostrar como ativar rapidamente o SSL para proteger o tráfego Web.
Criar e injetar certificados 231
Experimente agora
Para criar e injetar um certificado numa VM, conclua os passos a seguir:
2 Para ver o certificado em ação, crie outra VM, tal como molwinvm. Desta vez, criee
uma VM do Windows que utilize o Windows Server 2019, para que espa-
lhe o amor do SO e veja que estas funcionalidades do Key Vault não dependem
de um sistema operativo específico! Forneça o seu próprio nome de utilizador e
palavra-passe de administrador:
az vm create \
--resource-group azuremolchapter15 \
--name molwinvm \
--image win2019datacenter \
--admin-username azuremol \
--admin-password P@ssw0rd1234
É tão simples quanto isto! Crie o certificado no Key Vault e, em seguida, adicione o
certificado à VM. O certificado é colocado no arquivo de certificados local do compu-
tador, ao qual qualquer serviço ou aplicação pode aceder. Numa VM Windows, os certi-
ficados são armazenados na cache do certificado local, como mostrado neste exercício.
Em VMs Linux, os ficheiros .prv e .crt para as partes pública e privada do certificado
são armazenados em /var/lib/waagent/. Em seguida, pode mover os certificados para
a localização de que precisa para a sua aplicação ou serviço.
Os certificados podem ser utilizados para autenticação entre clientes e servidores ou
entre componentes e serviços de aplicações. Um exemplo comum é que um servidor
Web utilize um certificado SSL, que é o que irá fazer no laboratório de fim de capítulo.
2 Abra o Gestor de Servidor dos Serviços de Informação Internet (IIS). Pode fazer
isso no menu Ferramentas no Gestor de Servidor.
3 No Site Predefinido, escolha Editar Enlaces.
4 Adicione um enlace HTTPS em todos os endereços IP não atribuídos na porta 443.
5 Selecione o certificado auto-assinado que criou e injetou a partir do Key Vault,
normalmente nomeado como CLIGetDefaultPolicy.
6 Abra um browser na VM e introduza https://localhost. Gerou
um certificado autoassinado no Key Vault, para que o browser não confie no
mesmo.
7 Aceite o aviso para continuar e verifique se o enlace HTTPS funciona.
8 Novamente no Azure Cloud Shell ou no portal, crie uma regra do NSG para a
VM na porta TCP 443. Introduza https://yourpublicipaddress num browser
no seu computador local. Esta é a experiência que os utilizadores teriam, com
um aviso sobre um certificado autoassinado que não é de confiança. Na maioria
dos casos práticos, lembre-se de utilizar um AC interno ou terceiro para gerar
certificados fidedignos e armazená-los num cofre de chaves.
Centro de Segurança do Azure e
atualizações
16
Não seria ótimo se o Azure fosse inteligente o suficiente para monitorizar todos os
recursos core da sua aplicação e alertá-lo sobre quaisquer preocupações de segu-
rança? Ou se a sua empresa tivesse políticas de segurança já definidas? (Se não tiver
quaisquer políticas de segurança, pare agora e tome nota para criar algumas!) Neste
último caso, como garantir que as suas implementações do Azure se mantêm confor-
mes? Se já passou por uma auditoria de segurança de TI, sabe como pode ser diver-
tido olhar para uma lista de configurações erradas aplicadas ao seu ambiente,
especialmente os lapsos de segurança básica que conhece!
O Centro de Segurança do Azure fornece uma localização central para que os aler-
tas e as recomendações de segurança sejam agrupados para sua análise. Pode definir as
suas próprias políticas de segurança e, em seguida, permitir que o Azure monitorize o
estado dos seus recursos para conformidade.
Neste capítulo, iremos discutir como o Centro de Segurança pode alertá-lo de pro-
blemas e fornecer passos para corrigi-los, como pode utilizar o acesso just-in-time à VM
para controlar e auditar ligações remotas, e como a Gestão de Atualizações mantém as
suas VMs atualizadas automaticamente com os patches de segurança mais recentes.
234
Centro de Segurança do Azure 235
Redes
VMs Storage Aplicações
virtuais
O Centro de Segurança também pode alertá-lo sobre as melhores práticas gerais, tais
como se uma VM não tiver o diagnóstico ativado. Lembra-se de quando vimos no capí-
tulo 12 sobre como monitorizar e resolver problemas de VMs? Precisa de instalar e
configurar o agente de diagnóstico antes de ter um problema. Se suspeitar de uma vio-
lação de segurança, talvez não consiga aceder à VM e analisar os registos. Mas, se tiver
configurado a extensão de diagnóstico para efetuar o streaming de registos para o
Azure Storage, poderá analisar o que ocorreu e (com sorte) controlar a origem e a
extensão do problema.
Experimente agora
Para começar com o Centro de Segurança do Azure, conclua os passos a seguir:
1 Abra o portal Azure e escolha o ícone do Cloud Shell na parte superior do menu.
2 Crie um grupo de recursos, especificando um nome do grupo de recursos, como
azuremolchapter16, e uma localização, como eastus:
az group create --name azuremolchapter16 --location eastus
236 Capítulo 16 Centro de Segurança do Azure e atualizações
3 Crie uma VM Linux básica para que o Centro de Segurança tenha algo para
monitorizar e fornecer recomendações:
az vm create \
--resource-group azuremolchapter16 \
--name azuremol \
--image ubuntults \
--admin-username azuremol \
--generate-ssh-keys
Figura 16.2 A janela Descrição Geral do Centro de Segurança do Azure fornece uma lista de recomendações,
alertas e eventos. Pode selecionar um tipo de recurso core, como Computação ou Funcionamento em Rede,
para ver uma lista de itens de segurança específicos para esses recursos.
monitoriza continuamente os desvios destas políticas e alerta-o sobre quais passos pre-
cisam de ser realizados para corrigir os problemas de segurança. Irá utilizar as políticas
de segurança predefinidas do Azure neste capítulo, mas pense em qualquer configura-
ção de segurança específica que pretenda aplicar às suas VMs e como elas podem ser
definidas nas suas próprias políticas personalizadas.
6 Escolha Computador e Aplicações no menu esquerdo na janela do Centro de
Segurança; em seguida, escolha VMs e Computadores.
7 Selecione a VM criada no passo 3. Mesmo que tenha criado esta VM e utilizado
os valores predefinidos da CLI do Azure, são mostrados alguns avisos de segu-
rança neste exemplo.
Explore algumas destas recomendações. Ao selecionar cada recomendação, algumas
apenas lhe dão mais informações; outras guiam-no através da reparação. Estas regras
não são difíceis e rápidas; são recomendações e boas práticas. No seu próprio ambiente,
alguns destes podem não fazer sentido. Mas são um bom ponto de partida para saber o
que deve fazer para garantir recursos à medida que os cria no Azure.
Permissões do
controlo de acesso
baseado em
funções (RBAC)
Figura 6.4 Com o acesso JIT à VM, as regras do NSG são configuradas para negar ligações remotas a uma VM. As
permissões RBAC são utilizadas para verificar permissões quando um utilizador pede acesso a uma VM. Estes pedidos
são auditados e, se o pedido for concedido, as regras do NSG serão atualizadas para permitir o tráfego a partir de um
determinado intervalo IP durante um período de tempo definido. O utilizador pode aceder à VM apenas durante este
tempo. Quando expirar o tempo, as regras do NSG revertem automaticamente para um estado de negação.
necessário. E, sim, ainda deve limitar essa breve janela de conectividade a um intervalo IP
específico! É aí que o acesso just-in-time (JIT) à VM é útil, como mostrado na figura 16.4.
Com o acesso JIT, o Centro de Segurança ajusta dinamicamente as restrições de
acesso numa VM. Quando ativado, são criadas regras do NSG que negam todo o tráfego
de ligação remota. Em seguida, um utilizador pode então pedir acesso a uma VM ape-
nas quando necessário. Em combinação com o controlo de acesso baseado em funções
(discutido no capítulo 6), o Centro de Segurança determina se um utilizador tem direi-
tos para aceder a uma VM quando pede uma ligação. Se o utilizador tiver permissões, o
Centro de Segurança irá atualizar as regras do NSG relevantes para permitir o tráfego
de entrada. Estas regras são aplicadas apenas numa janela de tempo específico. Quando
o tempo se esgotar, as regras são revertidas e a VM fica novamente fechada às ligações
remotas. Se tiver uma ligação ativa a um VM, não é desligado automaticamente quando
o tempo expira. Pode terminar o seu trabalho de manutenção ou resolução de proble-
mas e desligar quando estiver pronto, mas não será capaz de iniciar uma nova ligação a
menos que solicite acesso ao JIT novamente.
utilizar o Azure Firewall para proteger o tráfego da VM em redes virtuais, e não apenas
NSGs, pode continuar a utilizar as regras de gestão automática de acesso à VM do JIT.
Para saber mais sobre a Azure Firewall, consulte os docs em https://docs.microsoft.
com/azure/firewall/overview.
Quando iria utilizar o JIT na sua pizzaria fictícia? Pense em qualquer VM que executa-
ria a aplicação web, sistema de pedidos, ou aplicações de lógica de negócio.
Quer que estes estejam ligados à Internet e disponíveis para que as pessoas acedam a
qualquer momento? Espero que não! Há razões válidas para o acesso remoto com SSH
ou RDP, mas tente sempre minimizar o tempo que o acesso está disponível. Mesmo
que tenha regras do NSG que restrinjam o acesso a determinados intervalos IP, o JIT
adiciona outra camada de proteção em termos de que a que localizações os utiliza-
dores do Azure podem aceder e, em seguida, cria um registo de auditoria mais fácil
sobre o qual o Centro de Segurança pode fornecer relatórios.
Experimente agora
Para ativar o acesso just-in-time à VM, conclua os passos a seguir:
Figura 16.5 Selecione VM a partir das opções Recomendadas e, em seguida, escolha Ativar JIT na VM 1. O estado
mostra agora que esta VM está Aberta a todo o acesso remoto, o que sinaliza a severidade da preocupação de
segurança como Alta.
240 Capítulo 16 Centro de Segurança do Azure e atualizações
Por predefinição, o JIT define regras que podem abrir portas para SSH (porta 22),
RDP (porta 3389) e comunicação remota do PowerShell (portas 5985 e 5986)
durante um período de três horas.
6 Para este exercício, escolha ativar o SSH a partir do seu próprio IP. Como boa
práticas para utilizar a produção, insira uma justificação para acompanhar o por-
quê do acesso ser solicitado. Deixe as predefinições e escolha Abrir Portas, como
mostrado na figura 16.6.
Figura 16.6 Ao ativar o JIT, pode alterar para que as regras predefinidas sejam permitidas, os IPs
de origem permitidos e um tempo máximo, em horas, de pedido. Estas regras JIT permitem o
controlo granular sobre o que é permitido, para permitir apenas o mínimo de conectividade.
7 Com o JIT ativado, navegue para o grupo de recursos e selecione a sua VM.
8 Escolha Funcionamento em Rede para ver a configuração de rede virtual atri-
buída para a VM. A lista de regras do NSG atribuídas é apresentada, como na
figura 16.7.
Figura 16.7 As regras JIT são criadas com a prioridade mais baixa. Estas prioridades certificam-se de que as
regras JIT tenham precedência sobre quaisquer regras posteriores aplicadas ao nível da sub-rede.
Gestão de Atualizações do Azure 241
As regras JIT são mostradas na parte superior da lista, porque têm a prioridade mais
baixa. O tráfego é permitido para o endereço IP da VM, mas apenas a partir do seu
próprio endereço IP. Isto foi o que o JIT configurou. O que pode parecer estranho
aqui é que ainda existe uma regra default-allow-ssh, permite todo o tráfego. Lembre-se
do capítulo 5, quando abordámos os NSGs. Pode dizer o que está a acontecer aqui?
O JIT aplica-se apenas à VM. Na regra JIT, a opção Destino mostra o endereço IP da
VM. No exemplo mostrado na figura 16.7, isso é 10.0.0.4. O tráfego é permitido. Mas, a
regra do NSG real é aplicada à sub-rede inteira. A regra default-allow-ssh aplica-se
ao nível da sub-rede e permite o tráfego de qualquer fonte e para qualquer destino.
As regras do NSG são processadas em ordem de prioridade, de baixa para alta. Como
abordado no capítulo 5, é sempre aplicada uma ação de negação, independentemente
de quaisquer regras adicionais. Mesmo que tenha alterado a default-allow-ssh para
recusar o tráfego, a regra JIT continuaria a permitir o acesso à VM específica e ao ende-
reço IP de origem definida.
Tenha cuidado com esta camada das regras da NSG. Idealmente, removeria a regra
default-allow-ssh rule, em seguida, permitiria o acesso apenas conforme necessário com o
JIT. Nesta abordagem, o SSH é negado pela regra final DenyAllInbound. Quando precisar
de se ligar a um VM, utilize o JIT para pedir o acesso, o que cria automaticamente uma regra
para permitir que o SSH seja confinado ao seu endereço IP durante um período definido.
A regra do NSG é eliminada automaticamente após o período de tempo especificado
decorrer. Por predefinição, as regras JIT são aplicadas durante três horas. Após esse tempo,
a VM voltará a um estado mais seguro e irá precisar de pedir acesso à VM novamente.
Este processo JIT controla quem pode pedir e receber o acesso à VM. Mas, só porque
uma pessoa pode ser bem-sucedida no pedido de acesso a uma VM não significa que ela
tenha permissões para iniciar sessão nessa VM. Tudo o que acontece no Azure é que as
regras do NSG definidas são atualizadas. O Centro de Segurança e o JIT não podem
adicionar, remover nem atualizar credenciais de acesso na VM.
Todos os pedidos de JIT também são registados. No Centro de Segurança, selecione
a opção Acesso Just in Time à VM e escolha a sua regra. À direita, selecione a opção de
menu ... e escolha Registo de Atividade. Este registo de atividade ajuda a auditar quem
pediu acesso a uma VM no caso de um problema.
O acesso ao JIT VM é uma forma de o Centro de Segurança e o Azure ajudarem a
manter as suas VMs em seguranaça. Controlar o acesso às VMs é uma grande parte da
segurança. Mas e as aplicações, bibliotecas e serviços em execução nas VMs? É aí que
precisa de garantir que todas as atualizações de segurança mais recentes sejam aplica-
das atempadamente às suas VMs.
Azure
Monitor
Figura 16.8 A Gestão de Atualizações instala um agente de VM que recolhe informações sobre as
atualizações instaladas em cada VM. Estes dados são analisados pelo Azure Monitor e reportados à
plataforma do Azure. A lista de atualizações necessárias pode ser agendada para instalação automática
por meio de runbooks da Automation do Azure.
Leva alguns minutos até a VM ser preparada e reportar novamente o seu estado de
atualização; por isso, vamos configurar a sua VM e, em seguida, ver o que acontece em
segundo plano.
Experimente agora
Para configurar a sua VM para a Gestão de Atualizações, conclua os passos a seguir:
Vamos ver melhor o que acontece para que a solução de Gestão de Atualizações
funcione.
À medida que as empresas migraram para fornecedores de cloud computing nos últi-
mos anos, esses componentes on-premises mais tradicionais do System Center são
substituídos pelos serviços do Azure que podem funcionar num ambiente híbrido.
Analisámos dois componentes do OMS em capítulos anteriores, mesmo que não se
tenha apercebido disso:
¡ Azure Backup fornece uma maneira de fazer cópias de segurança de VMs ou fichei-
ros individuais, definir políticas de retenção e restaurar dados.
¡ Azure Site Recovery permite replicar VMs para diferentes regiões geográficas em
caso de desastre natural ou interrupção prolongada.
O Azure Backup e o Site Recovery ajudaram-no a proteger os seus dados no
capítulo 13. Agora, irá utilizar dois componentes adicionais do OMS com a Gestão de
Atualizações:
¡ Áreas de trabalho do Log Analytics recolhem informações de várias fontes ou agentes, e
permitem definir políticas e consultas para alertá-lo para condições que podem
ocorer. Estas consultas e alertas podem ajudá-lo a rastrear o estado de atualização
de uma VM ou notificá-lo de problemas de configuração ou segurança.
¡ Azure Monitor detalha e informa informações baseadas no processamento reali-
zado em áreas de trabalho Log Analytics. O Azure Monitor fornece uma forma
centralizada de visualizar alertas, consultar dados de registo e gerar notificações
em todos os seus recursos Azure.
¡ Automation do Azure permite-lhe criar runbooks que executam comandos ou
scripts inteiros. Os runbooks podem ser implementações grandes e complexas e
podem chamar vários outros runbooks. Iremos ver a Automation do Azure em
detalhe no capítulo 18.
A integração destes componentes é mostrada na figura 16.9.
244 Capítulo 16 Centro de Segurança do Azure e atualizações
Área de
Azure
trabalho do
Automation
Log Analytics
Azure
Figura 16.10 Assim que o agente de VM tenha analisado a conformidade, é fornecida uma lista
de atualizações disponíveis. Dependendo do SO e da versão, a Gestão de Atualizações pode ser capaz
de funcionar com as áreas de trabalho do Log Analytics para classificar as atualizações com base
na severidade ou fornecer ligações para as páginas de correções de atualizações relevantes.
Experimente agora
Se tiver sorte (ou azar), a sua VM pode reportar que não é necessária nenhuma atualiza-
ção. As imagens de VM são atualizadas com frequência no Azure, e se implementar uma
VM imediatamente depois de a última imagem ter sido criada, todas as atualizações
necessárias já estão instaladas. Em caso afirmativo, leia estes passos para que entenda
o que é necessário quando as suas VMs precisam de ser atualizadas!
Para aplicar as atualizações necessárias para a sua VM, conclua os passos a seguir:
Figura 16.11 A lista de tarefas de implementação agendada é mostrada. Se pretender, pode eliminar uma
determinada tarefa; caso contrário, as atualizações são aplicadas automaticamente na hora definida.
Figura 16.12 Na conta da Automation do Azure, pode gerir vários computadores e ver o estado ou aplicar
atualizações. As VMs do Azure e os computadores que não são do Azure podem ser monitorizados e
controlados pela mesma conta da Automation do Azure. Em segundo plano, o Azure pode integrar-se em
outros fornecedores para instalar agentes nos computadores num ambiente híbrido. Esta integração
permite gerir todas as suas necessidades de atualização num único dashboard e na plataforma de
administração.
Figura 16.13 Pode monitorizar o estado da execução de tarefas da Automation do Azure no portal.
Para rever ou resolver problemas de tarefas, pode clicar numa tarefa para ver qualquer saída e
os registos gerados.
Laboratório: ativar o JIT e atualizações para uma VM Windows 249
1 Crie uma VM Windows Server da sua escolha no mesmo grupo de recursos utili-
zado nos exercícios anteriores, como azuremolchapter16.
2 Consulte as regras do NSG para a VM/sub-rede e elimine quaisquer regras pre-
definidas que permitam RDP na porta TCP 3389.
3 Utilize o seu cliente de Ligação ao Ambiente de Trabalho Remoto local para
verificar se as liga-ções RDP estão bloqueadas.
4 Peça acesso JIT, analise as regras do NSG novamente e confirme que agora pode
fazer RDP para a sua VM.
5 Ative Gestão de Atualizações na sua VM Windows. Desta vez, deve poder utilizar a
área de trabalho do Log Analytics existente e as contas da Automation do Azure.
6 Deixe que o agente de monitorização reporte as atualizações necessárias e, em
seguida, agende as atualizações a serem aplicadas pela Automation do Azure.
Parte 4
O fantástico
Esperamos que não acabemos num mundo em que filmes como O Exterminador
Implacável e Matrix se tornem realidade. Nesses filmes, a ascensão da inteligência
artificial (AI) quase provoca o extermínio da humanidade na medida em que as
máquinas lutam para assumir o controlo. Uma causa de preocupação na computa-
ção agora é como o desenvolvimento da AI é feito na maior parte por grandes
empresas privadas, com pouco ou nenhum regulamento e supervisão central. Não
pretendo afirmar que a IA é uma coisa má! Assistentes digitais em smartphones
podem ajudar com muitas tarefas do dia a dia. O machine learning (ML) em aplica-
ções de navegação pode monitorizar a unidade diária do utilizador para sugerir
rotas alternativas baseadas em condições de estrada ou clima. Os controlos de aque-
cimento doméstico podem ajustar-se automaticamente com base na temperatura
exterior, na hora do dia e na hora do ano (como o verão ou o inverno).
Ao iniciar esta parte final do livro, irá aprender sobre os serviços do Azure para
machine learning e inteligência artificial. Num capítulo. No seu intervalo para o
almoço. Vamos definir algumas expectativas realistas: não vai ficar um especialista
em ML ou IA nos próximos 45 minutos! Pode, se comer a sua sanduíche rapida-
mente, aprender o suficiente sobre os muitos serviços que o Azure oferece para
entender como integrar alguns destes serviços de ML e IA nas suas aplicações. Mui-
tos dos serviços de ML e IA do Azure esperam, pelo menos, alguma experiência pré-
via em algoritmos de dados, linguagens de programação, processamento em lotes ou
compreensão de linguagem; portanto, não espere tornar-se num especialista na pró-
xima hora!
Neste capítulo, vamos mergulhar em alguns dos serviços cognitivos do Azure que for-
necem funcionalidades de ML e IA. Irá aprender como utilizar estes serviços para
executar o machine learning básico em modelos de dados e, em seguida, utilizar um
pouco do serviço Azure Web Apps e o Microsoft Bot Framework para aplicar alguns
dos serviços de IA que podem executar um bot de pizzaria para que os clientes façam
pedidos de pizza.
253
254 Capítulo 17 Machine learning e inteligência artificial
Comandos de voz
Definir
Verificar a
Comandos de texto
lembrete
meteorologia
Criar Enviar
memorando e-mail
Ligar ao Bob
Assistentes digitais
Iniciar
de IA comuns temporizador
Assistente do
Google
Cortana
Siri
Aplicações integradas
Aplicações
Notificações por
de calendário
e-mail
Tráfego +
deslocação
Figura 17.1 Uma utilização comum de IA na vida quotidiana são os assistentes digitais, como Cortana,
Siri e o Assistente do Google. Pode utilizar comandos de voz ou texto para interagir com eles, e eles podem
monitorizar o seu calendário diário e as condições da deslocação para avisá-lo sobre problemas de tráfego.
Assistentes digitais como estes normalmente não envolvem uma grande quantidade do
que pode considerar inteligência. Escutam e respondem às entradas que fornece. Mas,
essas entradas podem variar e nem sempre podem ser comandos específicos. Pense em
como um assistente digital lhe permite definir um lembrete. Pode utilizar uma das
seguintes frases:
Descrição geral e relação entre IA e ML 255
Figura 17.2 A IA pode considerar a entrada do utilizador e tomar as decisões que melhor se adequam à ação
antecipada. A IA não é pré-programada com todas estas possíveis respostas e árvores de decisão. Em vez disso,
utiliza modelos de dados e algoritmos para aplicar o contexto à entrada do utilizador e interpretar o significado e o
resultado apropriado.
Dados
Algoritmos de As aplicações
pré-processados Modelo de
Big Data ML aplicados utilizam o modelo
e prepara- dados
aos dados de dados
dos/limpos
Figura 17.3 São processadas grandes quantidades de dados não processados, que são deixadas prontas para
utilização. Podem ser aplicadas diferentes técnicas de preparação e limpeza de dados, dependendo das entradas
não processadas. Em seguida, os algoritmos de ML são aplicados aos dados preparados para criar um modelo de
dados apropriado que reflita a melhor correlação entre todos os pontos de dados. Diferentes modelos de dados
podem ser produzidos e refinados ao longo do tempo. As aplicações podem, então, utilizar os modelos de dados nas
suas próprias entradas de dados para ajudar a orientar a sua tomada de decisões e compreender os padrões.
A IA pode ser utilizada para tomar decisões. Como mostrado na figura 17.3, o ML
envolve alguns passos e inclui entradas e saídas.
Veja como a forma mais básica de ML funciona:
1 Para iniciar o processo, são fornecidas grandes quantidades de dados não proces-
sados como entrada.
2 Estes dados são processados e preparados num formato utilizável para focar
os pontos de dados específicos necessários para análise.
3 Os algoritmos de ML são aplicados aos dados. Este é o lugar onde o verdadeiro
cálculo numérico acontece. Os algoritmos foram concebidos para detetar e compu-
tar semelhanças ou diferenças em toda a grande quantidade de pontos de dados.
4 Com base na análise dos algoritmos, é produzido um modelo de dados que
define padrões nos dados. Estes modelos de dados podem ser refinados ao longo
do tempo se partes do modelo provarem estar incorretas ou incompletas quando
forem aplicados dados adicionais do mundo real.
5 As aplicações utilizam os modelos de dados para processar os seus próprios con-
juntos de dados. Estes conjuntos de dados são normalmente muito menores do
que os dados não processados fornecidos para os algoritmos de ML. Em seguida,
se o modelo de dados é válido, mesmo com uma pequena entrada de dados da
aplicação, é possível determinar o resultado ou a correlação correto.
Muitas vezes, o ML envolve algoritmos complexos que foram concebidos para proces-
sar todos os pontos de dados fornecidos. O Hadoop e o Apache Spark são duas pilhas
de aplicações comumente utilizadas para processar big data. O Azure HDInsight é um
serviço gerido que permite analisar os grandes conjuntos de dados processados por
estas pilhas de aplicações. Para aprofundar um pouco mais a análise e os algoritmos, os
cientistas de dados utilizam comumente a linguagem de programação R para desen-
volver os modelos necessários. Não se preocupe muito com o que é Hadoop ou R. O
ponto chave é que o Azure pode executar as ferramentas de ML comuns que são
amplamente aceites no setor.
17.1.3 União da IA e do ML
Uma aplicação comum num smartphone é a aplicação de navegação, como mostrado
na figura 17.4. O seu fornecedor, como o Google, pode controlar a rota que utiliza
para ir trabalhar todos os dias, a que horas costuma sair de casa e quanto tempo leva a
chegar ao seu local de trabalho.
Este exemplo do Google Maps mostra a IA e o ML a trabalharem em conjunto. A IA
é aplicada para saber quando gerar uma notificação com base nos dados recebidos após
o processamento de
Descrição geral e relação entre IA e ML 257
Previsão do
Utilizador 1 tempo
Deslocação diária Meteorologia Controla-
Deslocação diária em tempo real dor ativo 1
Deslocação diária
Controla-
dor ativo 2
Utilizador 2 Controla-
Deslocação diária dor ativo 3
Serviço do
Deslocação diária Google Maps
Deslocação diária
Utilizador 3 Alertas e
sugestões de
Deslocação diária
tráfego
Deslocação diária O seu
smartphone
Deslocação diária
Figura 17.4 Todos os dias, o serviço do Google Maps recebe vários pontos de dados de utilizadores, que
registam os detalhes do seu trajeto. Estes dados podem ser preparados e processados, juntamente com
a previsão do tempo e a meteorologia em tempo real durante esses percursos. Os algoritmos de ML podem
ser aplicados a estes grandes conjuntos de dados e é criado um modelo de dados. Na medida em que uma
amostra menor de condutores ativos alimentam as condições dos seus percursos ou na medida em que dados
meteorológicos no serviço do Google Maps são capturados, o modelo de dados pode ser aplicado para prever
o trajeto e gerar um alerta de tráfego no seu smartphone, que sugere uma rota alternativa para casa.
Figura 17.5 Estas VMs estão disponíveis para Windows e Linux. Este Window Server 2016 DSVM inclui
várias aplicações de ciência de dados pré-instaladas, como R Server e Jupyter Notebooks. As DSVMs
permitem que esteja rapidamente pronto para o processamento de big data e a criação de algoritmos de ML.
Azure Cognitive Services 259
Subscrição do Azure
Plano do App Service
Experimente agora
Para criar um bot da aplicação Web do Azure, conclua os passos seguintes:
Experimente agora
Para criar uma aplicação LUIS e utilizar o ML para treiná-lo, conclua os passos a seguir
Intenções
saudações
showMenu
orderFood Modelo de
Formar dados da Bot da aplicação
aplicação LUIS Compreensão Web
Entidades
da linguagem
"Uma de pepperoni" e processamento
da intenção
"Uma pizza vegetari-
ana, por favor"
Figura 17.7 Quando treina a aplicação LUIS, as intenções e as entidades são introduzidas e processadas para
criar um modelo de dados. Depois, o seu bot da aplicação web utiliza este modelo de dados para processar a
compreensão e a intenção da linguagem. O número de intenções e entidades introduzidas para processamento é
reduzido e, portanto, o modelo de dados não é perfeito. No mundo real, muitas mais intenções e entidades seriam
fornecidas e iria, repetidamente, treinar, testar e refinar o modelo de dados para criar conjuntos de dados
progressivamente maiores, de forma a criar um modelo preciso para processar a linguagem e a intenção.
Criar um bot inteligente para ajudar com pedidos de pizza 263
Numa aplicação mais complexa e real, pode levar mais tempo a concluir este pro-
cesso de treino, porque todas as suas intenções e entidades são processadas pelos
algoritmos de ML para criar o modelo de dados necessário de forma a que a sua
aplicação responda adequadamente à comunicação do cliente.
8 Com a aplicação LUIS treinada, selecione Teste e insira algumas saudações, tais
como oi e olá. Por baixo de cada uma das suas mensagens está a intenção de pon-
tuação superior, juntamente com a probabilidade de que a mensagem, ou
expressão, que introduziu coincide com a intenção. Estas saudações básicas
devem corresponder à intenção de saudação.
9 Tente introduzir uma saudação diferente, como (boa) tarde ou (boa) noite. A sauda-
ção de uma só palavra com base na hora do dia pode devolver uma intenção
incorreta de pontuação superior, como orderStatus. Experimente algumas
outras frases até que algo não se alinhe com a intenção esperada, o que indica
que a aplicação LUIS não compreende totalmente o que quer dizer. Selecione
uma das suas mensagens incorretas, como manhã, e escolha Inspecionar.
10 No menu Inspecionar, escolha editar a intenção de pontuação superior incor-
reta. No menu pendente, escolha saudações ou a intenção que seja mais apro-
priada para a frase incorreta.
11 Fez uma alteração na sua aplicação, por isso escolha Treinar para treinar a aplica-
ção LUIS novamente. A figura 17.8 mostra como fornecer entradas adicionais
para os algoritmos de ML para processar o modelo de dados e refinar a intenção
e compreensão da linguagem.
12 Na janela de mensagens de teste, volte a introduzir a mensagem incorreta nova-
mente, tal como manhã. Desta vez, a intenção de pontuação superior deve ser
identificada corretamente como saudações.
13 Para que a aplicação LUIS atualizada fique disponível no bot da aplicação Web,
escolha a opção Publicar no menu superior. Aceite todas as predefinições e esco-
lha publicar num bloco de produção. Demora alguns segundos a concluir o pro-
cesso de publicação.
Intenções
saudações
showMenu
orderFood
Modelo de Figura 17.8 À medida que
Formar dados da reclassifica a intenção das
aplicação LUIS mensagens e volta a treinar a
Entidades aplicação LUIS, o modelo de dados é
refinado à medida que as entradas de
"Uma de pepperoni"
dados adicionais são fornecidas aos
"Uma pizza vegetari- algoritmos de ML. Quando introduzir
ana, por favor" Reclassificar a saudações semelhantes no futuro,
intenção da o modelo de dados será (idealmente)
mensagem melhorado e responderá mais
apropriadamente.
264 Capítulo 17 Machine learning e inteligência artificial
Lembre-se de que o seu bot é executado numa aplicação Web e, por isso, possui blocos de
teste e produção, tal como aprendeu no capítulo 3. No mundo real, deve publicar num
bloco de teste, verificar se tudo funciona conforme o esperado e, em seguida, voltar a
publicar no bloco de produção. As mesmas funcionalidades PaaS que lhe permitiram tes-
tar e movimentar o código Web entre os ciclos de vida de desenvolvimento e produção
também beneficiam o ciclo de vida do seu bot da aplicação Web processado pelo LUIS.
Neste exemplo básico, o ML foi capaz de gerir a sua entrada de dados (bom) dia como
sendo uma saudação e para entender que saudações similares, tais como (boa) noite,
também são saudações. O ML funciona melhor quando um grande conjunto de dados
pode ser introduzido no modelo de dados; portanto é importante testar e ajudar a for-
mar a sua aplicativa. O desempenho da IA - neste caso a aplicação LUIS - depende dire-
tamente do tamanho e da qualidade dos dados fornecidos nos algoritmos de ML.
Experimente agora
Para atualizar o seu bot da aplicação Web com o seu bot LUIS treinado, conclua os pas-
sos a seguir:
5 Para carregar o bot de exemplo, crie uma ligação à sua aplicação Web. O
comando seguinte obtém o repositório de aplicações Web e configura o seu
repositório Git de exemplos local para se ligar ao mesmo. Nos capítulos anterio-
res, fi-lo procurar este endereço, mas agora espero que tenha começado a explo-
rar aquilo que a CLI do Azure pode fazer mais e que tenha percebido que muitas
destas informações podem ser obtidas rapidamente.
Criar um bot inteligente para ajudar com pedidos de pizza 265
6 Emita o bot Node.js de exemplo para a sua aplicação Web com o seguinte
comando:
git push webappbot master
Para repor a palavra-passe, introduza o nome da sua conta a partir do comando anterior
e, em seguida, responda às instruções para definir uma nova palavra-passe. O exemplo
a seguir repõe a palavra-passe da conta de utilizador denominada azuremol:
az webapp deployment user set --user-name azuremol
Vamos consultar a figura 17.9 para ver o que implementou. Agora, a aplicação LUIS é
treinada com algoritmos de ML e o seu modelo de dados está pronto para a aplicação
Node.js, de forma a permitir que os clientes interajam e façam pedidos de pizza.
Subscrição do Azure
Plano do App Service
Compreensão e Web App
intenção da O cliente
linguagem Microsoft Bot
Aplicação Node.js esfomeado online
Connector
LUIS aplicação Chats do cliente com quer pedir uma
Framework
bot, que é processado pizza
pelo LUIS.
Armazena dados persistentes
do bot e estado de sessão
Conta Storage
Tabela
Figura 17.9 Um cliente pode agora aceder ao seu bot online e pedir para ver o menu ou fazer pedidos de pizza.
O LUIS fornece a compreensão da linguagem, que permite que o bot processe os pedidos e os envie para o Azure
Storage para processamento adicional.
266 Capítulo 17 Machine learning e inteligência artificial
Novamente no portal Azure, para o seu bot da aplicação Web, selecione Teste no Chat
na Web. Leva alguns segundos a ligar-se ao bot da primeira vez, mas, depois, deverá
poder interagir, ver a lista de pizzas no menu e criar um pedido, tal como mostrado na
figura 17.10. Experimente você mesmo!
Figura 17.10 Com o seu bot da aplicação Web em execução, inicie uma conversa e tente fazer um
pedido de pizza. Nesta caixa de diálogo de exemplo, pode visualizar o menu, fazer um pedido de pizza
e verificar o estado do pedido. A aplicação é básica e não está, realmente, a criar pedidos ou a atualizar
o estado além da pizza pedida, mas espero que o exercício mostre como pode implementar rapidamente
um bot no Azure.
Laboratório: adicionar canais para comunicação com o bot 267
Espero que estes exercícios básicos tenham-lhe dado uma ideia do que o Azure pode
oferecer para IA e ML. O bot da aplicação Web com o LUIS pode ser expandido para
incluir Azure Cognitive Services adicionais, como Spellcheck e o Translator. Estes servi-
ços permitem-lhe interpretar palavras e frases caso o utilizador as escreva incorreta-
mente ou fazer com que o seu bot converse em vários idiomas. Por outro lado, pode
utilizar o Face e Personalizador para detetar qual cliente estava a fazer um pedido com
base no reconhecimento facial da sua câmara e sugerir automaticamente pizzas que o
mesmo possa gostar.
O ML fazia parte da aplicação LUIS, mas muitos outros recursos e ferramentas de
ML estão disponíveis no Azure. A capacidade de processar grandes conjuntos de dados
e computar modelos de dados de ML em recursos de computação do Azure de elevado
desempenho reduz a entrada, para que possa criar aplicações suportadas por alguns
conjuntos de dados maiores. As aplicações são mais precisas e eficientes e não há har-
dware para comprar ou ferramentas especiais para instalar, porque as DSVMs incluem
todos os componentes necessários. Nem todas as aplicações são adequadas para AI e
ML, mas como os clientes começam a esperar mais funcionalidades inteligentes da sua
empresa, estes serviços do Azure podem, geralmente, ajudar a fazer a diferença.
Muitas vezes, outros canais exigem que crie uma ligação de programador,
como para Facebook ou Slack. O Skype permite-lhe copiar e colar algum código
HTML para fazê-lo funcionar.
3 Forneça todas as informações necessárias, como o ID de Aplicação do Bot. Pode
encontrar este ID em Definições para Gestão de Bots.
4 Se necessário, utilize o editor de código online para criar uma página HTML
básica, como default.htm, no diretório wwwroot e cole qualquer código incorpo-
rado para o seu canal. Pode abrir a sua aplicação Web a partir do portal Azure e,
em seguida, selecionar o seu URL para abrir a página default.htm que inclui o
seu código de canal, tal como http://azuremol.azurewebsites.net/default.htm.
18 Azure Automation
Sempre que possível, não deve iniciar sessão manualmente num servidor e realizar
alterações. O software não precisa de ser instalado clicando nos botões numa GUI, e
as atualizações não precisam de ser efetuadas em ficheiros de configuração num edi-
tor de texto. Estas ações manuais introduzem uma oportunidade para que ocorram
erros, o que pode resultar em configurações incorretas e falhas na aplicação. Se pre-
tender replicar a configuração de um servidor, conseguirá lembrar-se de todos os pas-
sos que foram necessários para colocar o servidor existente em funcionamento? E se
precisar de fazer isso novamente dentro de seis meses?
No capítulo 16, abordámos uma forma de verificar e aplicar atualiza-
ções aos servidores automaticamente. Esta magia aconteceu com a utilização da Auto-
mation do Azure. Neste capítulo, iremos examinar como pode criar, executar e editar
runbooks e utilizar a Desired State Configuration do PowerShell para instalar aplica-
ções e configurar servidores automa ticamente.
269
270 Capítulo 18 Azure Automation
Azure Automation
Figura 18.1 A Automation do Azure fornece muitas funcionalidades relacionadas. Um conjunto partilhado
de recursos, como credenciais, certificados, agendas e objetos de ligação, pode ser utilizado para executar
scripts do PowerShell ou Python automaticamente em servidores de destino. Pode definir o estado pretendido
de um servidor, e a Automation do Azure instala e configura o servidor apropriadamente. As atualizações
de hosts e os patches de segurança podem ser aplicados automaticamente. Todas estas funcionalidades
funcionam em servidores Windows e Linux, no Azure, em outros fornecedores de cloud e on-premises.
Experimente agora
Para criar uma conta de Automation do Azure e runbooks de exemplo, conclua os pas-
sos a seguir:
Experimente agora
Para ver os ativos configurados e os runbooks de exemplo, conclua os passos a seguir:
Figura 18.2 As informações sobre a conta Execução incluem um ApplicationId e TenantId, propriedades
específicas para Azure AD que ajudam a identificar as credenciais para esta conta. É apresentado um
CertificateThumbprint, que coincide com um certificado digital que iremos visualizar no próximo passo.
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId ` Inicia sessão
-CertificateThumbprint
no Azure
➥$servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
A instrução catch processa quaisquer erros como parte da tentativa de início de ses-
são. Se uma ligação do principal de serviço não puder ser encontrada, é gerado um
erro. Geralmente, este erro significa que o ativo de ligação especificado não pode ser
encontrado. Confirme o nome e a ortografia da sua ligação.
Caso contrário, o objeto de ligação foi encontrado e o principal de serviço foi utilizado
para iniciar sessão, mas esse processo de autenticação não foi bem-sucedido. Esta falha
pode ter origem num certificado que já não é válido ou numa conta de Execução que já
não está ativa. Esta funcionalidade mostra como pode revogar uma conta no Azure AD e
garantir que todos os runbooks que utilizem as credenciais já não podem ser executados.
Agora, o runbook obtém uma lista de todos os recursos do Azure.
276 Capítulo 18 Azure Automation
$ResourceGroups = Get-AzureRmResourceGroup
foreach ($ResourceGroup in $ResourceGroups)
{
Write-Output ("Showing resources in resource group "
➥+ $ResourceGroup.ResourceGroupName)
$Resources = Find-AzureRmResource -ResourceGroupNameContains
➥$ResourceGroup.ResourceGroupName |
➥Select ResourceName, ResourceType
ForEach ($Resource in $Resources)
{
Write-Output ($Resource.ResourceName + " of type "
➥+ $Resource.ResourceType)
}
Write-Output ("")
}
A parte final do runbook é para onde o seu código de runbook iria. É criado um objeto
para $ResourceGroups que obtém uma lista de todos os grupos de recursos do Azure
disponíveis. Em seguida, um ciclo foreach passa por cada grupo de recursos, localiza
uma lista de recursos e escreve uma lista de nomes e tipos de recurso.
Este exemplo básico mostra como pode interagir com o Azure quando o runbook tiver
sido autenticado na subscrição. Se implementar RBAC na conta de Execução, apenas os
grupos de recursos que a conta tem permissão para ver serão devolvidos. Esta abordagem
ao RBAC destaca por que é que é um bom principal de segurança para criar e utilizar con-
tas de Execução com âmbito para limitar o acesso dos runbooks aos recursos no seu
ambiente do Azure. Certifique-se sempre de fornecer os privilégios mínimos necessários.
Se tudo isto do PowerShell ou Python for novo para si, não se preocupe. Ambos for-
necem boas linguagens de script básica que também podem ser utilizados para desen-
volver aplicações complexas e poderosas. Como programador, deve achar qualquer
linguagem relativamente fácil para escolher e utilizar. Se for um profissional de TI,
automatizar tarefas liberta o seu tempo para executar todas as outras tarefas e o Power-
Shell ou Python são bons lugares para começar. A Manning Publications também tem
alguns outros ótimos livros para ajudá-lo!
Experimente agora
Para ver o runbook em ação, conclua os passos a seguir:
Figura 18.4 Pode visualizar a saída do runbook, juntamente com os registos que são gerados ou
erros e avisos. Este exemplo básico é concluído em poucos segundos, mas os runbooks mais
complexos podem demorar mais tempo. Pode monitorizar o estado desses runbooks mais longos
e parar ou pausar a sua execução, caso seja necessário.
Figura 18.5 A configuração do estado pretendido para um servidor é criada e armazenada na Automation
do Azure. A conta de Automation atua como um servidor pull, que permite que os servidores ligados
retirem a configuração necessária de uma localização central. Podem ser definidos diferentes modos de
configuração para o comportamento de remediação do servidor se a sua configuração se desviar do
estado pretendido.
PowerShell Desired State Configuration (DSC) 279
definição DSC. Neste modo, no qual envia manualmente a configuração para o motor
LCM, perde imensos controlos centrais e relatórios que muitas vezes são necessários ao
gerir muitos servidores.
Também há flexibilidade na forma como os servidores de destino processam as defi-
nições de DSC recebidas do servidor pull de Automation do Azure. Pode configurar o
DSC para funcionar num dos três modos de configuração:
¡ Apenas aplicar: o estado pretendido é enviado e aplicado ao servidor de destino e
já está. Isto é como o comportamento da Extensão de Script Personalizado do
Azure, em que todas as configurações ou instalações são aplicadas quando imple-
mentadas pela primeira vez mas não há nenhum processo implementado para
parar manualmente essas configurações, alterando o ciclo de vida do servidor.
¡ Aplicar e monitorizar: depois de o servidor ter o estado pretendido aplicado, o DSC
continuará a monitorizar as alterações que fazem com que o servidor se desvie
dessa configuração inicial. Pode ser utilizado um relatório central para ver os ser-
vidores que já não são compatíveis com o seu estado pretendido. Esta configura-
ção é um bom equilíbrio entre a necessidade de manter um servidor compatível
com o estado pretendido e fornecer um elemento de interação humana para
decidir sobre as opções de remediação.
¡ Aplicar e corrigir automaticamente: a configuração mais automatizada e autónoma
aplica o estado pretendido, monitoriza os desvios e corrige automaticamente o
servidor caso ocorram alterações, para garantir que permanece compatível. Há
um risco de que as alterações manuais legítimas sejam substituídas e, em
vez disso, devolvidas ao estado pretendido configurado, mas este modo de confi-
guração garante que as definições que atribui têm sempre prioridade.
O PowerShell DSC pode ser utilizado em VMs executadas em outros fornecedores de
cloud, bem como em VMs on-premises e em servidores físicos. Graças ao .NET Core, o
PowerShell DSC também pode ser utilizado em servidores Linux; portanto, não é uma
solução apenas para Windows. Este suporte compatível com vários fornecedore
s e sistemas operativos torna o PowerShell uma opção poderosa de configuração e de
gestão servidores à escala.
Pode criar e manter o seu próprio servidor pull de DSC, mas as funcionalidades
incorporadas de Automation do Azure fornecem alguns benefícios adicionais:
¡ As credenciais são geridas centralmente e os certificados são gerados
automaticamente.
¡ A comunicação entre o servidor pull de DSC e os servidores de destino
é encriptada.
¡ Os relatórios incorporados são fornecidos para conformidade com DSC, e há
integração com o Log Analytics para gerar relatórios e alertas mais detalhados.
Esta secção é muito mais do que um curso intensivo do PowerShell DSC, é um compo-
nente poderoso por si só e tem estado amplamente disponível há alguns anos. Quando
combinado com a Automation do Azure, o DSC é uma ótima opção para automatizar a
instalação e a configuração do software. Recapitule, por exemplo, os capítulos anterio-
res sobre conjuntos de dimensionamento de virtual machines. Pode aplicar uma confi-
guração de DSC ao conjunto de dimensionamento com Automation do Azure e, como
cada VM é criada no conjunto de dimensionamento, será configurada automatica-
mente com os componentes e os ficheiros de aplicação necessários.
280 Capítulo 18 Azure Automation
18.3.1 Definir e utilizar o PowerShell DSC, bem como um servidor pull de Automation
do Azure
Espero que essa jornada vertiginosa pelo PowerShell DSC lhe tenha dado uma ideia
do que é possível! Vamos usar o PowerShell DSC para automatizar o exemplo anterior
de instalação de um servidor Web básico numa VM.
Experimente agora
Para ver o PowerShell DSC em ação, conclua os passos a seguir:
1 Crie uma VM Windows Server 2019 Datacenter e abra a porta TCP 80 para
tráfego HTTP. Vá adiante, sem hesitações, pois já estamos no capítulo 18! Pode
criar a VM no Cloud Shell ou no portal Azure: a decisão é sua. Utilize o grupo de
recursos que criou nos exercícios anteriores, como azuremolchapter18. Pode
continuar com os próximos passos à medida que a VM é implementada.
2 No seu computador local, crie um ficheiro chamado webserver.ps1, introduza
o seguinte código e guarde e feche o ficheiro quando tiver acabado:
configuration WebServer {
Node localhost {
WindowsFeature WebServer {
Ensure = "Present"
Name = "Web-Server"
}
}
}
Como o ficheiro MOF define o estado completo dos seus servidores, deve proteger
o seu conteúdo. Se um hacker conhecer todos os componentes da aplicação instalados
e a localização de vários ficheiros de configuração e código personalizados, isso aumen-
tará a possibilidade de os seus servidores ficarem comprometidos. As versões recentes
do PowerShell encriptam todo o ficheiro MOF. A Automatização do Azure gera automati-
camente os certificados e chaves digitais necessários quando um servidor de destino
está configurado para DSC, o que lhe permite utilizar facilmente ficheiros MOF encripta-
dos. A Automation também encripta o tráfego entre o servidor pull de DSC e os nós de
destino, não apenas o ficheiro MOF.
O processo de compilação na Automation do Azure converte a definição de DSC que for-
nece num ficheiro MOF e encripta o ficheiro MOF com as chaves e certificados digitais.
O processo de compilação da sua definição de DSC demora alguns segundos, mas pro-
tege muito bem o seu ambiente: apenas mais um exemplo do Azure a proteger os seus
recursos por predefinição!
7 Para aplicar a configuração na sua VM, selecione o separador de nós nas janelas
de configuração do Estado (DSC), selecione Adicionar e escolha a VM que criou
em passos anteriores.
8 Escolha Ligar.
9 No menu pendente Nome de Configuração do Nó, escolha webserver.
local-host.
10 Defina o modo de configuração como ApplyAndMonitor e selecione OK.
Isto pode levar um minuto ou dois a permitir que a VM utilize o servidor pull
do Azure PowerShell DSC e aplique o estado inicial pretendido.
11 Quando o portal Azure comunicar que a configuração foi aplicada, selecione
o seu grupo de recursos. Em seguida, selecione a VM que criou nos passos
anteriores.
282 Capítulo 18 Azure Automation
12 Abriu a porta TCP 80 para a VM quando criou esta última? Caso contrário, crie
uma regra de grupo de segurança de rede para permitir o tráfego e, em seguida,
abra o IP público da VM num browser. O processo DSC instala o servidor Web do
IIS e a página Web predefinida é carregada, tal como mostrado na figura 18.6.
Figura 18.6 Depois de a VM ter sido ligada ao DSC de Automation do Azure, o estado pretendido será
aplicado e o servidor Web do IIS será instalado.
1 O PowerShell DSC para Linux tem algumas limitações nos Linux distros que
suporta sem configuração adicional. Por isso, de modo a manter este exercício
de laboratório de fim de capítulo o mais simples possível, crie uma CentOS 7.7
ou uma VM mais recente e abra a porta 80.
2 Na sua conta de Automation do Azure, escolha Módulos, no menu à esquerda.
3 Selecione Procurar na Galeria e, em seguida, selecione e importe o módulo nx
para gerir os recursos Linux DSC.
4 No seu computador local, crie um ficheiro chamado httpd.ps1 e introduza
o seguinte código:
configuration httpd {
Import-DSCResource -Module nx
Node localhost {
nxPackage httpd {
Name = "httpd"
Ensure = "Present"
PackageManager = "yum"
}
nxService httpd {
Name = "httpd"
State = "running"
Enabled = $true
Controller = "systemd"
}
}
}
Host de virtualização
Figura 19.1 Com uma infraestrutura de
Hipervisor VM tradicional, o hipervisor em cada host de
virtualização fornece uma camada de isolamento,
VM 1 VM 2 fornecendo a cada VM o seu próprio conjunto de
vCPU vRAM vNIC vCPU vRAM vNIC dispositivos de hardware virtual, como uma CPU
virtual, RAM virtual e NICs virtuais. A VM instala
SO Linux guest SO Windows guest um SO convidado, como o Ubuntu Linux ou o
Windows Server, que pode utilizar este hardware
Bibliotecas core + binários Bibliotecas core + binários virtual. Finalmente, instala a sua aplicação e
O código da aplicação O código da aplicação quaisquer bibliotecas necessárias. Este nível
de isolamento torna as VMs muito seguras, mas
adiciona uma camada de sobrecarga em termos
de recursos de computação, armazenamento
e tempos de arranque.
Também podem ser executados vários containers num único host. O host do contai-
ner recebe as várias chamadas do sistema de cada container e, em seguida, agenda a
alocação e distribuição desses pedidos num kernel de base partilhado, sistema opera-
tivo e recursos de hardware. Os containers fornecem um isolamento lógico dos proces-
sos de aplicações. O trabalho do runtime do container é mostrado na figura 19.4.
Host de container
Geralmente, os containers são muito mais leves do que as VMs. Os containers podem
iniciar-se mais rapidamente do que as VMs (regra geral em segundos, em vez de minu-
tos). Geralmente, o tamanho de uma imagem de container é de apenas algumas deze-
nas ou centenas de MB, em comparação com muitas dezenas de GB das VMs. Ainda há
limites e controlos de segurança em vigor, mas é importante lembrar que cada contai-
ner partilha tecnicamente o mesmo kernel de outros containers no mesmo host.
Experimente agora
Leva alguns minutos a criar um cluster do AKS para utilização nos próximos exercícios.
Por isso, conclua os passos a seguir e continue a ler o capítulo.
1 Abra o portal Azure e escolha o ícone do Cloud Shell na parte superior do menu.
2 Crie um grupo de recursos. Forneça um nome, como azuremolchapter19, e
uma localização, como eastus. A disponibilidade de região do AKS pode variar,
por isso escolha uma região importante, como eastus ou westeurope. (Para
obter uma lista atualizada da disponibilidade das regiões, ver https://azure.
microsoft.com/regions/services.)
az group create --name azuremolchapter19 --location eastus
A abordagem de microsserviços para aplicações 287
Microsserviços
Aplicação monolítica
Figura 19.5 Numa aplicação monolítica tradicional, toda a aplicação é executada como uma única
aplicação. A aplicação pode ter vários componentes, mas esta é executada a partir de uma única
instalação e é corrigida e atualizada como uma única instância. Com os microsserviços, cada
componente é dividido pelo seu próprio serviço de aplicação e unidade de execução. Cada
componente pode ser atualizado, corrigido e dimensionado independentemente dos outros.
Para ver como pode executar rapidamente a sua pizzaria, vamos criar uma instância
de container. É necessário apenas um comando para executar uma instância de contai-
ner, mas a figura 19.6 mostra como reúne muitos componentes para que isso ocorra em
segundo plano. Analisaremos os componentes de um Dockerfile e Docker Hub depois
de a instância de container estar em funcionamento.
Imagem base
1. NGINX:1.17.5
Dockerfile
Azure Container
FROM nginx:1.17.5 Docker Hub Instance
2. Mapear porta externa 80 Implementar
EXPOSE 80:80 iainfoulds:
-> porta de container 80 azuremol
azuremol
COPY index.html
/usr/share/nginx/html 3.
index.html
/usr/share/nginx/html
Imagem de container
local criada a parr do
Dockerfile emida via
push para o repositório
azuremol público do Docker Hub
Figura 19.6 Foi utilizado um Dockerfile para criar uma imagem completa do container: o azuremol. Esta
imagem foi emitida via push para um registo público online chamado Docker Hub. Agora, pode criar uma
instância de container utilizando esta imagem pública pré-criada do Docker Hub, que fornece uma
imagem de aplicação pronta para execução.
Experimente agora
Para criar uma instância de container do Azure que execute um site básico, conclua os
passos a seguir:
Este exercício usa uma imagem de exemplo que criei para si, a qual examinare-
mos um pouco melhor quando o container estiver a funcionar.
Azure Container Instances 291
3 Para ver o que foi criado, olhe para a saída do comando para criar o con-tainer.
Na secção Eventos, pode visualizar como a imagem é obtida (por download) a
partir do Docker Hub, um container será criado e iniciado.
Algumas reservas de CPU e memória também são atribuídas, as quais podem
ser ajustadas, se necessário. Um endereço de IP público é mostrado juntamente
com algumas informações sobre o container, como o estado de aprovisiona-
mento, o tipo de sistema operativo e a política de reinicialização.
4 Para abrir o site básico que é executado no container, pode consultar apenas
o endereço IP público atribuído:
az container show \
--resource-group azuremolchapter19 \
--name azuremol \
--query ipAddress.ip \
--output tsv
Figura 19.7 Quando criar uma instância de container, o site da pizzaria será executado sem
qualquer configuração adicional. Toda a configuração e o conteúdo estão incluídos na imagem
do container. Este exercício rápido destaca a portabilidade e o poder dos containers. Quando
a imagem do container estiver preparada, a sua aplicação fica a funcionar assim que for
implementada uma nova instância de container.
FROM nginx:1.17.5
EXPOSE 80:80
Se este Dockerfile foi utilizado para criar uma imagem de container do Docker, o NGINX
foi utilizado como a imagem de origem e a página Web de exemplo foi copiada para a
mesma. Em seguida, este container foi emitido via push para o Docker Hub, um reposi-
tório público online que o Docker fornece para partilhar e implementar containers.
Para implementar a instância do container, forneceu iainfoulds/azuremol como a ima-
gem do container a ser utilizada. O Azure procurou no Docker Hub e encontrou um
repositório chamado iainfoulds e, dentro dele, uma imagem chamada azuremol.
Vamos examinar cada linha do Dockerfile:
¡ FROM nginx:1.17.5 - Nos capítulos anteriores, criou uma VM básica, ligou-
-se à mesma com SSH e, em seguida, instalou manualmente o servidor Web NGINX.
No exemplo do Dockerfile, tudo isso é realizado numa linha. Esta linha informa que
o container deve ser baseado numa imagem de container existente pré-instalada com
o NGINX. O 1.17.5 é a versão da imagem pública do container NGINX para utili-
zar. Trata-se da mais recente no momento da escrita. É uma boa prática incluir um
número de versão específico. Se não incluir um número de versão, será sempre utili-
zada a versão mais recente. Isto parece resultar na teoria, mas as aplicações de micros-
serviços podem escalar para um grande número de containers ativos. Por isso, para
garantir que tem um ambiente consistente, tem de controlar
o número da versão exata de cada componente que estiver em utilização.
¡ EXPOSE 80:80—Para permitir o acesso à VM nos capítulos anteriores, criou
uma regra do NSG que permitia a porta 80. No Dockerfile, esta linha informa o
container para abrir a porta 80 e mapeá-la para a porta interna 80. Quando criou
a sua instância de container com az container create, também especificou que
a plataforma do Azure deve permitir tráfego com --ports 80. Trata-se de toda a
rede virtual em que precisa de pensar!
¡ COPY index.html /usr/share/nginx/html—A parte final é obter a sua aplicação
no container. Nos capítulos anteriores, utilizou o Git para obter a página Web da
pizzaria de exemplo e emiti-la via push para a sua aplicação Web. Com o Docker-
file, faz COPY do ficheiro index.html para o diretório local /usr/share/nginx/
html no container. Pronto!
Para os seus próprios cenários, pode definir um Dockerfile que utiliza uma imagem base
diferente, como Node.js ou Python. Depois, instala quaisquer bibliotecas ou pacotes de
suporte adicionais necessários, obtém o código da aplicação no controlo de origem,
como o GitHub, e implementa a sua aplicação. Este Dockerfile será utilizado para criar
imagens de container que são armazenadas num registo de container privado e não num
repositório público do Docker Hub, como aquele visto no exemplo.
Azure Kubernetes Service 293
O ACR também oferece opções de replicação e redundância incorporadas que pode utili-
zar para colocar os seus containers perto de onde os implementa e executá-los para que
os utilizadores tenham acesso. Esta localidade de região é semelhante à maneira como
utilizou a replicação global do Cosmos DB no capítulo 10 para fazer com que esses milis-
segundos fossem contabilizados e fornecer aos seus clientes o tempo de acesso mais
rápido possível às suas aplicações.
Se tudo isso parecer interessante, veja a página de introdução do ACR a funcionar rapi-
damente com o seu próprio repositório privado em alguns minutos: http://mng.bz/04rj.
Nesta secção, iremos utilizar a mesma aplicação Web de exemplo do exercício ante-
rior com a ACI para executar uma implementação redundante e dimensionável no
Kubernetes. Irá terminar com alguns componentes, como mostra a figura 19.8.
Pod 1
Pod 2
Figura 19.8 O seu container de exemplo do Docker Hub é executado num cluster de
Kubernetes de dois nós que cria no AKS. A implementação do Kubernetes contém dois
pods lógicos, um em cada nó do cluster, com uma instância de container em execução
dentro de cada pod. Depois, expõe um balanceador de carga público para permitir que
a sua aplicação Web seja vista online.
Experimente agora
Para ver as informações sobre o seu cluster do AKS, conclua os passos a seguir:
1 Abra o portal Azure e escolha o ícone do Cloud Shell na parte superior do menu.
2 No início do capítulo, criou um cluster de Kubernetes. O processo levou alguns
minutos, mas espero que esteja pronto agora! Observe o estado do cluster da
seguinte forma:
az aks show \
--resource-group azuremolchapter19 \
--name azuremol
Pod 1
Pod 2
Figura 19.9 Com o cluster de Kubernetes criado no AKS, agora pode criar uma implementação do
Kubernetes e executar a aplicação. O seu container é executado nos dois nós, com um pod lógico em
cada nó; precisa de criar um serviço do Kubernetes que exponha um balanceador de carga público para
encaminhar o tráfego para a sua aplicação.
296 Capítulo 19 Containers do Azure
Experimente agora
Para implementar uma aplicação no seu cluster de Kubernetes, conclua
os passos a seguir:
Mesmo quando o estado dos relatórios do pod for Em execução, não poderá aceder à
sua aplicação. A instância do container que criou anteriormente poderia encaminhar
o tráfego sobre um endereço IP público diretamente para essa instância, mas o que
acha que é necessário para um cluster de Kubernetes encaminhar o tráfego para os
containers? Se disse: um balanceador de carga, parabéns! No momento, tem apenas
um pod: uma única instância de container. Irá aumentar na horizontal o número de
pods no laboratório de fim de capítulo e, para que isso funcione, precisa de uma
maneira de encaminhar o tráfego para várias instâncias. Por isso, vamos dizer ao
Kubernetes para utilizar um balanceador de carga.
Esse é o ponto onde a integração entre o Kubernetes e o Azure se torna interessante.
Quando informa o Kubernetes que pretende criar um balanceador de carga para os
seus containers, em segundo plano, o Kubernetes entra novamente na plataforma do
Azure e cria um balanceador de carga do Azure. Este balanceador de carga do Azure é
como o que aprendeu no capítulo 8. Há conjuntos IP de front-end e de back-end e
regras de balanceamento de carga, sendo possível configurar sondagens do estado de
funcionamento. À medida que a sua implementação do Kubernetes é aumentada ou
reduzida verticalmente, o balanceador de carga é atualizado automaticamente, con-
forme necessário.
Experimente agora
Para expor a sua aplicação à internet, conclua os seguintes passos:
(continuação)
Action, de Marko Luksa (https://livebook.manning.com/book/kubernetes-in-action),
que podem ajudá-lo a aprofundar ainda mais o Docker, o desenvolvimento de aplicações
de microsserviços e o Kubernetes. Consulte esses livros se este capítulo parecer interes-
sante e quiser explorar mais!
Os exemplos deste capítulo utilizaram VMs Linux para os nós de cluster do AKS e, em
seguida, executaram containers Linux para NGINX. Os containers são um pouco mais
difíceis se executar apenas containers Linux em nós Linux, por exemplo. Tal como
aprendeu no início do capítulo, os containers partilham o sistema operativo e kernel
convidados. Desta forma, não pode executar containers Windows num nó Linux. Em
geral, também não é possível executar containers Linux num nó Windows. Estão envol-
vidos alguns bons truques técnicos, mas, regra geral, o container e o SO do nó subja-
centes devem coincidir.
O que é ótimo no AKS é que pode executar os nós Linux e Windows, para que possa
executar os containers Linux e Windows! Precisa de prestar um pouco de atenção à
forma como estes diferentes containers são programados nos diferentes sistemas opera-
tivos do nó. Contudo, esta abordgem aalarga o leque de aplicações e serviços que pode
executar no AKS.
1 Pode ver quantos nós estão no seu cluster de Kubernetes com kubectl get
nodes. Aumente verticalmente o seu cluster para três nós:
az aks scale \
--resource-group azuremolchapter19 \
--name azuremol \
--node-count 3
Para mim, uma das áreas mais interessantes da tecnologia nos anos mais recentes é a
Internet of Things (IoT). Não acredito que uma máquina de lavar louça ou um frig-
orífico precise ainda de estar ligado à Internet, mas existem preocupações de privaci-
dade válidas sobre uma TV ou um dispositivo de áudio que está permanentemente
ligado à Internet e a ouvir sempre o som da sua voz para emitir um comando. No
entanto, existem muitas aplicações práticas para dispositivos IoT. Pode ter relatórios de
equipamentos de indústria no seu estado de funcionamento, gerar alertas de
manutenção e permitir que os operadores entendam a sua eficiência em várias fábricas
em todo o mundo. Uma empresa de camionagem pode transmitir a telemetria dos
seus veículos sobre as cargas transportadas e os tempos médios de condução, além de
conseguir redirecionar os condutores, conforme necessário, de forma mais inteli-
gente. As transportadoras conseguem controlar cada container e ajudar os seus clien-
tes a gerir melhor a sua cadeia de fornecimento, sabendo onde estão os seus recursos.
No Azure, pode integrar dispositivos IoT com uma variedade de serviços. O Azure
Web Apps pode fornecer um front-end para os dados serem vistos, o Storage pode
ser utilizado para registar os dados transmitidos em fluxo a partir de dispositivos, e as
funcionalidades sem servidor, como o Azure Logic Apps (abordadas no próximo e
último capítulo), podem processar os dados recebidos.
Neste capítulo, vamos examinar o que é a IoT e como utilizar o Azure IoT Hub
para gerir e recolher dados a partir de dispositivos centralmente. Depois, verá como
utilizar uma aplicação Web do Azure para ver os dados em tempo real a partir de um
dispositivo IoT.
poderão ser processadas por um sistema central, talvez com IA ou ML (conforme dis-
cutido no capítulo 17), e realizar as ações apropriadas. A figura 20.1 mostra uma abor-
dagem de alto nível para a IoT.
Dispositivo IoT
Sistema Aplicações
e serviços
central Os dados recolhidos a partir dos
Dispositivo IoT dispositivos IoT são processados e as
instruções podem ser enviadas novamente
para os dispositivos ou outros sistemas.
Figura 20.1 As mensagens são enviadas entre muitos dispositivos IoT ligados e um sistema central.
As suas aplicações e serviços poderão processar os dados recebidos e enviar instruções do
dispositivo para realizar ações adicionais em resposta aos dados recolhidos.
ou gerar alertas e notificações. Os dados recebidos a partir dos dispositivos IoT podem
ser registados num sistema de base de dados, como o Azure Cosmos DB, sendo depois
processados por aplicações de business intelligence e gerar relatórios.
Ideias com maiores perspetivas de futuro para IoT incluem coisas como o seu frig-
orífico detetar os níveis de alimentos e gerar uma lista de compras ou, até mesmo, pedir
comida num supermercado local. O seu automóvel pode reportar os dados ao conces-
sionário, para que possa ter todas as peças ou consumíveis necessários prontos quando
levar o veículo à revisão. E se o seu despertador tocasse de manhã e a máquina de café se
ligasse para lhe preparar o pequeno-almoço?
Uma grande área de preocupação com a IoT é a segurança do dispositivo. Com tan-
tos dispositivos fora da sua infraestrutura de rede principal e, muitas das vezes, ligados à
Internet pública, poder aprovisionar, manter e atualizar esses dispositivos é um desafio.
Muitos dispositivos IoT são de baixa potência, simples componentes eletrónicos que
podem não ter os recursos de armazenamento ou de processamento para se atualiza-
rem com atualizações de segurança e de aplicações como acontece num computador
de secretária ou portátil tradicionais. Não é suficiente implementar vários dispositivos
IoT, especialmente dispositivos ao nível do consumidor, sem um plano de proteção ade-
quado e fornecer atualizações e manutenção.
Estas preocupações de segurança não devem impedi-lo de criar aplicações e serviços
que utilizam dispositivos IoT. A IoT traz um novo conjunto de desafios para a
manutenção de dispositivos tradicionais, mas existem soluções que permitem aprovi-
sionar e manter dispositivos de forma central, bem como fornecer proteção à comuni-
cação do dispositivo.
Nesta altura, tenho a certeza de que pode ter adivinhado que o Azure tem essa
solução IoT! Ele oferece um conjunto de serviços de IoT. Vejamos como pode começar
a explorar a IoT com o Azure.
Azure Service
Dispositivo IoT Azure Web Apps
Bus
Dispositivo IoT
Azure IoT
Hub Grelha de
Dispositivo IoT
Eventos do Azure Azure Logic Apps
Mensagens dos dispositivos
para a cloud e da cloud para Monitorizar, resolver
os dispositivos para receber problemas e alertar
e enviar dados sobre problemas
Figura 20.2 Com um IoT Hub, pode aprovisionar e gerir centralmente muitos dispositivos IoT à escala. Existe
uma comunicação bidirecional entre os dispositivos e o Azure para ler e escrever dados. Pode processar os
dados recebidos a partir dos dispositivos e encaminhá-los para outros serviços do Azure, como o Web Apps
e o Storage. Para monitorizar e resolver problemas, pode encaminhar as informações para o Azure Event Grid,
que veremos no capítulo 21, e depois criar ligações para outras soluções de monitorização.
Controla o acesso a um IoT Hub com políticas de acesso partilhado. Estas políticas são
como contas de utilizador e permissões. Existem políticas predefinidas que permitem
que dispositivos e serviços se liguem ao IoT Hub ou que leiam e escrevam informações
do registo do dispositivo que controla os dispositivos IoT ligados e as chaves de segu-
rança. Cada política pode receber uma ou mais das seguintes permissões:
¡ Leitura do registo
¡ Escrita do registo
¡ Ligação do serviço
¡ Ligação do dispositivo
304 Capítulo 20 O Azure e a Internet of Things
Viva no limite
Neste capítulo, iremos focar-nos no Azure IoT Hub. Outro serviço, o Azure IoT Edge, per-
mite executar serviços, como o Azure Functions e o Stream Analytics, no seu ambiente
local. Em vez de ter todos os seus dispositivos IoT a transmitir dados para serem proces-
sados centralmente no Azure, pode processar os dados em cada localização.
O Azure IoT Edge executa aplicações e serviços em containers (abordados no
capítulo 19). A utilização de containers permite que o IoT Edge seja portátil e consistente
na forma como funciona em diferentes dispositivos e ambientes. Os serviços pré-criados
do Azure podem ser implementados ou pode criar as suas próprias aplicações e dis-
tribuí-las para as localizações na periferia.
O principal benefício do IoT Edge é que descarrega parte do processamento de dados
e das transferências de dados da rede. Se puder processar dados localmente no IoT
Edge, poderá agrupar grandes blocos de dados e transmiti-los novamente ao Azure.
Depois, as aplicações centrais podem agregar informações de outras localizações do
Edge para serem processadas por serviços como IA e ML.
Gerir centralmente os dispositivos com o Azure IoT Hub 305
Outro excelente cenário para o Azure IoT Edge são as localizações remotas, muitas das
vezes encontradas nas indústrias de gás e de petróleo ou de transporte, onde a conec-
tividade da Internet pode não ser fiável o suficiente para todos os dados do dispositivo
de IoT serem transmitidos novamente para o Azure e serem processados central-
mente. O IoT Edge permite essas localizações remotas para continuar a operar com
algum nível de autonomia, mesmo quando não há ligação à internet.
Ao planear uma infraestrutura de aplicações que envolva dispositivos IoT, examine como
pode gerir as interrupções de rede e as ligações à Internet deficientes. Se o seu ambi-
ente depende da Internet, planeie ligações de Internet redundantes e equipamentos
para encaminhar os dados. Ou veja o IoT Edge para processar localmente dados quando
não for possível fazer isso centralmente no Azure.
Experimente agora
Para começar a utilizar o IoT e criar um IoT Hub, conclua os passos a seguir:
1 Abra o portal Azure, execute o Cloud Shell e crie um grupo de recursos, como o
azuremolchapter20:
az group create --name azuremolchapter20 --location eastus
2 Trabalhou muito com a CLI do Azure neste livro, porque os comandos do Cloud
Shell e da CLI permitem-lhe criar e gerir recursos rapidamente. Como mencio-
nado nos capítulos anteriores, a CLI do Azure também pode utilizar módulos
adicionais, denominados extensões. Estas extensões adicionam mais funcionali-
dade e geralmente são atualizadas fora do ciclo de lançamento regular da CLI
principal do Azure. A IoT do Azure está a expandir-se rapidamente e a adicionar
novas funcionalidades. Por isso, os principais comandos para interagir com o IoT
Hub provêm de uma extensão da CLI do Azure.
Para obter a funcionalidade completa de que precisa para realizar estes exer-
cícios, instale a extensão IoT da CLI do Azure:
az extension add --name azure-cli-iot-ext
3 Crie um IoT Hub e dê-lhe um nome, como azuremol. Para estes exercícios,
pode utilizar um IoT Hub de escalão gratuito, f1:
az iot hub create \
--resource-group azuremolchapter20 \
--name azuremol \
--sku f1 \
--partition-count 2
NOTA Pode criar apenas um hub de escalão gratuito por subscrição, mas estes
hubs são ótimos para testar a comunicação entre dispositivos e integrar outros
serviços do Azure. O hub de escalão gratuito está atualmente limitado a 8000
mensagens por dia e suporta um máximo de 500 dispositivos ligados. Isto pode
parecer muito, mas, dependendo do que estiver a fazer, um único dispositivo
que envia uma mensagem para o IoT Hub a cada 12 segundos, aproximada-
mente, aumenta o limite de 8000 mensagens!
306 Capítulo 20 O Azure e a Internet of Things
O seu IoT Hub está bem vazio agora. Não há muito que se possa fazer sem um ou mais
dispositivos IoT ligados. Um dispositivo habitualmente usado é o Raspberry Pi, um
minicomputador de baixo custo que pode ligar-se a redes Wi-Fi e utilizar sensores
comuns prontos a utilizar para medir temperatura, humidade e pressão. Também
pode utilizá-lo para controlar pequenos motores, luzes e temporizadores. Não precisa
de ir a correr comprar um Raspberry Pi para trabalhar com um IoT Hub, uma vez que
pode simular um no seu browser!
Experimente agora
Para criar um dispositivo IoT Raspberry Pi simulado, conclua os passos a seguir:
Criar um dispositivo Raspberry Pi simulado 307
1 No Azure Cloud Shell, crie uma identidade de dispositivo no seu IoT Hub, como
azuremol, e forneça um nome para o dispositivo, como raspberrypi:
az iot hub device-identity create \
--hub-name azuremol \
--device-id raspberrypi
2 Lembra-se das políticas de acesso partilhado da secção 20.2? Cada dispositivo IoT
também possui a sua própria chave de acesso e cadeia de ligação, que são utiliza-
das para identificá-lo quando comunica de novo com o seu IoT Hub. Esta princi-
pal característica do Azure IoT protege os dispositivos e minimiza o risco de
exposição no caso de um dispositivo estar comprometido.
Para utilizar o seu dispositivo com o simulador Raspberry Pi, precisa das infor-
mações da cadeia de ligação do dispositivo. Este identificador exclusivo inclui o
nome de host do seu IoT Hub, o ID do dispositivo e uma chave de acesso:
az iot hub device-identity show-connection-string \
--hub-name azuremol \
--device-id raspberrypi \
--output tsv
3 Copie o conteúdo da sua cadeia de ligação, pois vai precisar dele no passo 4.
A saída é smiliar ao exemplo seguinte:
HostName=azuremol.azure-devices.net;DeviceId=raspberrypi;
➥SharedAccessKey=oXVvK40qYYI3M4u6ZLxoyR/PUKV7A7RF/JR9WcsRYSI=
4 Agora, vem a parte divertida! Abra o simulador do Raspberry Pi no seu browser:
https://azure-samples.github.io/raspberry-pi-web-simulator. Veja a secção de
código à direita no simulador. Por volta da linha 15, deve haver uma variável
connectionString, que já pede a [Cadeia de ligação do dispositivo do IoT Hub].
Copie e cole a cadeia de ligação do passo 3, conforme mostrado na figura 20.3.
5 Selecione o botão Executar logo abaixo da janela de código para iniciar o
simulador.
A cada dois segundos, a janela da consola apresenta uma mensagem que mos-
tra os dados enviados ao IoT Hub. O LED vermelho no diagrama de circuito tam-
bém pisca quando isso acontece, de forma a simular como as saídas ligadas ao
Raspberry Pi podem ser controladas. A mensagem de saída na janela da consola é
semelhante à seguinte:
Sending message: {"messageId":1,"deviceId":"Raspberry Pi Web
➥Client","temperature":24.207095037347923,
➥"humidity":69.12946775681091}
De onde vieram as leituras de temperatura e humidade? Este dispositivo é um
Raspberry Pi simulado e não há um sensor BME280 real, portanto, a aplicação
gera estes valores no software. Se olhar para o resto do código no
308 Capítulo 20 O Azure e a Internet of Things
Figura 20.3 Copie e cole a cadeia de ligação do seu dispositivo IoT do Azure no simulador do Raspberry
Pi. A variável connectionString é utilizada para se ligar para transmitir os dados do sensor simulado
para o Azure.
janela do simulador, por volta da linha 99, a aplicação define o sensor. Depois, o
simulador replica como o sensor real vai agir e gera os dados devolvidos do sensor
para a aplicação. Este é um exemplo básico, então pense no que mais pode ler aqui:
rotações por minuto (RPM) de um motor ou mecanismo ou coordenadas de GPS
de um container de barco ou camião, e assim por diante. Existe um equilíbrio
entre simular um dispositivo no software e criar uma aplicação funcional com
dados reais de hardware e sensor. Em algum momento, irá precisar de comprar ou
pedir equipamentos emprestados se quiser analisar melhor a IoT do Azure.
6 Para confirmar que as mensagens do dispositivo simulado estão a ser recebidas
pelo seu IoT Hub, examine o estado da quota. Forneça o nome do seu IoT Hub,
como azuremol:
az iot hub show-quota-metrics --name azuremol
"currentValue": 5,
"maxValue": 8000,
"name": "TotalMessages"
},
{
"currentValue": 1,
"maxValue": 500,
"name": "TotalDeviceCount"
}
]
Também pode procurar no portal Azure: escolha o seu grupo de recursos e seleci-
one o seu IoT Hub. Na página Descrição Geral, a utilização do hub reporta o
número de mensagens recebidas e dispositivos ligados. Mais uma vez, pode
demorar um ou dois minutos para as mensagens aparecerem e serem registadas
na quota. Todas as aplicações podem utilizar imediatamente as mensagens rece-
bidas, como veremos na secção 20.4.
Problemas no paraíso
Se não receber nenhuma mensagem no hub da IoT, verifique a janela de saída do seu
dispositivo Raspberry Pi simulado. Uma das primeiras coisas que a aplicação faz é
ligar-se ao Hub IoT do Azure. Será mostrado um erro de ligação se a sua cadeia de
ligação estiver errada. Assegure-se de que copia e cola corretamente toda a cadeia de
ligação. A cadeia de ligação começa por HostName e o último caráter em cada tecla de
acesso é sempre um sinal de igual (=).
Se a janela de saída reportar um erro, copie o texto do erro para o seu motor de
busca preferencial e procure um resultado correspondente. Certifique-se de que não
alterou nenhuma das outras linhas de código, o que causará um problema! A única coisa
que precisa de mudar na janela de código é a linha da sua cadeia de ligação.
Como o dispositivo Raspberry Pi simulado é executado num browser, pode ter um prob-
lema de site genérico. Tente atualizar a página ou aceda ao simulador num
browser diferente (https://azure-samples.github.io/raspberry-pi-web-simulator).
Figura 20.4 Um IoT Hub recebe mensagens de dispositivos IoT ligados e envia as mensagens para um
endpoint. Estes endpoints podem ser utilizados por outros serviços do Azure para consumir dados dos
dispositivos IoT. Existe um endpoint predefinido para eventos e serviços, como aplicações Web, podem
ser lidos.
Figura 20.5 As mensagens são enviadas de dispositivos IoT para o IoT Hub, que direciona as mensagens para um
endpoint. Em cada endpoint, podem ser criados grupos de consumidores. Estes grupos de consumidores permitem
que outros serviços do Azure acedam às mensagens do dispositivo, às quais não teriam acesso de outra forma. Com
os grupos de consumidores, não precisa de utilizar filas de mensagens para permitir que as aplicações externas
leiam os dados do dispositivo IoT.
Vamos criar uma aplicação Web do Azure que utilize um grupo de consumidores para
ler dados de mensagens em tempo real a partir do seu dispositivo Raspberry Pi simu-
lado. Este exemplo básico mostra como pode transmitir dados de dispositivos IoT e
aceder aos mesmos a partir de aplicações Web.
Transmitir dados do Azure IoT Hub às aplicações Web do Azure 311
Experimente agora
Para criar uma aplicação Web do Azure que leia dados de dispositivos IoT, conclua
os passos a seguir:
1 Crie um plano do App Service do Azure para a sua aplicação Web no Azure
Cloud Shell e forneça um nome, como azuremol. Para estes exercícios, o escalão
gratuito (f1) é bom o suficiente e mantém os custos baixos:
az appservice plan create \
--resource-group azuremolchapter20 \
--name azuremol \
--sku f1
2 Crie a aplicação Web. Forneça um nome, como molwebapp, e ative-o para uti-
lização com o Git para que possa implementar a aplicação experimental. Tal
como acontece com outros recursos do Azure acessíveis ao público, precisa de
fornecer o seu próprio nome único globalmente.
az webapp create \
--resource-group azuremolchapter20 \
--plan azuremol \
--name molwebapp \
--deployment-local-git
3 Definia o grupo de consumidores para o seu IoT Hub, juntamente com algumas
definições da aplicação para aplicações Web. Estas definições permitem que a
sua aplicação Web se ligue ao seu IoT Hub. A figura 20.6 mostra o que criará nos
próximos passos.
msg msg
WebSockets
msg msg
ativados true
Grupo de
consumidores Browser
As mensagens recebidas pelo endpoint do Azure IoT Hub são lidas por
uma aplicação Web. É utilizada uma ligação WebSocket para emitir
automaticamente via push as atualizações para os browsers ligados.
Figura 20.6 Para permitir que a aplicação Web leia os dados do dispositivo IoT Raspberry Pi simulado, crie um
grupo de consumidores no IoT Hub. Depois, crie duas definições da aplicação para a sua aplicação Web que lhe
permitem ligar ao grupo de consumidores. Para permitir que o browser receba automaticamente o fluxo de dados
do Raspberry Pi à medida que novos dados são recebidos, também irá ativar uma definição para WebSockets.
312 Capítulo 20 O Azure e a Internet of Things
4 Crie um grupo de consumidores que permita que a sua aplicação Web aceda aos
dados do evento transmitidos pelo dispositivo IoT. Forneça o seu IoT Hub, como
azuremol, e introduza um nome para o seu grupo de consumidores, como molwe-
bapp. Certifique-se de que utiliza o seu próprio nome durante os passos seguintes.
O seu grupo de consumidores será criado no endpoint de eventos predefinido:
az iot hub consumer-group create \
--hub-name azuremol \
--name molwebapp
6 Para se ligar ao seu IoT Hub, a sua aplicação Web precisa de conhecer a cadeia
de ligação do hub. Esta cadeia de ligação é diferente daquela que copiou para o
seu dispositivo Raspberry Pi simulado no exercício anterior. Lembre-se de que
há uma cadeia de ligação para o seu IoT Hub, que utiliza políticas de acesso par-
tilhado para definir as permissões de acesso. Existe igualmente uma cadeia de
ligação para cada dispositivo IoT. A sua aplicação Web precisa de efetuar a leitura
a partir do endpoint do IoT Hub do grupo de consumidores, por isso tem de
definir uma cadeia de ligação para o próprio IoT Hub.
7 Obtenha a cadeia de ligação do IoT Hub e atribua-a a uma variável denominada
iotconnectionstring, que será utilizada no passo 8.
iotconnectionstring=$(az iot hub show-connection-string \
--hub-name azuremol \
--output tsv)
8 Crie outra configuração para a aplicação Web, desta vez para a cadeia de ligação
do IoT Hub. A variável definida no passo 7 é utilizada para permitir que a apli-
aplicação experimental se ligue e leia dados a partir do dispositivo IoT:
az webapp config appsettings set \
--resource-group azuremolchapter20 \
--name molwebapp \
--settings iot=$iotconnectionstring
Vamos fazer uma pausa aqui para recapitularmos o que fez até agora. Trabalhou
com aplicações Web em muitos dos capítulos anteriores, mas as definições das
aplicações Web e os WebSockets são novas. A figura 20.7 recapitula como a sua
aplicação Web e o IoT Hub estão ligados.
msg msg
WebSockets ativados
msg msg
true
Grupo de
consumidores Browser
As mensagens recebidas pelo endpoint do Azure IoT Hub são lidas
por uma aplicação Web. É utilizada uma ligação WebSocket para emitir
automaticamente via push as atualizações para os browsers ligados.
Figura 20.7 À medida que as mensagens são enviadas de dispositivos IoT, passam pelo IoT Hub para um endpoint.
O código da aplicação lê as definições das aplicações Web que definem a cadeia de ligação do IoT Hub e o grupo de
consumidores a ser utilizado. Assim que a aplicação estiver ligada ao IoT Hub, o grupo de consumidores permite
que as aplicações Web leiam as mensagens do dispositivo IoT. Cada vez que uma nova mensagem é recebida de um
dispositivo IoT, a sua aplicação Web irá utilizar uma ligação do WebSocket com browsers que acedem ao seu site
para enviar atualizações automaticamente. Esta ligação permite ver dados em tempo real transmitidos de
dispositivos IoT, como informações de temperatura e humidade, a partir do seu dispositivo Raspberry Pi simulado.
13 Para carregar a aplicação experimental, crie uma ligação à sua aplicação Web. O
comando seguinte obtém o repositório de aplicações Web e configura o seu
repositório Git de exemplos local para se ligar ao mesmo:
git remote add molwebapp \
$(az webapp deployment source config-local-git \
--resource-group azuremolchapter20 \
--name molwebapp \
--output tsv)
Nos capítulos anteriores, fi-lo procurar este endereço, mas agora, espero que
tenha começado a explorar o que mais a CLI do Azure pode fazer e tenha perce-
bido que muitas destas informações podem ser obtidas rapidamente.
14 Emita o site HTML de exemplo para a aplicação Web com o seguinte comando:
git push molwebapp master
Para repor a palavra-passe, introduza o nome da sua conta a partir do comando anterior
e, em seguida responda às instruções para definir uma nova palavra-passe. O exemplo a
seguir repõe a palavra-passe da conta de utilizador denominada azuremol:
az webapp deployment user set --user-name azuremol
Na primeira vez que abrir o site no seu browser, pode levar alguns segundos
até a aplicação Web ligar-se ao seu IoT Hub, iniciar a ligação do WebSocket e
aguardar pela primeira mensagem do dispositivo a ser recebida. A cada dois
segundos, o browser deverá efetuar a atualização automaticamente com os dados
simulados mais recentes do dispositivo Raspberry Pi, conforme mostrado na
figura 20.8.
Análise dos componentes IoT do Azure 315
Figura 20.8 A aplicação experimental utiliza uma ligação do WebSocket entre o seu browser e a
aplicação Web para efetuar a atualização automaticamente a cada dois segundos com os dados
mais recentes do dispositivo Raspberry Pi simulado.
(continuação)
A IoT do Azure oferece uma ótima plataforma para transmitir dados para o Azure. Nor-
malmente, precisa de processar esses dados, não apenas apresentá-los numa apli-
cação Web como nos exercícios. O capítulo 21 examina a computação sem servidor com
os serviços Logic Apps e Functions.
Para mostrar como estes serviços do Azure funcionam bem juntos, não elimine o grupo
de recursos e os serviços implementados neste capítulo. Irá utilizá-los logo no início do
capítulo 21 para ver como pode executar ações com base nos dados recebidos dos seus
dispositivos IoT. Certifique-se apenas de que volta ao dispositivo Raspberry Pi simulado
e seleciona o botão Parar. Caso contrário, esse limite de 8000 mensagens será utilizado
muito rapidamente!
1 Em que as áreas acha que os dispositivos IoT podem beneficiar a sua empresa? Se
não trabalha numa empresa agora, pense na pizzaria fictícia do Azure durante os
almoços de um mês.
2 O que poderia fazer para melhorar as coisas para os clientes com IoT?
3 Iria utilizar o Azure IoT Edge? Por que sim ou por que não?
4 Quais os outros serviços do Azure que iria, provavelmente, integrar para execu-
tar as suas aplicações?
5 Se tiver tempo suficiente na sua hora de almoço, experimente um dos acelera-
dores de soluções IoT do Azure em www.azureiotsolutions.com/Accelerators. Há
um cenário de Simulação de Dispositivos que cria uma VM e sensores simulados,
que é como o dispositivo Raspberry Pi simulado, mas muito maior! Leva alguns
minutos a aprovisionar todos os recursos necessários, mas, depois procure no
portal Azure para ver o que foi criado e como todas as partes funcionam juntas.
6 Consegue ver como os serviços dos capítulos anteriores, como o Storage e o Cos-
mos DB, são utilizados?
7 Que outros aceleradores de soluções IoT estão disponíveis? Algum deles
enquadra-se nas ideias que tinha para as suas próprias aplicações?
21
Computação sem servidor
Neste capítulo final, iremos contemplar o futuro da computação sem servidor. Se for
um programador, a ideia de containers (que examinámos no capítulo 19) pode ter
sido atraente, pois há menos necessidade de configurar a infraestrutura subjacente
para as suas aplicações. Se a resposta for afirmativa, vai adorar os componentes sem
servidor do Azure! E se for um administrador de TI que, de repente, se pergunta qual
será o seu trabalho se não houver servidores no futuro, não se preocupe! A computação
sem servidor pode ser mais um termo de marketing, mas muitas das competências de
servidor e de infraestruturas que possui vão continuar a ser aplicadas!
No Azure, duas principais ofertas oferecem funcionalidades de computação sem
servidor: Azure Logic Apps e Azure Function Apps. Neste capítulo, iremos explorar
o que cada serviço oferece e como podem trabalhar juntos. Para garantir que as suas
aplicações sem servidor podem comunicar entre si e transmitir dados, iremos tam-
bém abordar os serviços de mensagens, como o Azure Event Grid, o Service Bus e os
Event Hubs.
Função de
Saída da aplicação
aplicação pequena
Fornecedor de
Função de
aplicação pequena computação sem Saída da aplicação
servidor
Função de
Saída da aplicação
aplicação pequena
Figura 21.1 Num ambiente de computação sem servidor, cada aplicação é dividida em unidades pequenas
e discretas de componentes de aplicações. Cada componente é executado num fornecedor de computação
sem servidor, como o Azure Function Apps, e é produzida uma saída que pode ser consumida por outros
componentes da aplicação sem servidor ou outros serviços do Azure, como a IoT do Azure ou o Azure Storage.
Mensagem de entrada
será executado num ambiente seguro e isolado, e será cobrado com base no con-
sumo de memória por segundo. A figura 21.3 descreve o processo básico de uma
aplicação de função.
Figura 21.3 Tal como acontece com uma aplicação lógica, uma notificação ou acionador de evento,
geralmente, inicia uma função do Azure. A aplicação de função contém uma pequena unidade de
código que executa uma tarefa específica. Não há nenhuma infraestrutura a ser configurada ou
mantida. Apenas o pequeno bloco de código será necessário. No momento em que a execução do
código ficar concluída, a saída poderá ser integrada noutro serviço ou aplicação do Azure.
Não há VMs a serem mantidas e nenhuma aplicação Web será necessária. Não pre-
cisa de se preocupar com a elevada disponibilidade ou o dimensionamento, por-
que o serviço Azure Function Apps trata destas tarefas por si. Tudo o que fornece é
o seu código, sendo que a plataforma do Azure garante que, sempre que precisar
de executar esse código, os recursos ficarão disponíveis para processar o seu pedido.
As aplicações lógicas não requerem código, têm uma base de possíveis utilizadores
mais ampla. Os proprietários de aplicações de negócio ou as equipas de finanças e con-
tabilidade, por exemplo, podem criar as suas próprias aplicações lógicas sem precisar
de escrever códigos. O Function Apps fornece mais controlo e flexibilidade e permite
o processamento de eventos de maneira específica e uma integração melhor noutros
componentes da aplicação.
As aplicações lógicas e as aplicações de função fornecem uma maneira de executar
ações com base em acionadores sem precisar de manter nenhum ambiente de aplica-
ção ou infraestrutura. Um servidor em algum lugar no Azure executa a aplicação lógica
ou função, mas, do seu ponto de vista de administrador ou de programador de TI, estas
são tecnologias sem servidor.
Com as aplicações sem servidor, muitas vezes precisará de trocar mensagens e trans-
mitir dados reais da aplicação, não apenas resolver diagnósticos ou atualizações de
estado. É nesse ponto que precisa de uma plataforma de mensagens.
Figura 21.4 Os serviços do Azure, como a IoT do Azure e o Azure Storage, podem enviar notificações
para o Azure Event Grid. Estas notificações podem ocorrer quando uma mensagem for recebida de um
dispositivo IoT ou um ficheiro for carregado no armazenamento. O Azure Event Grid permite que outros
serviços e fornecedores subscrevam estas notificações para executar ações adicionais em resposta a
eventos.
Estes cenários servem para os casos de computação sem servidor, mas o Event Grid
também pode integrar recursos mais tradicionais, como as VMs e as aplicações Web.
Um grupo de recursos pode ser configurado para enviar notificações para o Event Grid,
por exemplo. Há muitas maneiras de criar uma VM, como no portal, com a CLI do
Azure ou com um modelo do Gestor de Recursos. Por isso, deve certificar-se de que a
VM está configurada corretamente para a Gestão de Atualizações através do Centro de
Segurança. Um runbook de Automation do Azure pode subscrever o Event Grid para
receber notificações sobre operações de criação de VMs. Em seguida, irá incorporar a
VM no serviço de Gestão de Atualizações e instalar as atualizações de segurança ou de
aplicação necessárias.
Figura 21.5 Os dispositivos IoT ligam-se ao IoT Hub e podem transmitir todos os dados do sensor. Pode haver
centenas ou milhares de dispositivos IoT ligados. O Azure Event Hubs trata de todos estes fluxos de dados
separados e permite que serviços como o Azure HDInsight processem os dados não processados nos clusters
Hadoop ou Spark para analisar e gerar relatórios.
322 Capítulo 21 Computação sem servidor
Msg Msg
Azure Service Bus
Figura 21.6 As mensagens são colocadas numa fila de service bus pelos componentes da aplicação,
uma aplicação de front-end, neste exemplo. Outras aplicações de middleware ou de back-end poderão
recolher estas mensagens e processá-las, conforme necessário. Aqui, uma aplicação de back-end
recolhe a mensagem e processa-a. As funcionalidades avançadas de mensagens incluem a garantia
da ordem das mensagens na fila, bloqueio de mensagens, tempos limite e reencaminhamentos.
De três serviços que lhe permitem transmitir, receber e processar dados entre aplica-
ções e serviços no Azure, qual o que utiliza e quando? A tabela 21.1 fornece uma reca-
pitulação de alto nível dos serviços Event Grid, Event Hubs e Service Bus.
Tabela 21.1 Cada serviço foi concebido para abranger um cenário diferente. O Event Grid permite
reagir a eventos, o Event Hubs permite transmitir grandes quantidades de dados e o Service Bus permite
transmitir mensagens entre serviços e componentes da aplicação.
As Logic Apps e Function Apps do Azure podem ser acionadas por todas as três plata-
formas de mensagens. Vamos criar um service bus que possa ser utilizado para acionar
uma aplicação lógica.
O dispositivo IoT
envia dados com um A mensagem é obtida
alerta de temperatura; da fila do Service Bus e
a mensagem A mensagem está disponível aciona a aplicação lógica.
é colocada na fila do para outros componentes
Service Bus. de aplicações ligados.
Msg Msg
Azure Service Bus
Figura 21.7 Quando o dispositivo Raspberry Pi IoT simulado envia dados de mensagens, uma leitura de
temperatura de 30 °C ou mais gera um alerta. As mensagens marcadas com este alerta são colocadas
num service bus. Em seguida, estas mensagens podem ser utilizadas para acionar aplicações lógicas.
Experimente agora
Para criar um service bus, conclua os passos a seguir:
Figura 21.8 Como as mensagens são transmitidas a partir de dispositivos IoT para um IoT Hub, podem
ser encaminhadas para endpoints específicos com base nos critérios definidos por si. As mensagens que
contêm um alerta de temperatura no corpo da mensagem podem ser encaminhadas para um endpoint
que utiliza a fila do service bus. Em seguida, as mensagens colocadas na fila do service bus que contêm
um alerta de temperatura podem ser utilizadas para acionar coisas como aplicações lógicas
ou aplicações de função do Azure.
Experimente agora
Para configurar um IoT Hub para encaminhar mensagens de alerta de temperatura para
o service bus, conclua os passos a seguir:
numa fila de mensagens do service bus. Contudo, ainda não tem uma aplicação, não
podendo fazer nada com os dados na fila do service bus. O que pode querer fazer com
um alerta de temperatura? O envio de uma notificação por e-mail é um exemplo
comum. Por isso, vamos ver como pode acionar uma aplicação lógica sempre que uma
mensagem for colocada na fila do service bus.
Figura 21.9 Cada mensagem recebida na fila do service bus do IoT Hub aciona a aplicação lógica.
Quando a aplicação lógica for executada, enviará uma notificação por e-mail por meio de um fornecedor
de e-mail definido.
Experimente agora
Para criar uma aplicação lógica, conclua os passos que se seguem:
Figura 21.10 Procure e selecione o fornecedor de e-mail atual, como o Gmail ou o Outlook.com.
Também pode escolher SMTP - Enviar um E-mail para configurar um fornecedor diferente
manualmente.
Figura 21.11 O dispositivo Raspberry Pi simulado envia uma mensagem, a cada dois segundos, ao IoT
Hub que contém as leituras do sensor de temperatura. Se a temperatura estiver acima de 30 °C, será
observado um alerta de temperatura. O IoT Hub encaminha qualquer mensagem que contenha um alerta
de temperatura para uma fila do service bus. As mensagens nesta fila acionam uma aplicação lógica do
Azure para ser executada. A aplicação lógica é ligada a um fornecedor de e-mail, como o Outlook ou
Gmail, e envia uma notificação por e-mail sobre o aviso de temperatura do dispositivo IoT.
Experimente agora
Para executar o seu dispositivo Raspberry Pi simulado e testar a sua aplicação lógica,
conclua os passos a seguir:
Figura 21.12 A aplicação lógica acionará a aplicação de função. A mensagem recebida na fila do
service bus será passada para a função. O código na aplicação de função analisa a mensagem, extrai a
temperatura e devolve esse valor para a aplicação lógica. Leva alguns milissegundos para a aplicação de
função executar este código. Por isso, o custo de execução destas tarefas de computação é equivalente
a uma fração de um cêntimo.
Criação de uma aplicação de função do Azure para analisar dados do dispositivo IoT 329
Experimente agora
Para criar uma aplicação de função e ativá-la a partir da aplicação lógica, conclua
os passos a seguir:
Figura 21.13 Arraste a ação Enviar um E-mail abaixo da função analyzeTemperature. Selecione
o final do Corpo da mensagem e a caixa de diálogo Conteúdo dinâmico será apresentada. Para inserir
o valor de temperatura computado pela aplicação de função, selecione o Corpo da mensagem na função
analyzeTemperature.
Criação de uma aplicação de função do Azure para analisar dados do dispositivo IoT 331
Service bus
Msg
Figura 21.14 Conforme as mensagens são recebidas do dispositivo Raspberry Pi simulado, todas as mensagens
que contêm um alerta de temperatura são encaminhadas para o endpoint da fila do service bus. As mensagens na
fila do service bus acionam uma aplicação lógica, que passa a mensagem para uma aplicação de função. Uma
função JavaScript analisa a leitura de temperatura e devolve a mesma à aplicação lógica, que envia uma
notificação por e-mail que inclui a temperatura registada por um sensor no dispositivo IoT.
335
336 índice
H
F
Hashicorp 86
Federal Information Processing Standard (FIPS) 218 Hora Universal Coordenada (UTC) 196
ferramentas de terceiros 86 horário de produção 46
Ficheiro MOF (Managed Object Format) 280 Horários de cópia de segurança 196–198
ficheiro MOF (Managed Object Format) 280 host de bastião 23–24
filtrar 67–68 HPC (computação de alto desempenho) 267
FIPS (Federal Information Processing Standard) 218 HSMs (módulos de segurança de hardware) 212,
fluxos de IP, verificar 183–184 217–218
fórum, para este livro 5 HTTP 20, 168, 206
FQDN (nome de domínio totalmente qualificado) 63 HTTPS 20, 168, 206
função concat, Gestor de Recursos 85 Hubs de Eventos do Azure 321–322
função copyIndex() 84, 98, 102, 104 Hyper-V 15
função de Administrador de acesso do utilizador 78
função de Contribuidor de Máquina Virtual 79
função de Contribuidor do Site 79 I
função de Contribuidor 78
função de copiar, Gestor de Recursos 84 IA (inteligência artificial) 253–268
função de Proprietário 78 Bots de Aplicação Web
Função de Trabalho Híbrida de Automatização 272 criar com o LUIS 264–267
funcionamento em rede. Consulte Rede do Azure criar 260
Gardner, Lyza Danger 315 executar com o LUIS 264–267
descrição geral de 254–255
LUIS 261 – 264
G machine learning e 254–259
Serviços Cognitivos do Azure 259–260
Gateway de Aplicação do Azure 108 IaaS (Infraestrutura como Serviço) 9, 14, 33–34
Gateway de Aplicação 107–108 IaC (infraestrutura como código) 82
Gerente de configuração local (LCM) 278 identidades geridas atribuídas pelo sistema 222
Gestão de Atualizações do Azure 241–249 identidades geridas atribuídas pelo utilizador 222
OMS (Operations Management Suite) 243 idiomas suportados 34–35
rever e aplicar atualizações 245–249 IIS (Serviços de informação Internet) 29, 233
Gestor de Tráfego IIS (Serviços de informação Internet) 29, 233
Área de resolução de problemas 183 Imagens, VM 16–17
criar perfis em 164–166 implementar sites HTML 39–42
distribuição global de tráfego para as instâncias mais informações de falha de sistema 180
próximas 167–173 infraestrutura como código (IaC) 82
encaminhamento global e resolução com 162–173 Infraestrutura como Serviço (IaaS) 9, 14, 33
implementar aplicações Web em 174 injetar certificados 229–232
Gestor de Tráfego do Azure. Consulte Gestor de Tráfego instalar comando 27
Git 12 instalar servidores Web 24–27
formação 37 instâncias, criar 290–292
implementar sites HTML de exemplo com 39–42 integração contínua (CI) 75
palavra-passe para, repor 314 inteligência artificial. Consulte IA
GitHub interface da linha de comandos (CLI) 12
Automatização do Azure e controlo de origem intervalo de pesquisa de pontos finais 168
com 274 Intervalos de endereços IP 60
conta para, criar 7
descrição geral de 39
Exemplos de início rápido do Azure em 87 J
recursos 333
repositório para este livro 5 Janela Descrição Geral da Gestão de Atualizações 243
GPU (unidade de processamento gráfico) 267 Janela descrição geral do centro de segurança 236
GRS (armazenamento georredundante) 56 JavaScript on Things (Gardner) 315
340 índice
proteger e controlar o tráfego com NSGs 64–68 RPO (objetivo de ponto de recuperação) 194–195
associar NSGs a sub-redes 66–67 RTO (objetivo de tempo de recuperação) 195–196
criar NSGs 64–65 RPO (objetivo de ponto de recuperação) 193–195
criar regras de filtragem de NSGs 67–68 RTO (objetivo de tempo de recuperação) 193,
redes privadas virtuais (VPNs) 19, 36, 38 195–196
redes virtuais 58–64 runbooks, para Automatização do Azure 274–277
cartões de interface 61 descrição geral de 272–274
criar sub-redes 59 executar 182
criar 59 executar 276–277
endereços IP públicos 62–64 ver a saída de 276–277
resolução DNS 62–64
redimensionar VMs 126–127
redundância S
benefícios de 90–91
de VMs com Conjuntos de Disponibilidade 96–102 SaaS (Software como Serviço) 10
descrição geral de 56–57 segredos
redundância de infraestrutura, com Zonas de criar 219–221
Disponibilidade 95 obter a partir de VMs com MSIs 224–229
criar recursos de rede em Zonas de segurança 115
Disponibilidade 94–95 separação de funções 62
criar VMs em Zonas de Disponibilidade 95 Server Message Block (SMB) 53
redundância global 149–152 Service Bus
redundância. Consulte também redundância de criar 322–325
infraestrutura, com Zonas de Disponibilidade integrar com os hubs IoT 322–325
registos de alias 160 servicePrincipalName 224
registos de diagnóstico 42–44 serviço Azure Machine Learning 258
registos de host IPv4 160 serviço Content Moderator 259
registos de host IPv6 160 Serviço de decisão 259
registos de início de autoridade (SOA) 160 Serviço de idioma 259
registos de serviço 160 Serviço de metadados da instância (IMDS) 222
registos de servidor de nomes 160 Serviço de metadados da instância (IMDS) 222
registos indicadores 160 Serviço de pesquisa 259
registos. Consulte registos de diagnóstico Serviço de reconhecimento de orador 259
Regra AllowAzureLoadBalancerInBound 67 Serviço facial 259
Regra AllowVnetInBound 67 serviço Imagem Digitalizada 259
regra default-allow-ssh 241 Serviço personalizado 259
Regra DenyAllInBound 67, 184 serviço Pesquisa Personalizada do Bing 259
regras de dimensionamento automático 133–136 serviço Sugestão Automática do Bing 259
Regras DenyAll 185 serviço Tradução de Texto 259
remotas 41 serviço Visão 259
resolução de problemas 175 Serviços Cognitivos do Azure 259–260
alertas 178–182 serviços com redundância entre zonas 93
diagnóstico da VM 175–177 Serviços de voz 259
métricas de desempenho 178–182 Serviços zonais 93
Observador de Rede do Azure 182–188 Servidor Web LAMP 27, 72
capturar pacotes de rede 186–188 servidores de bases de dados, escala vertical para 126
ver regras do NSG eficazes 184–186 servidores Web
verificar fluxos de IP 183–184 em ação 28–29
Plataforma Azure 31–32 instalar 24–27
resolução DNS 62–64, 158 shell Bash 12
resolução, com o Gestor de Tráfego 162–173 símbolo de acento circunflexo 27
criar perfis do Gestor de Tráfego 164–166 sinks 180
distribuição global de tráfego para a instância mais sistema de numeração baseado em 99
próxima 167–173 sistema operativo de datacenter (DC/OS) 293
REST (Representational State Transfer) 31 sistemas de numeração, baseados em zero 99
restaurar máquinas virtuais 198–201 sites HTML, implementar 39–42
concluir restauro de VMs 199–201 sites, executar no Kubernetes 295–297
restauro ao nível do ficheiro 199 SMB (Server Message Block) 53
restauro ao nível do ficheiro 199 Software como serviço (SaaS) 10
retenção 193–196
índice 343
SONiC (Software for Open Networking in the TTL (Time to Live) 167
Cloud) 11
SPF (Estrutura de proteção do remetente) 160
SQL (Linguagem de consulta estruturada) 53, 142 U
SSDs de alto desempenho 18
SSDs padrão 18–19 Ubuntu Linux 14, 26
SSE (Encriptação do Serviço de Umali, Rick 37
Armazenamento) 209–210 UTC (Hora universal coordenada) 196
SSH (Secure Socket Shell) Utilitários do Azure DevOps 7
agentes para ligar a VMs 70–72
ligar a VMs com 24–27
streaming de dados do hub IoT 309–315 V
streaming de ficheiros de registo 43 variáveis 82, 84, 89, 271
Structured Query Language (SQL) 53, 142 variável access_token 226
sub-redes variável connectionString 307
associar NSGs a 66–67 variável database_password 228
criar 59 variável iotconnectionstring 312
Suporte a Longo Prazo (LTS) 22 verificar fluxos de IP 183–184
VHD (disco rígido virtual) 53
virtual machines de ciência de dados (DSVMs) 258
T virtualização 10–11
tamanhos de VM com otimização de memória 17 VM da série B 18
tamanhos de VM de utilização geral 17 VMs (máquinas virtuais)
Tamanhos de VM GPU 17 adicionar discos a 50–52
tamanhos de VM otimizados para armazenamento 17 armazenamento 47–50
tamanhos de VM otimizados para computorização 17 armazenamento padrão vs. premium 48–49
tecla de função 332 discos de dados 49–50
Terraform 86 discos temporários 49–50
teste 41 opções de colocação de discos em cache 50
Time to Live (TTL) 167 atribuir grupos a conjuntos de back-end 116–119
tipos de recursos 84–85 configuração 15–20
Tipos de registo de DNS do Azure 160 Armazenamento do Azure 18–19
token de assinatura de acesso partilhado (SAS) 87 Imagens de VM e 16-17
token de SAS (assinatura de acesso partilhado) 87 redes virtuais 19–20
tráfego tamanhos de VM 17–18
definir a distribuição com regras do balanceador de configurar com balanceadores de carga 119–122
carga 112–114 conjuntos de dimensionamento 129–136
distribuir globalmente para as instâncias mais criar regras de dimensionamento automático 133–
próximas 167–173 136
encaminhar o tráfego direto com regras de Tradução criar 131–133
de Endereços de Rede 114–116 instalar aplicações em 139
proteger e controlar com NSGs 64–68 criar 14–32, 69–70
associar NSGs a sub-redes 66–67 com balanceadores de carga 119–122
criar NSGs 64–65 de browsers 22
criar regras de filtragem de NSGs 67–68 em Zonas de Disponibilidade 95
tráfego de rede limpar os recursos 30
encaminhar 158–174 redução de custos e 18
gerir 158–174 resolução de problemas do Azure 31–32
tráfego direto, encaminhar 114–116 Windows VM 29–30
tráfego seguro, criar aplicações Web com 68–72 desalocar 30
criar ligações de rede de acesso remoto 68–69 diagnóstico 175–177
criar VMs 69–70 dimensionar verticalmente 125–127
utilizar agentes SSH para ligar a VMs 70–72 dimensionar verticalmente 127
tráfego Web distribuir pelos Conjuntos de Disponibilidade 98–
criar regras para permitir 28 101
permitir o alcance às VMs 27–29 eliminar 30
Transferência de estado representacional (REST) 31 encriptação de 211–214
Trifa, Vlad M. 315 armazenar chaves de encriptação no Azure Key
troca com pré-visualização 46 Vault 211–213
344 índice