Criar instâncias do ULL Compute Engine
Nesta página, descrevemos como criar instâncias do Ultra Low Latency (ULL) Compute Engine usando tipos de máquina U4P ou U4C da família de máquinas U4.
Para uma visão geral do processo de configuração da infraestrutura de ULL, consulte Visão geral da configuração da solução de ULL.
Antes de começar
Antes de criar instâncias de computação de ULL, consulte as seções a seguir.
Criar redes VPC
Se ainda não tiver feito isso, crie redes VPC para cada uma das interfaces de rede da instância, conforme descrito em Visão geral da configuração da ULL Solution.
Criar uma política de posicionamento
Opcionalmente, aplique uma política de posicionamento distribuído à instância de ULL para aumentar a resiliência. Para mais informações, consulte Criar e aplicar políticas de posicionamento distribuído na documentação do Compute Engine.
Definir seu projeto
Defina a CLI gcloud para usar seu projeto. Como alternativa, inclua
a flag --project=PROJECT_ID para cada comando
nos procedimentos a seguir.
gcloud config set project PROJECT_ID
Substitua PROJECT_ID pelo ID do seu projeto.
Funções exigidas
Para receber as permissões necessárias para criar instâncias do Compute Engine, peça ao administrador para conceder a você as seguintes funções do IAM:
-
Para criar e gerenciar instâncias de computação:
Administrador da instância do Compute (
compute.instanceAdmin) no seu projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Visão geral da configuração da instância de ULL
Para criar uma instância de computação de ULL e configurá-la para enviar ou receber tráfego de transmissão única e multicast de ULL, faça o seguinte:
| Etapa | Descrição |
|---|---|
| Criar uma instância de ULL | Crie uma instância usando um tipo de máquina U4P ou U4C e conecte as interfaces de rede a uma rede VPC de uso geral e a uma rede VPC de ULL. Se você planeja usar a instância como um consumidor multicast, defina a flag igmp-query como IGMP_QUERY_V2. |
Configurar o roteamento para as interfaces não nic0 para tráfego de transmissão única de ULL |
Configure o roteamento de políticas baseado na origem no SO convidado para garantir que os pacotes de saída saiam pela interface correta e evitar o roteamento assimétrico. |
| Configurar uma instância para ser um consumidor multicast de ULL |
Conclua cada uma das etapas a seguir para receber tráfego multicast
em interfaces de rede de ULL:
|
Além disso, você pode usar os comandos de exemplo nesta página para testar a conectividade multicast.
Criar uma instância de ULL
Esta seção descreve como criar uma nova instância para uso em transmissão única e multicast de ULL.
Para informações gerais sobre a criação de instâncias de computação, incluindo outras opções de configuração, consulte Criar e iniciar uma instância do Compute Engine.
gcloud
Para criar uma instância de ULL, use o
compute instances create comando.
O tipo de interface de rede compatível com instâncias de ULL é GVNIC.
Você precisa incluir o campo queue-count e especificar um valor de 32 para suporte a XDP.
Para as interfaces de rede anexadas a uma rede VPC de ULL, no-address precisa ser especificado.
Além disso, o comando a seguir inclui a flag igmp-query para permitir que a instância seja um consumidor multicast. Essa flag não é necessária se a instância for apenas um produtor multicast ou se ela enviar e receber apenas transmissão única.
gcloud compute instances create INSTANCE_NAME \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--maintenance-policy=TERMINATE \
--network-interface=nic-type=GVNIC,queue-count=32,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_2,no-address,igmp-query=IGMP_QUERY_V2
Substitua os seguintes valores:
ZONE: a zona em que a instância será criadaINSTANCE_NAME: um nome para a instânciaMACHINE_TYPE: o tipo de máquina U4P ou U4C da instânciaIMAGE_PROJECT: o projeto de imagem, comorhel-cloud. Consulte Suporte ao sistema operacional para tipos de máquina U4.IMAGE_FAMILY: a família de imagens, comorhel-10-2-eus-gvnic-baremetal. Consulte Suporte ao sistema operacional para tipos de máquina U4.A especificação de uma família de imagens cria a instância na versão mais recente, não obsoleta da imagem do SO na família de imagens. Como alternativa, você pode usar a flag
--imagee especificar uma versão de imagem.GENERAL_PURPOSE_VPC_NETWORK,GENERAL_PURPOSE_SUBNET: a rede VPC e a sub-rede para anexar a interfacenic0da instânciaULL_VPC_NETWORK: a rede VPC de ULL para anexar as interfaces nãonic0ULL_SUBNET_1: a sub-rede na rede VPC de ULL para anexar a interfacenic1ULL_SUBNET_2: a sub-rede na rede VPC de ULL para anexar a interfacenic2
Configurar o roteamento para as interfaces não nic0 para tráfego de transmissão única de ULL
Por padrão, uma instância usa a rota padrão associada à interface nic0 para enviar tráfego a qualquer destino fora da sub-rede diretamente conectada. Para
mais informações, consulte a visão geral sobre várias interfaces de rede.
Para que as interfaces nic1 e nic2 da instância enviem e recebam tráfego de transmissão única de ULL, é necessário configurar o roteamento de políticas baseado na origem no SO convidado. Essa configuração garante que os pacotes de saída saiam pela interface correta e evita o roteamento assimétrico, em que o tráfego entra em uma interface, mas tenta sair por nic0.
Para um exemplo de como configurar o roteamento de políticas, consulte Configurar o roteamento de políticas no tutorial Configurar o roteamento para uma interface de rede adicional.
Configurar uma instância para ser um consumidor multicast de ULL
Esta seção descreve como configurar uma instância de ULL atual para ser um consumidor multicast.
Ativar a consulta IGMP em uma instância de ULL atual
Se você não ativou o IGMP ao criar a instância, é possível ativá-lo na instância atual, conforme descrito nesta seção.
gcloud
Para ativar a consulta IGMP em uma instância de ULL atual, use o
compute instances network-interfaces update comando.
Repita o comando a seguir para cada interface de rede que você quer receber tráfego multicast.
gcloud compute instances network-interfaces update INSTANCE_NAME \
--zone=ZONE \
--network-interface=NETWORK_INTERFACE_NAME \
--igmp-query=IGMP_QUERY_V2
Substitua os seguintes valores:
INSTANCE_NAME: o nome da instânciaZONE: a zona da instânciaNETWORK_INTERFACE_NAME: o nome da interface de rede em que a consulta IGMP será ativada. Em Google Cloud, o formato énicNUMBER, comonic0,nic1, ounic2.
Definir o IGMPv2 no SO convidado
Para definir o IGMPv2 no SO convidado da instância, faça o seguinte:
Conectar à instância usando SSH.
Execute o comando a seguir e identifique os nomes de dispositivos das interfaces de rede que você quer receber tráfego multicast.
sudo ifconfig
Para cada interface de rede aplicável, execute o comando a seguir para forçar o IGMPv2.
sudo -i echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
Substitua
NETWORK_INTERFACE_DEVICE_NAMEpelo nome do dispositivo da interface de rede, comoeth0,eth1oueth2.
Configurar a filtragem de caminho reverso (rp_filter)
Em alguns casos, como instâncias de várias NICs, a validação de origem estrita pela filtragem de caminho reverso (rp-filter) pode fazer com que pacotes multicast legítimos sejam descartados. Para evitar que isso aconteça, configure a filtragem de caminho reverso para afrouxar ou desativar a validação de origem em interfaces de rede não nic0 que recebem tráfego multicast.
Por exemplo, os comandos a seguir configuram a filtragem de caminho reverso para desativar a validação de origem em eth1 e eth2 definindo rp_filter como 0.
sudo sysctl -w net.ipv4.conf.all.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth1.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth2.rp_filter=0
Para mais informações sobre rp_filter, consulte
IP Sysctl na documentação do kernel do Linux.
Aumentar o tamanho do buffer de anel do driver de rede
Esta seção descreve como aumentar o tamanho do buffer de anel do driver de rede na instância.
Para consumidores multicast que recebem altos níveis de tráfego, aumente o tamanho do buffer de anel do driver de rede para um valor de 2048 para evitar a perda de pacotes. Faça isso para cada interface de rede que recebe tráfego multicast.
Consulte os comandos de exemplo a seguir, que configuram nic1 e nic2:
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
Comandos de exemplo para testar a conectividade multicast de ULL
Esta seção fornece comandos de exemplo para testar o tráfego multicast sem
iniciar uma carga de trabalho de aplicativo usando a
iperf ferramenta. As etapas nesta seção exigem que a configuração multicast descrita em Visão geral da configuração da ULL Solution seja concluída.
Enviar tráfego multicast de ULL de um produtor multicast
Conectar à instância usando SSH.
Instale
iperfse ainda não tiver feito isso.iperf3não oferece suporte a multicast. O comando a seguir usaiperf, que instalaiperf2.sudo yum install iperf
Para enviar tráfego multicast para o endereço IP do grupo multicast, execute o comando a seguir:
iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
Substitua os seguintes valores:
MULTICAST_GROUP_ADDRESS: o endereço IP do grupo multicastNIC: o nome do dispositivo da interface de rede, comoeth1oueth2NIC_IP_ADDRESS: o endereço IP atribuído à NIC especificada
Participar de um grupo e receber tráfego multicast de ULL de um consumidor multicast
Conectar à instância usando SSH.
Instale
iperfse ainda não tiver feito isso.sudo yum install iperf
Para participar de um grupo multicast e registrar o tráfego recebido, execute o comando a seguir:
iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
Substitua os seguintes valores:
MULTICAST_GROUP_ADDRESS: o endereço IP do grupo multicastNIC: o nome do dispositivo da interface de rede, comoeth1oueth2
Por exemplo, o comando a seguir participa de um grupo com o endereço IP
224.1.0.176para receber pacotes de até 512 bytes e registra o tráfego recebido:iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
Verificar o status e a velocidade do link de ULL
Nas interfaces de rede de ULL da instância, ethtool mostra o status real do link da porta física (up/down) e as velocidades do link físico.
Para verificar o status e a velocidade do link físico de uma interface de rede de ULL, execute o comando a seguir:
sudo ethtool NIC
Substitua NIC pelo nome da interface de rede atribuída pelo SO convidado, como ens8f0 ou ens48f0.
A seguir
- Para informações gerais sobre como solucionar problemas de performance de rede para instâncias bare metal, consulte Solução de problemas de performance de rede na documentação do Compute Engine. Por exemplo, é possível desativar os estados de suspensão da CPU para alcançar a performance total da largura de banda da rede.
- Para ativar a pesquisa ocupada e testar os recursos do Onload para instâncias de computação de ULL, consulte Trabalhar com o Onload.
- Para sincronizar o relógio do sistema da instância com o relógio da NIC física do seu servidor host, consulte Configurar a hora exata.