Balanceamento de carga do tráfego do cliente de cache HPC
Este artigo explica alguns métodos básicos para equilibrar o tráfego do cliente para todos os pontos de montagem no seu Cache HPC do Azure.
Cada cache HPC tem pelo menos três endereços IP diferentes, e caches com valores de taxa de transferência maiores podem ter até 12. É importante usar todos os endereços IP para obter todos os benefícios do Cache HPC do Azure.
Existem várias opções para balancear a carga das montagens do cliente:
- Escolha manualmente um IP de montagem diferente para cada cliente
- Inclua a rotação do endereço IP nos scripts de montagem do cliente
- Configurar um sistema DNS para rotear automaticamente as solicitações do cliente entre todos os endereços disponíveis (DNS round-robin)
O sistema de balanceamento de carga certo 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 seu consultor 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 Visão geral do cache e Instruções de montagem no portal do Azure e na mensagem de êxito que é impressa quando você cria um cache com a CLI do Azure ou o PowerShell.
Você pode usar a página Instruções de montagem para gerar um comando de montagem personalizado para cada cliente. Selecione todos os valores de endereço de montagem de cache ao criar vários comandos.
Leia Montar o Cache HPC do Azure para obter detalhes.
Usar balanceamento de carga com script
Há várias maneiras de girar programaticamente montagens de cliente entre os endereços IP disponíveis. Veja a seguir dois exemplos.
Exemplo de cksum de script de comando Mount
Este exemplo de comando mount usa a função cksum
hash e o nome do host do cliente para distribuir automaticamente as conexões do cliente entre todos os endereços IP disponíveis no cache HPC. Se todas as máquinas 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 ordenada.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.%3
No termo, use o número real de endereços IP de montagem que seu cache tem (normalmente 3, 6, 9 ou 12).Por exemplo, use
%9
se o cache expõe nove endereços IP de montagem do 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 suas máquinas cliente, altere o valor
/mnt
para o caminho desejado.
Aqui está um exemplo de um comando de montagem de cliente preenchido:
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 de função round robin
Este exemplo de código usa endereços IP de cliente como um elemento aleatório para distribuir clientes para todos os endereços IP disponíveis do cache HPC.
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 os conceitos básicos de configuração de um sistema DNS para distribuir conexões de cliente para todos os pontos de montagem em seu Cache HPC do Azure. Esse método não leva em conta 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 é 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 seu fluxo de trabalho incluir determinadas configurações avançadas de protocolo.
O sistema DNS que você usa para distribuir endereços aos clientes não precisa ser acessado pelo cache HPC. Em algumas situações, você pode querer usar um sistema DNS personalizado para o cache em si, mas configurar esse sistema é muito mais complicado do que configurar esse tipo de sistema round-robin cliente. Você deve consultar o suporte do Azure se estiver pensando em alterar o servidor DNS do seu Cache HPC para um sistema personalizado.
Configurar a distribuição round-robin para pontos de montagem de cache
Um sistema de DNS round-robin (RRDNS) roteia automaticamente as solicitações do 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 receber 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 cache HPC usando seu nome de domínio como argumento de servidor e são roteados para o próximo IP de montagem automaticamente.
Há duas etapas principais para configurar o RRDNS:
Modifique o arquivo do
named.conf
servidor DNS para definir a ordem cíclica das consultas ao cache HPC. Essa opção faz com que o servidor percorra todos os valores de IP disponíveis. Adicione uma instrução como a seguinte:options { rrset-order { class IN A name "hpccache.contoso.com" order cyclic; }; };
Configure registros A e registros de ponteiro (PTR) 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 Cache HPC e também configuram registros de ponteiro para oferecer suporte a verificações reversas de DNS adequadamente.
O diagrama abaixo mostra a estrutura básica desta configuração.
Depois que o sistema RRDNS estiver configurado, diga às máquinas clientes para usá-lo para resolver o endereço do cache HPC em seus comandos mount.
Próximos passos
- Para obter ajuda para equilibrar a carga do cliente, entre em contato com o suporte.
- Para mover dados para os destinos de armazenamento do cache, leia Preencher novo armazenamento de Blob do Azure.