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

Crie um novo projeto se ainda não tiver um.

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 concederá à 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 Stackdriving Logging para registro de auditoria

Se for necessário informar o uso do servidor físico para o licenciamento, ative a API Stackdriving 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 Stackdriving 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 há suporte para a instalação de um sistema operacional diretamente em uma VM a partir de uma imagem de instalação, como iso, img, DVD, USB e assim por diante. Além disso, não há suporte para o upgrade do sistema operacional no 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 gcloud para importar seu arquivo. A ferramenta gcloud oferece suporte à importação de VHD ou VMDK de um intervalo do Google 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 (link em inglês) 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 comando da gcloud a seguir 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 do disco virtual já estiver armazenado no Cloud Storage, ele precisará existir em um intervalo de armazenamento no mesmo projeto usado e será preciso especificar 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-7-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 a qual 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://www.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, é possível iniciar uma instância de VM em um nó de locatário individual usando a imagem importada e ativar o recurso de reinicialização 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 relatará o ID 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 usar apenas nós de locatário exclusivo e omitir o recurso de reinicialização no local. Isso garante que suas instâncias de VM aconteçam em hardware dedicado, mas não minimizam o número de servidores subjacentes físicos 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 gcloud ou a API.

  2. Crie um grupo de nós com o modelo recém-criado.

  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 de nó correspondente) ou 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".

      Ir 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ó, sera possível 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.

      Acessar a página de nodes 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ê 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, 8 GB de memória usando a imagem importada, na zona us-east1-b. Além disso, ele também define a sinalização --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://www.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 no modelo. Por exemplo, especifique o tipo de nó n1-node-96-624 para criar um 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 onde você usará esse modelo.
  2. Depois de criar o modelo, crie um grupo de nós. Use o método compute.nodeGroups.insert:

    POST https://www.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 o grupo de nós, será possível criar instâncias nele 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://www.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 5.376 MB;
    • [NETWORK] é o nome da rede para conectar a instância;
    • [SUBNETWORK] é o nome da sub-rede para conectar a instância.

A seguir

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

Enviar comentários sobre…

Documentação do Compute Engine