Compartilhar via


Balancear carga tráfego de cliente do HPC Cache

Este artigo explica alguns métodos básicos para balancear o tráfego do cliente para todos os pontos de montagem no Azure HPC Cache.

Cada HPC Cache tem pelo menos três endereços IP diferentes e os caches com valores de taxa de transferência maiores podem ter até 12. É importante usar todos os endereços IP para obter os benefícios completos do Azure HPC Cache.

Existem várias opções para balancear a carga de montagens de cliente:

  • Escolha manualmente um IP de montagem diferente para cada cliente
  • Incluir rotação de endereço IP em scripts de inicialização do cliente
  • Configurar um sistema DNS para rotear automaticamente solicitações de cliente entre todos os endereços disponíveis (DNS round robin)

O sistema de balanceamento de carga correto para você depende da complexidade do fluxo de trabalho, do número de endereços IP no cache e de um grande número de outros fatores. Consulte o assistente do Azure se precisar de ajuda para decidir qual abordagem é melhor para você.

Atribuir endereços IP manualmente

Os endereços IP de montagem do cache são mostrados nas páginas de visão geral e de montagem do cache no portal do Azure e na mensagem de sucesso que é impressa quando você cria um cache com a CLI do Azure ou o PowerShell.

Você pode usar a página de instruções de Montagem para gerar um comando de montagem personalizado para cada cliente. Selecione todos os valores de endereço de montagem do Cache ao criar vários comandos.

Leia Montar o HPC Cache do Azure para obter detalhes.

Usar balanceamento de carga automatizado por script

Há várias maneiras de girar de forma programática as montagens de cliente entre os endereços IP disponíveis. Aqui estão dois exemplos.

Exemplo de cksum de script de comando de montagem

Este comando de montagem de exemplo usa a função cksum de hash e o nome do host do cliente para distribuir automaticamente as conexões do cliente entre todos os endereços IP disponíveis em seu HPC Cache. Se todos os computadores cliente tiverem nomes de host exclusivos, você poderá executar esse comando em cada cliente para garantir que todos os pontos de montagem disponíveis sejam usados.

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.0.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/${NAMESPACE} /mnt

Para usar este exemplo em seu fluxo de trabalho, personalize estes termos:

  • X= Na expressão, use uma lista separada por espaço de todos os endereços de montagem do cache, em ordem classificada.

    A expressão (X=(10.0.0.{7..9}) define a variável X como este conjunto de endereços de montagem: {10.0.0.7, 10.0.0.8, 10.0.0.9}. Use o endereço IP base do cache e os endereços exatos mostrados na página Visão geral do cache. Se os endereços não forem consecutivos, liste-os todos em ordem numérica.

  • Use o número real de endereços IP de montagem que o seu cache possui no termo %3 (normalmente 3, 6, 9 ou 12).

    Por exemplo, use %9 se o cache expor nove endereços IP de montagem de cliente.

  • Para a expressão ${NAMESPACE}, use o caminho do namespace de destino de armazenamento que o cliente acessará.

    Você pode usar uma variável definida (NAMESPACE no exemplo) ou passar o valor literal.

    O exemplo de comando no final desta seção usa um valor literal para o caminho do namespace. /blob-target-1

  • Se você quiser usar um caminho local personalizado em seus computadores cliente, altere o valor /mnt para o caminho desejado.

Aqui está um exemplo de um comando de montagem de cliente populado:

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.7.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/blob-target-1 /hpc-cache/blob1 

Exemplo da função round robin

Este exemplo de código usa endereços IP do cliente como um elemento randomizador para distribuir clientes para todos os endereços IP disponíveis do HPC Cache.

function mount_round_robin() {

  # to ensure the clients are spread out somewhat evenly the default
  # mount point is based on this client's IP octet4 % number of HPC cache mount IPs.

  declare -a MOUNT_IPS="($(echo ${NFS_IP_CSV} | sed "s/,/ /g"))"
  HASH=$(hostname | cksum | cut -f 1 -d ' ')
  DEFAULT_MOUNT_INDEX=$((${HASH} % ${#MOUNT_IPS[@]}))
  ROUND_ROBIN_IP=${MOUNT_IPS[${DEFAULT_MOUNT_INDEX}]}

  DEFAULT_MOUNT_POINT="${BASE_DIR}/default"

  # no need to write again if it is already there
  if ! grep --quiet "${DEFAULT_MOUNT_POINT}" /etc/fstab; then
      echo "${ROUND_ROBIN_IP}:${NFS_PATH} ${DEFAULT_MOUNT_POINT} nfs hard,proto=tcp,mountproto=tcp,retry=30 0 0" >> /etc/fstab
      mkdir -p "${DEFAULT_MOUNT_POINT}"
      chown nfsnobody:nfsnobody "${DEFAULT_MOUNT_POINT}"
  fi
  if ! grep -qs "${DEFAULT_MOUNT_POINT} " /proc/mounts; then
      retrycmd_if_failure 12 20 mount "${DEFAULT_MOUNT_POINT}" || exit 1
  fi
}

Usar balanceamento de carga DNS

Esta seção explica as noções básicas de configuração de um sistema DNS para distribuir conexões de cliente para todos os pontos de montagem em seu HPC Cache do Azure. Esse método não contabiliza a quantidade de tráfego que cada cliente gera, mas garante que os clientes estejam distribuídos uniformemente por todas as interfaces do cache em vez de usar apenas uma ou duas.

Este documento não inclui instruções para configurar e gerenciar um servidor DNS para seus clientes no ambiente do Azure.

O DNS não é necessário para montar clientes usando o protocolo NFS e endereços IP. O DNS será necessário se você quiser usar nomes de domínio em vez de endereços IP para alcançar sistemas NAS de hardware ou se o fluxo de trabalho incluir determinadas configurações de protocolo avançadas.

O sistema DNS que você usa para distribuir endereços para clientes não precisa ser acessado pelo HPC Cache. Em algumas situações, talvez você queira usar um sistema DNS personalizado específico para o cache, mas configurar esse sistema é muito mais complicado do que configurar esse tipo de sistema de rotação do cliente. Você deve consultar o suporte do Azure se estiver pensando em alterar o servidor DNS do HPC Cache para um sistema personalizado.

Configurar a distribuição round-robin para pontos de montagem de cache

Um sistema RRDNS (DNS round robin) roteia automaticamente solicitações de cliente entre vários endereços.

Para configurar esse sistema, você precisa personalizar o arquivo de configuração do servidor DNS para que, quando ele obtém solicitações de montagem para o endereço de domínio principal do Cache HPC, ele atribua o tráfego entre todos os pontos de montagem do sistema de Cache HPC. Os clientes montam o HPC Cache usando seu nome de domínio como parâmetro do servidor e são roteados para o próximo IP de montagem automaticamente.

Existem duas etapas principais para configurar o RRDNS:

  1. Modifique o arquivo do named.conf servidor DNS para definir a ordem cíclica das consultas para o HPC Cache. Essa opção faz com que o servidor passe por todos os valores de IP disponíveis. Adicione uma instrução semelhante à seguinte:

    options {
        rrset-order {
            class IN A name "hpccache.contoso.com" order cyclic;
        };
    };
    
  2. Configurar registros PTR (registros e ponteiro) A para cada endereço IP disponível, como no exemplo a seguir.

    Esses nsupdate comandos fornecem um exemplo de configuração correta do DNS para um Cache HPC com o nome de domínio hpccache.contoso.com e três endereços de montagem (10.0.0.10, 10.0.0.11 e 10.0.0.12):

    update add hpccache.contoso.com. 86400 A 10.0.0.10
    update add hpccache.contoso.com. 86400 A 10.0.0.11
    update add hpccache.contoso.com. 86400 A 10.0.0.12
    update add client-IP-10.contoso.com. 86400 A 10.0.0.10
    update add client-IP-11.contoso.com. 86400 A 10.0.0.11
    update add client-IP-12.contoso.com. 86400 A 10.0.0.12
    update add 10.0.0.10.in-addr.arpa. 86400 PTR client-IP-10.contoso.com
    update add 11.0.0.10.in-addr.arpa. 86400 PTR client-IP-11.contoso.com
    update add 12.0.0.10.in-addr.arpa. 86400 PTR client-IP-12.contoso.com
    

    Esses comandos criam um registro A para cada um dos endereços de montagem do HPC Cache e também configuram registros PTR para suportar verificações DNS inversas de forma adequada.

    O diagrama a abaixo mostra a estrutura básica dessa configuração.

    Diagrama mostrando a configuração de DNS do ponto de montagem do cliente.

Depois que o sistema RRDNS estiver configurado, diga aos computadores cliente para usá-lo para resolver o endereço do Cache HPC em seus comandos de montagem.

Próximas etapas