Como trazer sua própria licença com nós de locatário individual

O Compute Engine oferece a capacidade de trazer sua própria licença (BYOL, na sigla em inglês) usando nós de locatário individual para oferecer suporte aos requisitos de licenciamento que limitam o uso de hardware físico. Especificamente, é possível usar nós de locatário individual para importar uma imagem personalizada para o Compute Engine, usar a imagem para iniciar uma VM e ativar reinicializações no local para que a VM seja reiniciada no mesmo servidor físico sempre que possível. Usando nós de locatário individual para hospedar suas VMs, você garante que suas VMs sejam executadas em hardware totalmente dedicado ao seu uso, limitando o uso do núcleo físico. O Compute Engine também oferece relatórios de uso do servidor para que seja possível rastrear informações de hardware físico para uso da licença.

Para uma visão geral desse recurso, incluindo requisitos e considerações sobre carga de trabalho, leia a página Visão geral.

Antes de começar

Analisar os requisitos de SO e licença compatíveis

Antes de iniciar esse processo, verifique se seu sistema operacional é compatível e se você leu a seção Licenciamento e ativação. Você é responsável por garantir que seus contratos de licenciamento permitam o uso de software no ambiente BYOL, conforme descrito nesta documentação. Além disso, é preciso preparar sua imagem de convidado para BYOL de acordo com seus contratos.

Se você tiver dúvidas ou precisar de suporte adicional, entre em contato com seu revendedor de licenças para perguntas sobre licenciamento e com o suporte do Google Cloud para dúvidas sobre esse recurso.

Analisar as regiões compatíveis

Este recurso está disponível apenas em determinadas regiões. Consulte Preço e disponibilidade para ver a lista completa.

Considerar sua carga de trabalho

Certas cargas de trabalho são mais adequadas para esse recurso do que outras. Revise as considerações de carga de trabalho para recomendações gerais.

Criar um novo projeto e solicitar cotas

Se você ainda não tiver um projeto, crie um novo projeto .

A cota de CPU para os novos projetos está restrita a 100 CPUs. Isso pode não ser suficiente para suas necessidades. Se precisar de mais cotas para seu projeto, solicite ajustes de cota por meio da página Cotas no Console do GCP. Talvez você também precise de aumentos de cotas para outros recursos, como endereços IP, dependendo da sua configuração.

Ativar a API Cloud Build

Esse recurso usa o serviço Cloud Build para importar e criar imagens do Compute Engine. Ative a API Cloud Build para usar esse recurso.

Ativar a API Cloud Build

O Compute Engine também concede à conta de serviço do Cloud Build os papéis a seguir para que ele possa importar imagens ao Compute Engine:

  • roles/iam.serviceAccountTokenCreator
  • roles/compute.admin
  • roles/iam.serviceAccountUser

Ativar o Stackdriver Logging para geração de registros de auditoria

Se for necessário informar o uso do servidor físico para o licenciamento, ative a API Stackdriver Logging antes de lançar VMs nos nós de locatário individual. Isso permite importar e visualizar informações de uso do servidor usando o BigQuery (altamente recomendado).

Ativar a API Stackdriver Logging

Ao configurar a geração de registros, é possível aproveitar o BigQuery para rastrear informações relevantes, como o uso da contagem de núcleos físicos, para as suas necessidades de licenciamento. Para mais detalhes, consulte Como determinar o uso do servidor.

Criar um arquivo de disco virtual

É preciso ter um arquivo de disco virtual atual (VMDK, VHD) para importar a imagem para o Compute Engine. Não é possível instalar um sistema operacional diretamente em uma VM a partir de uma imagem de instalação, como iso, img, DVD, USB e assim por diante. Também não é possível fazer um upgrade de sistema operacional local em uma VM do Compute Engine.

Os passos para criar um arquivo de disco virtual diferem dependendo do seu ambiente. Consulte a documentação apropriada para seu sistema operacional.

Como importar um arquivo de disco virtual

Para iniciar uma VM com sua própria licença, importe um disco virtual que contenha o SO que você quer usar. Use a ferramenta de linha de comando gcloud para importar seu arquivo. A ferramenta gcloud é compatível com a importação de VHD ou VMDK de um intervalo do Cloud Storage ou de uma estação de trabalho local. Se o disco virtual estiver hospedado em sua máquina local, o processo de importação primeiro fará o upload do arquivo para um intervalo do Cloud Storage antes de importar a imagem para o Compute Engine.

Antes de tentar importar o disco da máquina virtual, faça o download e a execução da nossa ferramenta de avaliação prévia em sua máquina virtual. Essa ferramenta de avaliação prévia ajuda a verificar se não há incompatibilidades ao migrar para o GCP.

Para uma explicação completa sobre a ferramenta de importação de imagens, consulte Como importar disco virtual.

Quando estiver pronto, execute o seguinte comando gcloud para importar seu disco virtual:

gcloud compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --os [OS]

em que:

  • [IMAGE_NAME] é o nome que você quer dar a esta imagem;
  • [SOURCE_FILE] é um arquivo de disco virtual hospedado localmente ou armazenado no Cloud Storage. Se o disco virtual for um arquivo local, será possível usar um caminho absoluto ou relativo. Se o arquivo de disco virtual já estiver armazenado no Cloud Storage, será preciso que o arquivo exista em um intervalo de armazenamento do mesmo projeto que está sendo usado no processo de importação e você especifique o caminho completo do arquivo no formato gs://[BUCKET_NAME]/[OBJECT_NAME].

  • [OS] é o sistema operacional Windows do SOURCE_FILE. Os sistemas operacionais Windows a seguir são compatíveis:

    • windows-2008r2-byol
    • windows-2012-byol
    • windows-2012r2-byol
    • windows-2016-byol
    • windows-2019-byol
    • windows-7-byol
    • windows-8-1-x64-byol
    • windows-10-byol

Observe que os arquivos armazenados no Cloud Storage e as imagens no Compute Engine geram cobranças. Depois de verificar se a imagem foi importada corretamente e se foi inicializada corretamente como uma instância do Compute Engine, exclua o arquivo de disco virtual do Cloud Storage.

Se um arquivo local for especificado para o --source-file, a operação de upload poderá levar dezenas de minutos para ser executada, dependendo do tamanho do disco virtual e da velocidade da conexão de rede.

Depois que a imagem é criada, é possível compartilhar a imagem com usuários fora do projeto ou da organização usando funções ou permissões do IAM.

gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member user:[USER_EMAIL] \
    --role roles/compute.imageUser

Nesse caso, [PROJECT_ID] é o projeto que tem a imagem para que você quer conceder acesso.

Em seguida, o usuário pode acessar essa imagem especificando o ID do projeto em que a imagem reside em suas solicitações. Por exemplo:

gcloud compute instances create my-vm \
    --custom-cpu 4 \
    --custom-memory 8 \
    --image https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[IMAGE_NAME] \
    --zone us-central1-a \
    --node-affinity-file node-affinity-prod.json \
    --restart-on-failure \
    --maintenance-policy terminate

Como iniciar uma instância de VM com sua própria licença

Após importar uma imagem, você pode iniciar uma instância de VM em um nó de locatário único usando a imagem importada e ativar o recurso de reinicialização no local especificando a propriedade restart-node-on-minimal-servers. Essa propriedade assegura que, se ocorrer um evento de manutenção, a VM será reiniciada no mesmo servidor físico, se possível. Se o mesmo servidor físico não estiver disponível, um novo servidor físico será criado e adicionado ao grupo de nós. O Compute Engine informa o ID do servidor do novo servidor.

Para as cargas de trabalho de BYOL que não estão relacionadas ao uso de núcleo físico ou soquete com base na natureza dos termos de licenciamento e produto, é possível utilizar nós de locatário individual e omitir o recurso de reinicialização no local. Isso garante que suas instâncias de VM estejam em hardware dedicado, mas não reduz a quantidade de servidores físicos subjacentes usados.

Siga estes passos para iniciar sua instância de VM, conforme descrito em detalhes abaixo:

  1. Crie um modelo de nó e ative a reinicialização no local, se necessário, usando o console do Google Cloud Platform, a ferramenta de linha de comando gcloud ou a API.

  2. Crie um grupo de nós com o novo modelo.

  3. Por último, crie VMs no grupo de nós com a imagem importada.

Depois que as VMs são programadas em um nó, elas aderem aos mesmos marcadores de afinidade física por meio de eventos de reinicialização e manutenção. Isso significa que, embora o servidor físico subjacente possa ser alterado, é possível usar seletores de rótulo para garantir que determinadas VMs estejam sempre nos mesmos nós (com afinidade do nó correspondente), ou que determinadas VMs nunca compartilhem o mesmo nó (antiafinidade do nó).

Para sua conveniência, um rótulo de afinidade adicional, semelhante ao nome do nó e do grupo de nós, é adicionado automaticamente a todos os nós de locatário individual configurados com a opção restart-node-on-minimal-servers. É possível incluir esse rótulo em seu arquivo de afinidade para garantir que suas VMs sejam iniciadas apenas em nós com o recurso restart-node-on-minimal-server ativado. O rótulo tem esta aparência:

  • Chave: compute.googleapis.com/node-server-binding-type
  • Valor: restart-node-on-minimal-server

Console

  1. Crie um modelo de nó com a opção de reinicialização mínima do servidor.

    1. Vá para a página "Criar um modelo de nó".

      Ir para a página "Criar um modelo de nó"

    2. Insira um nome para o modelo.
    3. Especifique a região onde você planeja executar um grupo de nós.
    4. Especifique o tipo de nó a ser usado pelos grupos de nós. Outra opção é especificar o menor nó disponível, permitindo que os grupos de nós sejam executados em qualquer tipo de nó disponível.
    5. Especifique os rótulos de afinidade dos nós para suas instâncias, se quiser. Por exemplo, é possível especificar os rótulos workload=front-end e environment=prod.
    6. Expanda Configuração avançada de reinicialização do nó.
    7. Selecione Servidores mínimos.
    8. Crie seu modelo de nó.
  2. Provisione um grupo de nós usando o modelo de nó.

    1. Vá para a página "Criar um grupo de nós".

      Vá para a página "Criar um grupo de nós"

    2. Digite um nome para o grupo.
    3. Especifique a região em que você planeja executar um grupo de nós. É preciso ter um modelo de nó na mesma região.
    4. Especifique o modelo de nó que você quer utilizar.
    5. Especifique o número de nós que quer executar no grupo. É possível alterar esse número mais tarde.
    6. Clique em Criar para concluir a criação do grupo de nós.
  3. Crie uma instância que seja executada no grupo de nós ou em nós específicos. Se você tiver usado rótulos específicos de afinidade de nó, poderá criar uma instância usando o processo normal e especificar a afinidade do nó nas configurações de Locatário individual. Para este exemplo, crie as instâncias diretamente na página de detalhes do grupo de nós.

    1. Acesse a página de nós de locatário individual.

      Acesse a página de nós de locatário individual

    2. Clique no nome do grupo de nós em que você quer criar uma instância.
    3. Clique em Criar instância para criar uma instância em qualquer parte do grupo de nós. Para executar sua instância em um nó específico do grupo, clique no nome de um nó individual nesse grupo para visualizar os detalhes dele. Depois, clique em Criar instância para criar a instância nesse nó individual.
    4. Defina as configurações para sua instância. Como você já selecionou o grupo de nós ou um nó específico, os rótulos de afinidade de nó regional, de zona ou padrão já estão especificados para você.
    5. Selecione a guia Gerenciamento.
    6. Em Política de disponibilidade > Na manutenção do host, selecione Encerrar.

    7. Em Reinicialização automática, selecione Ativar (recomendado).

    8. Clique em Criar para concluir a criação dessa instância.

gcloud

  1. Crie um modelo de nó e defina a sinalização restart-node-on-minimal-servers. Escolha os rótulos de afinidade do nó para suas instâncias, se quiser. Por exemplo:

    gcloud compute sole-tenancy node-templates create my-node-template \
        --node-type n1-node-96-624 \
        --region us-east1 \
        --node-affinity-labels workload=front-end,environment=prod \
        --server-binding restart-node-on-minimal-servers
    
  2. Provisione um grupo de nós usando o modelo de nó. Por exemplo, o comando a seguir cria um grupo de duas instâncias usando o modelo de nó que foi criado no passo anterior:

     gcloud compute sole-tenancy node-groups create my-node-group \
         --node-template my-node-template \
         --target-size 2 \
         --zone us-east1-b
    
  3. Crie um arquivo de afinidade de nó que contenha os rótulos de afinidade correspondentes do grupo de nós. Isso garante que sua VM seja criada apenas nos nós que contêm todos esses rótulos. Por exemplo:

     // CREATE AFFINITY LABEL FILE
     cat > node-affinity-prod.json
     [{
       "key" : "workload",
       "operator" : "IN",
       "values" : ["front-end"]
       },
       {
       "key" : "environment",
       "operator" : "IN",
        "values" : ["prod"]
      },
      {
        "key" : "compute.googleapis.com/node-server-binding-type",
        "operator" : "IN",
        "values" : "restart-node-on-minimal-server"
      }]
    
  4. Inicie uma instância de VM e especifique o arquivo de rótulo de afinidade. Por exemplo, a solicitação a seguir cria uma VM com 4 CPUs e 8 GB de memória usando a imagem importada, na zona us-east1-b. Além disso, ela também define a sinalização de --restart-on-failure- e uma política de manutenção de terminate, que atualmente é a única política aceitável para VMs com sua própria licença.

     gcloud compute instances create my-vm \
         --custom-cpu 4 --custom-memory 8 \
         --image my-imported-image \
         --zone us-east1-b \
         --node-affinity-file node-affinity-prod.json \
         --restart-on-failure --maintenance-policy terminate
    

API

  1. Crie um modelo de nó e defina a propriedade RESTART_NODE_ON_MINIMAL_SERVERS. Escolha os rótulos de afinidade de nó para suas instâncias também. Por exemplo:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/nodeTemplates
    
    {
       "name": "[TEMPLATE_NAME]",
       "nodeType": "[NODE_TYPE]"
       "nodeAffinityLabels": {
          "[KEY]": "[VALUE]"
       },
       "serverBinding":
       {
         "type": "RESTART_NODE_ON_MINIMAL_SERVERS"
       }
    }
    

    em que:

    • [PROJECT_ID] é o ID do projeto;
    • [TEMPLATE_NAME] é um nome para o novo modelo de nó;
    • [NODE_TYPE] é o tipo de nó que você quer usar para este modelo. Por exemplo, é possível especificar o tipo de nó n1-node-96-624 para criar um nó com 96 vCPUs e 624 GB de memória.
    • [KEY]:[VALUE] é uma lista separada por vírgulas de rótulos de afinidade.
    • [REGION] é a região em que se deve usar esse modelo.
  2. Depois de criar o modelo, crie um grupo de nós. Use o método compute.nodeGroups.insert:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/nodeGroups?initialNodeCount=[TARGET_SIZE]
    
    {
     "nodeTemplate": "regions/[REGION]/nodeTemplates/[TEMPLATE_NAME]",
     "name": "[GROUP_NAME]"
    }
    

    em que:

    • [PROJECT_ID] é o ID do projeto;
    • [ZONE] é a zona em que esse grupo de nós está localizado; Essa zona precisa estar na mesma região que o modelo de nó que você está usando;
    • [TARGET_SIZE] é o número de nós que você quer criar no grupo;
    • [REGION] é a região onde o modelo de nó está localizado;
    • [TEMPLATE_NAME] é um nome para o novo modelo de nó;
    • [GROUP_NAME] é um nome para o novo grupo de nós;
    • [TEMPLATE_NAME] é o nome do modelo de nó que você quer usar para criar esse grupo.
  3. Depois de criar seu grupo de nós, é possível criar instâncias no grupo de nós usando o método compute.instances.insert. Especifique uma entrada nodeAffinities que aponte para o nome do grupo de nós. Por exemplo, é possível criar uma instância com um tipo de máquina personalizado:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
    
    {
     "machineType": "zones/[ZONE]/machineTypes/custom-[VCPUS]-[MEMORY]",
     "name": "[INSTANCE_NAME]",
     "scheduling": {
      "nodeAffinities": [
       {
        "key": "compute.googleapis.com/node-server-binding-type",
        "operator": "IN",
        "values": [
         "restart-node-on-minimal-server"
        ]
       }
      ]
     },
     "networkInterfaces": [
      {
       "network": "global/networks/[NETWORK]",
       "subnetwork": "regions/[REGION]/subnetworks/[SUBNETWORK]"
      }
     ],
     "disks": [
      {
       "boot": true,
       "initializeParams": {
        "sourceImage": "projects/[IMAGE_PROJECT]/global/images/family/[IMAGE_FAMILY]"
       }
      }
     ]
    }
    

    em que:

    • [PROJECT_ID] é o ID do projeto;
    • [INSTANCE_NAME] é o nome da nova instância;
    • [ZONE] é a zona em que o grupo de nós está localizado;
    • [REGION] é a região em que o modelo de nó e a sub-rede estão localizados;
    • [IMAGE_FAMILY] é uma das famílias de imagens disponíveis;
    • [IMAGE_PROJECT] é o projeto de imagem a que essa família de imagens pertence;
    • [GROUP_NAME] é o nome do grupo de nós em que você quer localizar essa instância;
    • [VCPUS] é o número de vCPUs que você quer usar com essa instância;
    • [MEMORY] é a quantidade de memória para a instância em MB. Por exemplo, é possível especificar 5376MB;
    • [NETWORK] é o nome da rede para conectar sua instância;
    • [SUBNETWORK] é o nome da sub-rede para conectar sua instância.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine