Balancear carga tráfego de cliente do HPC Cache
Este artigo explica alguns métodos básicos para balancear o tráfego de cliente para todos os pontos de montagem em seu Azure HPC Cache.
Cada HPC Cache 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 Azure HPC Cache.
Existem várias opções para balancear a carga de montagens de cliente:
- Escolher manualmente um IP de montagem diferente para cada cliente
- Incluir rotação de endereço IP em seus scripts de montagem de 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 certo para você depende da complexidade do fluxo de trabalho, do número de endereços IP em seu cache e de um grande número de outros fatores. Consulte o 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 na Visão geral do cache e nas páginas das instruções de montagem no portal do Azure e na mensagem de êxito que imprime quando você cria um cache com a CLI do Azure ou o PowerShell.
Você pode usar a página das 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.
Para saber mais, leia Montar o Azure HPC Cache.
Usar balanceamento de carga com script
Há várias maneiras de girar de forma programática as montagens de cliente entre os endereços IP disponíveis. A seguir, são apresentados dois exemplos.
Exemplo de cksum de script de comando de montagem
Este comando de montagem de exemplo usa a função hash cksum
e o nome do host de cliente para distribuir automaticamente as conexões de cliente entre todos os endereços IP disponíveis em seu HPC Cache. Se todos os computadores cliente têm nomes de host exclusivos, você pode 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:
Na expressão
X=
, use uma lista separada por espaço de todos os endereços de montagem do cache, em ordem classificação.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 em ordem numérica.No termo
%3
, 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 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 que você definiu (NAMESPACE no exemplo) ou, em vez disso, 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 que você deseja.
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 da função round robin
Este exemplo de código usa endereços IP do cliente como um elemento aleatório 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 o 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 Azure HPC Cache. Esse método não considera a quantidade de tráfego que cada cliente gera, mas garante que os clientes sejam distribuídos igualmente entre todas as interfaces do cache em vez de apenas usar 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 os endereços IP. O DNS será necessário se você desejar 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 avançadas de protocolo.
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 para o próprio cache, mas configurar esse sistema é muito mais complicado do que configurar esse tipo de sistema round robin 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 receber solicitações de montagem para o endereço de domínio principal do HPC Cache, ele atribua o tráfego entre todos os pontos de montagem do sistema HPC Cache. Os clientes montam o HPC Cache usando seu nome de domínio como o argumento do servidor e são roteados para o próximo IP de montagem automaticamente.
Existem duas etapas principais para configurar o RRDNS:
Modifique o arquivo
named.conf
do servidor DNS para definir a ordem cíclica para as consultas em seu 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; }; };
Configurar registros PTR (registros e ponteiro) A para cada endereço IP disponível, como no exemplo a seguir.
Esses comandos
nsupdate
fornecem um exemplo de configuração correta do DNS para um HPC Cache 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 de ponteiro para dar suporte a verificações de DNS reverso adequadamente.
O diagrama a abaixo mostra a estrutura básica dessa configuração.
Após configurar o sistema RRDNS, diga aos computadores cliente para usá-lo para resolver o endereço HPC Cache em seus comandos de montagem.
Próximas etapas
- Para ajudar a balancear a carga do cliente, entre em contato com o suporte.
- Confira Preencher novo armazenamento de Blob do Azure para mover dados para os destinos de armazenamento do cache.