Este cenário de exemplo descreve uma solução de alta disponibilidade para um servidor de salto executado no Azure. Ele usa uma ferramenta de código aberto chamada Apache Guacamole, que tem funcionalidade semelhante à do Azure Bastion.
Apache®, Apache Guacamole e o logotipo flame são marcas registradas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou em outros países. Nenhum endosso da Apache Software Foundation está implícito no uso dessas marcas.
Arquitetura
A arquitetura inclui um balanceador de carga público que recebe solicitações de acesso externo e as direciona para duas máquinas virtuais (VMs) na camada da Web. A camada web se comunica com a camada de dados, onde um banco de dados MySQL armazena informações de login, eventos de acesso e conexões.
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de dados
- Um usuário inicia uma conexão pela Internet.
- A conexão do usuário é estabelecida com o balanceador de carga público do Azure.
- O balanceador de carga público do Azure recebe acesso externo e direciona o tráfego para as duas VMs na camada da Web.
- A camada da Web se comunica com o Banco de Dados do Azure para MySQL na camada de dados. Este banco de dados armazena informações de entrada, eventos de acesso e conexões.
- A conexão é estabelecida com os clientes de destino via Secure Shell (SSH), Virtual Network Computing (VNC) ou protocolo RDP (Remote Desktop Protocol).
Componentes
- Azure Load Balancer: um serviço para distribuir carga (tráfego de rede de entrada) em um grupo de recursos ou servidores back-end.
- Rede Virtual do Azure: O bloco de construção fundamental para sua rede privada no Azure.
- Endereços IP públicos: um serviço que permite que os recursos da Internet comuniquem a entrada com os recursos do Azure.
- A Proteção contra DDoS do Azure, combinada com as práticas recomendadas de design de aplicativos, fornece recursos aprimorados de mitigação de DDoS para fornecer mais defesa contra ataques DDoS. Você deve habilitar a Proteção DDOS do Azure em qualquer rede virtual de perímetro.
- Grupos de segurança de rede: um serviço que filtra o tráfego de rede que viaja de e para os recursos do Azure em uma rede virtual do Azure.
- Conjunto de disponibilidade: um agrupamento lógico de VMs que permite que o Azure forneça redundância e disponibilidade.
- Banco de Dados do Azure para MySQL: Um banco de dados MySQL totalmente gerenciado como um serviço.
Alternativas
Se você não precisar de tanto controle quanto a solução descrita aqui fornece, poderá usar o Azure Bastion, um serviço totalmente gerenciado que oferece acesso RDP e SSH de alta segurança a VMs sem qualquer exposição por meio de endereços IP públicos.
Detalhes do cenário
O Apache Guacamole é um gateway de área de trabalho remota sem cliente que suporta protocolos padrão como VNC, RDP e SSH. Como não tem cliente, os usuários não precisam instalar nada. Eles apenas usam um navegador da Web para acessar remotamente suas VMs.
Para obter mais informações sobre Guacamole e seus componentes internos, consulte Implementação e arquitetura.
Para fornecer alta disponibilidade, esta solução:
- Usa conjuntos de disponibilidade para VMs. Para contratos de nível de serviço (SLAs), consulte SLAs para máquinas virtuais.
- Usa o Banco de Dados do Azure para MySQL, um banco de dados gerenciado, escalável e de alta disponibilidade. Para SLAs, consulte SLAs para o Banco de Dados do Azure para MySQL.
A solução também utiliza:
- Balanceador de carga.
- VMs com NGINX como proxy reverso.
- Tomcat como um serviço de aplicação.
- Certbot para obter certificados SSL (Secure Sockets Layer) gratuitos da Let's Encrypt.
Potenciais casos de utilização
- Aceda aos seus computadores a partir de qualquer dispositivo. Como o Guacamole requer apenas um navegador razoavelmente rápido e compatível com os padrões, ele é executado em muitos dispositivos, incluindo telefones celulares e tablets.
- Hospede um computador na nuvem. Os computadores hospedados em hardware virtualizado são mais resistentes a falhas. Com a disponibilidade atual de recursos de computação sob demanda, Guacamole é uma maneira perfeita de acessar máquinas que são acessíveis apenas pela internet.
- Forneça fácil acesso a um grupo de pessoas. Você pode usar o Guacamole para centralizar o acesso a um grande grupo de máquinas e especificar por usuário quais máquinas podem ser acessadas. Em vez de lembrar uma lista de máquinas e credenciais, os usuários só precisam entrar em um servidor central e selecionar uma das conexões listadas.
- Adicione acesso remoto HTML5 à sua infraestrutura existente. Como o Guacamole é uma API e não apenas um aplicativo Web, você pode usar os principais componentes e bibliotecas fornecidos pelo projeto Guacamole para adicionar recursos de acesso remoto HTML5 a um aplicativo existente. Você não precisa usar o aplicativo web Guacamole principal. Você pode escrever ou integrar com seus próprios aplicativos com bastante facilidade.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que você pode usar para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Fiabilidade
A confiabilidade garante que seu aplicativo possa atender aos compromissos que você assume com seus clientes. Para obter mais informações, consulte Visão geral do pilar de confiabilidade.
A resiliência desta solução depende dos modos de falha de serviços individuais, como Máquinas Virtuais do Azure, Banco de Dados do Azure para MySQL e Azure Load Balancer. Para mais informações, consulte estes artigos:
- Design para confiabilidade
- Resiliência no Azure
- Lista de verificação de resiliência para serviços específicos do Azure
Para obter informações sobre recuperação de desastres, consulte Continuidade de negócios e recuperação de desastres.
Para VMs do Azure na camada da Web, você pode usar conjuntos de disponibilidade para criar um agrupamento lógico de VMs que forneça redundância e disponibilidade. Recomendamos pelo menos duas VMs por conjunto de disponibilidade para criar um aplicativo de alta disponibilidade e atender ao SLA do Azure.
Como o Banco de Dados do Azure para MySQL é um banco de dados gerenciado como um serviço, sua arquitetura é otimizada para alta disponibilidade interna. Para obter informações sobre SLAs, consulte SLAs para o Banco de Dados do Azure para MySQL.
Segurança
A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.
Talvez você queira adicionar o Firewall de Aplicativo Web do Azure a esta solução. Ele ajuda a proteger seu aplicativo contra vulnerabilidades comuns. Esta opção do Gateway de Aplicativo do Azure usa regras do Open Web Application Security Project (OWASP) para ajudar a evitar ataques como scripts entre sites, sequestro de sessão e outras explorações.
Como uma camada adicional de proteção, certifique-se de usar os grupos de segurança de rede do Azure para filtrar o tráfego de rede que viaja de e para os recursos do Azure na rede virtual do Azure.
Você também deve considerar o Link Privado para o Banco de Dados do Azure para MySQL. Você pode usar o Private Link para se conectar a serviços de plataforma como serviço (PaaS) no Azure por meio de um ponto de extremidade privado. O Private Link essencialmente traz os serviços do Azure para dentro de sua rede virtual privada. Os recursos PaaS podem ser acessados através do endereço IP privado, assim como qualquer outro recurso na rede virtual.
Por fim, siga estas diretrizes de segurança ao implementar esta solução.
Otimização de custos
A otimização de custos consiste em encontrar maneiras de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.
Para entender melhor o custo de execução desse cenário no Azure, use a calculadora de preços.
Para obter mais informações sobre o custo desta solução, consulte:
- Preços de máquinas virtuais Linux
- Preços da Base de Dados do Azure para MySQL
- Preços do Load Balancer
- Azure Reserved Virtual Machine Instances
Excelência operacional
A excelência operacional abrange os processos operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Visão geral do pilar de excelência operacional.
A excelência operacional aplica confiabilidade, previsibilidade e operações automatizadas à sua arquitetura para manter seu aplicativo em execução em produção. As implementações têm de ser fiáveis e previsíveis. Implantações automatizadas reduzem a chance de erro humano.
Implemente disciplinas de engenharia de software em todo o seu ambiente, incluindo estas práticas:
- Implementar Infraestrutura como Código.
- Crie e libere com integração contínua e pipelines de entrega contínua (CI/CD).
- Use testes automatizados.
Para obter mais informações, consulte Princípios de design de excelência operacional.
Eficiência de desempenho
Eficiência de desempenho é a capacidade da sua carga de trabalho para dimensionar para satisfazer as exigências que os utilizadores lhe colocam de forma eficiente. Para obter mais informações, consulte Visão geral do pilar de eficiência de desempenho.
Para atingir esse objetivo, considere usar os Conjuntos de Escala de Máquina Virtual do Azure, que você pode usar para criar e gerenciar um grupo de VMs com balanceamento de carga. O número de instâncias de VM pode aumentar ou diminuir automaticamente em resposta à demanda ou de acordo com um cronograma definido.
Implementar este cenário
Recomendamos que você use o ambiente Bash no Azure Cloud Shell para implantar essa solução. Se preferir executar comandos no seu próprio ambiente Windows, Linux ou macOS, instale a CLI do Azure.
Para conhecer as etapas de implantação, consulte Implantando o Apache Guacamole no Azure.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Autor principal:
- Ricardo Macedo Martins - Portugal | Engenheiro de Clientes Sr.
Outros contribuidores:
- Mick Alberts - Brasil | Redator Técnico
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
- Documentação do Apache Guacamole
- Documentação do Azure Bastion
- What is Azure Load Balancer? (O que é o Balanceador de Carga do Azure?)
- Base de Dados do Azure para MySQL
- Módulo de aprendizagem: Introdução ao Azure Bastion
- Módulo de aprendizagem: Introdução ao Azure Load Balancer