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

O Compute Engine permite trazer sua própria licença (BYOL, na sigla em inglês) usando nós de locatário individual para dar 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. Use essa imagem para iniciar uma VM e ative reinicializações no local para que a VM seja reiniciada no mesmo servidor físico sempre que possível. Ao usar nós de locatário individual para hospedar suas VMs, você garante que elas sejam executadas em um hardware totalmente dedicado e, ao mesmo tempo, limita o uso do núcleo físico. O Compute Engine também oferece a geração de relatórios de uso do servidor para que você consiga rastrear informações sobre o hardware físico para uso da licença.

Para saber mais sobre esse 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 este processo, verifique se seu sistema operacional é compatível e leia a seçãoLicenciamento 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, você precisa preparar sua imagem de convidado para BYOL de acordo com seus contratos.

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

Confira as regiões compatíveis

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

Considere sua carga de trabalho

Certas cargas de trabalho são mais adequadas para esse recurso do que outras. Leia a seção Considerações sobre carga de trabalho para recomendações gerais.

Crie um novo projeto e solicite cota

Crie um projeto, se você 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 você precisar de mais cota para seu projeto, solicite um ajuste na página "Cotas" no Console do Cloud. Dependendo da sua configuração, talvez você também precise aumentar a cota de outros recursos, como endereços IP.

Ative 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 usá-lo.

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 para o Compute Engine:

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

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

Se você precisar gerar relatórios sobre o uso do servidor físico para o licenciamento, ative a API do Stackdriver Logging antes de iniciar as VMs nos nós de locatário individual. Isso permite importar e visualizar informações sobre o uso do servidor com o BigQuery (altamente recomendado).

Ativar a API Stackdriver Logging

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

Crie um arquivo de disco virtual

Você precisa ter um arquivo de disco virtual (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 do sistema operacional local em uma VM do Compute Engine.

As etapas para criar um arquivo de disco virtual variam de acordo com seu ambiente. Consulte a documentação referente ao 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 importar o disco da sua máquina virtual, faça o download e execute nossa ferramenta de pré-verificação na sua máquina virtual. Essa ferramenta ajuda a verificar se há incompatibilidades (em inglês) ao migrar para o Google Cloud.

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

Quando tudo estiver pronto, execute o comando 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 à 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. Mas se ele já estiver armazenado no Cloud Storage, será necessário que esse arquivo resida em um intervalo de armazenamento no mesmo projeto que está sendo usado no processo de importação. Além disso, você precisará 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 aceitos:

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

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

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

Depois que a imagem for criada, será possível compartilhá-la com usuários de fora do projeto ou da organização usando papéis ou permissões de IAM.

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

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

Assim, o usuário poderá acessar essa imagem ao especificar o ID do projeto onde a imagem reside nas solicitações dele. 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 a importação de uma imagem, é possível iniciar uma instância de VM em um nó de locatário individual com 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 será criado e adicionado ao grupo de nós. O Compute Engine informa o ID do novo servidor.

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

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

  1. Crie um modelo de nó e ative a reinicialização local, se necessário. É possível fazer isso usando o Console do Google Cloud, 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 rótulos de afinidade física durantes os 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 a afinidade de nó correspondente) ou nunca compartilhem o mesmo nó (antiafinidade de nó).

Para facilitar seu trabalho, um rótulo de afinidade extra, 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. Se quiser, inclua esse rótulo no 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. Acesse 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.
    5. Se quiser, especifique os rótulos de afinidade de nó para suas instâncias. 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. Acesse 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ê quer executar seu grupo de nós. Você precisa ter um modelo de nó na mesma região.
    4. Especifique o modelo de nó que você quer usar.
    5. Especifique o número de nós que quer executar no grupo. É possível mudar 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 de afinidade de nó específicos, será possível criar uma instância usando o processo normal e especificar a afinidade de nó nas configurações de Locatário individual. Neste exemplo, crie as instâncias diretamente na sua 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 "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ó 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 da sua instância. Como você já selecionou seu 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 instância da VM.

    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. Se quiser, escolha os rótulos de afinidade de nó para suas instâncias. 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 na etapa 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 quatro 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 --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 também os rótulos de afinidade de nó para suas instâncias. 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] é o nome do novo modelo de nó;
    • [NODE_TYPE] é o tipo de nó que você quer usar no 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 de nó, 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] é o nome do 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, você conseguirá 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://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 onde o modelo de nó e sua sub-rede estão localizados;
    • [IMAGE_FAMILY] é uma das famílias de imagens disponíveis;
    • [IMAGE_PROJECT] é o projeto a que essa família de imagens pertence;
    • [GROUP_NAME] é o nome do grupo de nós onde você quer colocar a instância;
    • [VCPUS] é o número de vCPUs que você quer usar com a instância;
    • [MEMORY] é a quantidade de memória da instância em MB. Por exemplo, é possível especificar 5376MB;
    • [NETWORK] é o nome da rede a que a instância será conectada;
    • [SUBNETWORK] é o nome da sub-rede a que a instância será conectada.

A seguir