Partilhar via


Operando numa rede bloqueada

A aplicação CycleCloud e os nós de cluster podem funcionar em ambientes com acesso limitado à Internet, embora existam um número mínimo de portas TCP que devem permanecer abertas.

Instalar o Azure CycleCloud numa rede bloqueada

O CycleCloud VM deve ser capaz de se conectar a uma série de APIs Azure para orquestrar VMs de cluster e autenticar para O Diretório Ativo Azure. Uma vez que estes APIs utilizam HTTPS, o CycleCloud requer acesso HTTPS de saída a:

  • management.azure.com (Gestão Azure ARM)
  • login.microsoftonline.com (Azure AD)
  • watson.telemetry.microsoft.com (Telemetria Azure)
  • dc.applicationinsights.azure.com (Aplicação Azure Insights)
  • dc.applicationinsights.microsoft.com (Aplicação Azure Insights)
  • dc.services.visualstudio.com (Aplicação Azure Insights)
  • ratecard.azure-api.net (Dados de Preços Azure)

A API de gestão está hospedada regionalmente, e os intervalos de endereços IP públicos podem ser encontrados aqui.

O Azure AD login faz parte dos intervalos de endereços APIs e IP comuns da Microsoft 365 para o serviço.

Os intervalos de endereço IP Azure Insights e Log Analytics podem ser consultados aqui.

O Azure CycleCloud deve poder aceder às contas do Azure Storage. A forma recomendada de fornecer acesso privado a este serviço e a qualquer outro serviço Azure suportado é através de Rede Virtual Service Endpoints.

Se utilizar grupos de segurança de rede ou o Azure Firewall limitar o acesso de saída aos domínios necessários, então é possível configurar o Azure Cyclecloud para encaminhar todos os pedidos através de um representante HTTPS. Ver: Utilização de um Web Proxy

Configurar um Grupo de Segurança da Rede Azure para o CicloCloud VM

Uma forma de limitar o acesso à Internet de saída a partir do CycleCloud VM sem configurar o Azure Firewall ou um representante HTTPS é configurar um rigoroso Grupo de Segurança da Rede Azure para a sub-rede do CycleCloud VM. A forma mais simples de o fazer é utilizar tags de serviço na sub-rede ou no VM level Network Security Group para permitir o acesso a azure de saída necessário.

  1. Configure um ponto final de serviço de armazenamento para a sub-rede para permitir o acesso de CycleCloud a Azure Storage

  2. Adicione a seguinte regra de saída NSG para negar o acesso de saída por padrão usando a Etiqueta de serviço de destino "Internet":

Prioridade Name Porta Protocolo Origem Destino Ação
4000 BlockOutbound Qualquer Qualquer Qualquer Internet Negar
  1. Adicione as seguintes regras de saída NSG para permitir o acesso de saída aos serviços Azure necessários por marca de serviço de destino:
Prioridade Name Porta Protocolo Origem Destino Ação
100 AllowAzureStorage 443 TCP Qualquer Armazenamento Permitir
101 PermitirAtivadDirectório 443 TCP Qualquer AzureActiveDirectory Permitir
102 AllowAzureMonitor 443 TCP Qualquer AzureMonitor Permitir
103 AllowAzurerm 443 TCP Qualquer AzureResourceManager Permitir

Comunicações internas entre nós de cluster e CycleCloud

Estas portas precisam de estar abertas para permitir a comunicação entre os nós de cluster e o servidor CycleCloud:

Name Origem Destino Serviço Protocolo Intervalo de Portas
amqp_5672 Nó de cluster CycleCloud AMQP TCP 5672
https_9443 Nó de cluster CycleCloud HTTPS TCP 9443

Lançamento de clusters Azure CycleCloud numa rede bloqueada

Nota

Correr nós de cluster numa sub-rede sem acesso à Internet de saída é totalmente suportado hoje em dia, mas é um tópico avançado que muitas vezes requer uma imagem personalizada ou personalização dos tipos e projetos de cluster CycleCloud predefinidos ou ambos.

Estamos a atualizar ativamente os tipos e projetos de cluster para eliminar a maior ou toda a obra. Mas, se encontrar falhas com o seu tipo de cluster ou projeto no seu ambiente bloqueado, por favor considere abrir um pedido de assistência de Apoio.

Executar VMs ou clusters Cyclecloud numa rede virtual ou sub-rede com acesso à Internet de saída geralmente requer o seguinte:

  1. O Azure Cyclecloud deve ser acessível a partir dos VMs do cluster para obter uma funcionalidade completa. Uma das seguintes opções:
    1. Os VMs do cluster devem ser capazes de ligar ao Azure Cyclecloud diretamente através de HTTPS e AMQP, ou
    2. A funcionalidade Cyclecloud ReturnProxy deve ser ativada no tempo de criação do cluster e o ciclocloud em si deve ser capaz de se conectar ao ReturnProxy VM via SSH
  2. Todos os pacotes de software exigidos pelo cluster devem ser:
    1. Pré-instalado numa imagem gerida personalizada para os VMs do cluster, ou
    2. Disponível num espelho de repositório de pacote acessível a partir dos VMs, ou
    3. Copiado para o VM do Azure Storage e instalado diretamente por um projeto Cyclecloud
  3. Todos os nós cluster devem poder aceder às contas de Armazenamento Azure. A forma recomendada de fornecer acesso privado a este serviço e a qualquer outro serviço Azure suportado é permitir um Rede Virtual Service Endpoint para armazenamento Azure.

Projeto Atualizações do GitHub

Cyclecloud irá descarregar projetos de cluster do GitHub durante a fase de orquestração "Staging". Este download ocorrerá após a instalação inicial, após a atualização do Cyclecloud, ou quando iniciar um conjunto de um determinado tipo pela primeira vez. Num ambiente bloqueado, o tráfego de saída HTTPS para github.com pode ser bloqueado. Neste caso, a criação de nóduras durante a fase de fase de fase de recursos de encenação falhará.

Se o acesso ao GitHub puder ser aberto temporariamente durante a criação do primeiro nó, o CycleCloud preparará os ficheiros locais para todos os nós subsequentes. Se o acesso temporário não for possível, os ficheiros necessários podem ser descarregados de outra máquina e copiados para o CycleCloud.

Primeiro determine qual o projeto e versão que o seu cluster necessitará, por exemplo, Slurm 2.5.0. É normalmente o número de versão mais alto da base de dados para um determinado projeto.

/opt/cycle_server/cycle_server execute 'select * from cloud.project where name == "slurm"'

AdType = "Cloud.Project"
Version = "2.5.0"
ProjectType = "scheduler"
Url = "https://github.com/Azure/cyclecloud-slurm/releases/2.5.0"
AutoUpgrade = false
Name = "slurm"

Esta versão do projeto e todas as dependências encontram-se na [etiqueta de lançamento] (https://github.com/Azure/cyclecloud-slurm/releases/tag/2.5.0). Todos os artefactos para uma libertação devem ser descarregados. Primeiro descarregue o artefacto de código e crie um diretório blobs para as dependências adicionais.

wget https://github.com/Azure/cyclecloud-slurm/archive/refs/tags/2.5.0.tar.gz
tar -xf 2.5.0.tar.gz 
cd cyclecloud-slurm-2.5.0 && mkdir blobs 
#... download all other release artifacts to the /blobs directory with wget ...
wget -P "blobs/" https://github.com/Azure/cyclecloud-slurm/releases/download/2.6.1/cyclecloud_api-8.1.0-py2.py3-none-any.whl
#... copy all the files to the Cyclecloud server
#... then on the Cyclecloud server:
cyclecloud project build
mkdir -p /opt/cycle_server/work/staging/projects/slurm/2.5.0
mkdir -p /opt/cycle_server/work/staging/projects/slurm/blobs
cp build/slurm/* /opt/cycle_server/work/staging/projects/slurm/2.5.0/
cp blobs/* /opt/cycle_server/work/staging/projects/slurm/blobs/
chown -R cycle_server:cycle_server /opt/cycle_server/work/staging

Uma vez que estes ficheiros tenham sido encenados localmente, o Cyclecloud irá detetá-los e não tentará descarregá-los do GitHub.