Como criar uma instância de VM personalizada

O Compute Engine oferece tipos de máquina predefinidos que você pode usar ao criar uma instância de VM. Um tipo de máquina predefinido tem um número predefinido de vCPUs e uma quantidade de memória, mas é cobrado um preço fixo.

Se os tipos de máquinas predefinidos não atendem às suas necessidades, é possível criar uma instância de VM com configurações personalizadas de hardware virtualizado. Especificamente, é possível criar uma instância de VM com um número personalizado de vCPUs e quantidade de memória, usando efetivamente um tipo de máquina personalizado. Os tipos de máquina personalizados estão disponíveis na família de máquinas de uso geral. Ao criar uma VM personalizada, você está implantando uma VM personalizada da família de máquinas E2, N2, N2D ou N1.

As VMs personalizadas são ideais nos seguintes cenários:

  • Cargas de trabalho que não são adequadas para os tipos de máquina predefinidos
  • Cargas de trabalho que exigem mais poder de processamento ou mais memória, mas não precisam de todos os upgrades fornecidos pelo próximo nível de tipo de máquina.

Antes de começar

Preços

O Google cobra por VMs personalizadas com base no número de vCPUs e nas horas de memória que a VM usa. Isso é diferente de como tipos de máquinas predefinidos são cobrados. Consulte Preços de VM para mais detalhes.

As VMs personalizadas estão sujeitas à mesma cobrança mínima de um minuto que qualquer outra instância, mas descontos por uso prolongado para tipos de máquinas personalizados são calculados de maneira diferente. Para mais informações, consulte descontos por uso prolongado para VMs personalizadas.

Expressar memória em GB ou MB

Para a documentação e ferramentas do Google Cloud, a memória do tipo de máquina é calculada em gigabytes (GB), sendo que 1 GB equivale a 2 30 bytes. Essa unidade de medida também é conhecida como gibibyte (GiB). Ao converter a memória de GB para MB, 1 GB = 1.024 MB.

Na API, sempre forneça memória em megabytes. Se você usa a ferramenta de linha de comando gcloud, é possível fornecer a memória total para uma VM em gigabytes ou megabytes. No entanto, a ferramenta gcloud espera que o valor da memória seja um número inteiro. Portanto, não é possível fornecer um valor flutuante. Por exemplo, para expressar 5,75 GB, converta 5,75 GB em MB. Nesse caso, 5,75 GB são 5.888 MB.

Criar uma instância de VM com um tipo de máquina personalizado

Antes de criar uma instância de VM, leia e entenda as especificações personalizadas para criar esse tipo de máquina.

Console

  1. No Console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. Na lista Zona, selecione a zona em que você quer hospedar esta VM. A lista Série é filtrada para incluir apenas as famílias de tipo de máquina disponíveis na zona selecionada.

  3. Na seção Configuração da máquina, selecione Uso geral.

    1. Na lista Série, clique em N1 em Primeira geração para tipos de máquinas personalizados N1 ou E2, N2 ou N2D para os tipos de máquina personalizados de segunda geração.
    2. Na lista Tipo de máquina, selecione Personalizado.
    3. Para especificar o número de vCPUs e a quantidade de memória da instância de VM, arraste os controles deslizantes ou insira os valores nas caixas de texto. O console exibe um custo estimado para a VM à medida que você altera o número de vCPUs e a memória.
  4. Continue a criar a VM.

gcloud

O comando gcloud para tipos de máquinas personalizados é um pouco diferente, dependendo da família de tipos de máquinas.

Para tipos de máquinas N1, use o comando gcloud compute instances create e inclua uma das seguintes opções:

  • As sinalizações --custom-cpu e --custom-memory
  • A sinalização --machine-type=custom-[NUMBER_OF_CPUS]-[NUMBER_OF_MB]

Por exemplo, o comando a seguir criaria uma instância que executa um tipo de máquina N1 com 4 vCPUs e 5 GB de memória total:

gcloud compute instances create example-instance \
    --custom-cpu=4 --custom-memory=5

Para os tipos de máquina N2, use o comando gcloud compute instances create e inclua uma das seguintes opções:

  • As sinalizações --custom-cpu, --custom-memory e --custom-vm-type
  • A sinalização --machine-type=n2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Se usar a sinalização --custom-memory, especifique a quantidade total de memória em GB ou em MB. A propriedade precisa ser um número inteiro. Portanto, se você quiser especificar incrementos de 0,25 GB em memória, converta esse valor em MB.

Para especificar um valor incremental, como 2,5 GB de memória, converta o valor em MB e forneça o valor seguido do sufixo MB: O exemplo a seguir cria uma instância que executa um tipo de máquina N2:

gcloud compute instances create example-instance \
    --custom-cpu=6 --custom-memory=3072MB --custom-vm-type=n2

Como alternativa, use este formato para especificar um tipo de máquina personalizado:

gcloud compute instances create example-instance \
    --machine-type n2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Substitua estes itens:

  • NUMBER_OF_CPUS: o número de CPUs necessárias
  • NUMBER_OF_MB: a quantidade de memória, em MB.

Exemplo:

gcloud compute instances create example-instance --machine-type=n2-custom-6-3072

Para os tipos de máquina N2D ou E2, use o comando gcloud compute instances create e inclua uma das seguintes opções:

  • As sinalizações --custom-cpu, --custom-memory e --custom-vm-type
  • A sinalização --machine-type=n2d-custom-NUMBER_OF_CPUS-NUMBER_OF_MB
  • A sinalização --machine-type=e2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Para tipos de máquina personalizados E2 com núcleo compartilhado, use o mesmo comando gcloud compute instances create e inclua o tamanho da máquina com núcleo compartilhado: micro, small ou medium.

  • A sinalização --machine-type=e2-custom SHARED_CORE_MACHINE_SIZE-NUMBER_OF_MB

Exemplo:

gcloud compute instances create example-instance \
    --machine-type=e2-custom-medium-NUMBER_OF_MB

Ao usar a sinalização --custom-memory, especifique a quantidade total de memória em GB ou em MB. A propriedade precisa ser um número inteiro. Então, se você quiser especificar incrementos de 0,25 GB em memória, converta o valor em MB.

Para especificar um valor incremental, como 2,5 GB de memória, converta o valor em MB e forneça o valor seguido do sufixo MB. O exemplo a seguir cria uma instância que executa um tipo de máquina E2:

gcloud compute instances create example-instance \
    --custom-cpu=6 --custom-memory=3072MB --custom-vm-type=e2

Como alternativa, use este formato para especificar um tipo de máquina personalizado:

gcloud compute instances create example-instance \
    --machine-type=e2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Substitua:

  • NUMBER_OF_CPUS: o número de CPUs necessárias
  • NUMBER_OF_MB: a quantidade de memória, em MB.

Exemplo:

gcloud compute instances create example-instance --machine-type=e2-custom-6-3072

API

Na API, gere sua solicitação de criação de instância como faria normalmente, mas, ao especificar um valor de machineType, use um dos formatos a seguir. Substitua NUMBER_OF_CPUS pelo número de CPUs e AMOUNT_OF_MEMORY_MB pela quantidade de memória que você quer usar. Forneça a memória em unidades de MB.

  • Para tipos de máquinas N1, use:

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Para tipos de máquinas N2, use:

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Para tipos de máquinas N2D, use:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Para tipos de máquina E2, use:

    zones/ZONE/machineTypes/e2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Para os tipos de máquina personalizados com núcleo compartilhado E2, use:

    zones/ZONE/machineTypes/e2-custom-SHARED_CORE_MACHINE_SIZE-AMOUNT_OF_MEMORY_MB
    

Por exemplo, o seguinte URL criaria uma instância com 4 vCPUs e 5 GB (5.120 MB) de memória:

zones/us-central1-f/machineTypes/custom-4-5120

Da mesma forma, é possível criar instâncias preemptivas e grupos de instâncias com tipos de máquina personalizados.

Adicionar memória estendida a um tipo de máquina

Dependendo da máquina, por padrão, cada tipo de máquina tem uma quantidade específica de memória. Por exemplo, se você criar uma VM N1 personalizada, ela poderá ter até 6,5 GB de memória por vCPU. Para VMs N2 personalizadas, esse número aumenta até 8 GB de memória por vCPU.

Para algumas cargas de trabalho, isso pode não ser memória suficiente. Por um custo extra, é possível ter mais memória por vCPU além do limite padrão. Isso é conhecido como memória estendida.

Com a memória estendida, é possível adicionar memória ao tipo de máquina sem limitações por vCPU. Você adiciona memória estendida até certos limites com base no tipo de máquina:

  • Para tipos de máquinas N1, é possível adicionar até 624 GB de memória total por VM.
  • Para tipos de máquinas N2, é possível adicionar até 640 GB de memória por VM.
  • Para tipos de máquinas N2D, é possível adicionar até 768 GB de memória por VM.
  • A memória estendida não está disponível para os tipos de máquina E2.

Se você precisar de mais memória, use um dos tipos de máquina de megamemória, que permitem criar instâncias com um total de 1,4 TB por instância de VM.

Como determinar se você precisa de memória estendida

Certas cargas de trabalho precisam do que a quantidade padrão de memória por vCPU para fornecer os melhores resultados. As cargas de trabalho baseadas em bancos de dados de análise de alto desempenho na memória, incluindo bancos de dados relacionais e NoSQL, como MS SQL Server, MongoDB e MemcacheD/Redis, estão nessa categoria. O licenciamento com base em vCPU de sistemas operacionais e pilhas de software também torna a seleção de uma configuração de memória de VM ideal mais desafiadora com os tipos de máquinas predefinidos. Ao usar memória estendida, adicione a memória que suas VMs precisarem para conseguir a melhor relação custo-benefício.

Preços

Ao usar um tipo de máquina personalizado, qualquer memória até e incluindo a quantidade padrão por vCPU é cobrada de acordo com os preços de tipos de máquinas personalizados N1 ou os preços de tipos de máquinas personalizados N2. Máquinas personalizadas E2 e tipos de máquina com núcleo compartilhado E2 compartilham o mesmo esquema de preços.

Para memória acima do padrão, o Compute Engine cobra por memória estendida com base nos preços de memória personalizada estendida N1 ou nos preços de memória personalizada estendida N2. O preço da memória estendida é diferente do preço da memória abaixo do limite padrão.

Os preços de memória estendida diferem conforme a região. Instâncias em execução com memória estendida estão sujeitas à mesma cobrança mínima de um minuto que qualquer outra instância. A memória estendida também se qualifica para descontos por uso prolongado.

Para mais informações, consulte descontos por uso prolongado para tipos de máquinas personalizados e preços de memória personalizada estendida.

Limitações

  • Só é possível adicionar memória estendida a tipos de máquina personalizados. Não são aceitos tipos de máquinas predefinidos.
  • Não há limite para a adição de memória por vCPU, mas há uma quantidade máxima de memória que pode ser adicionada a cada instância de VM. Para tipos de máquinas N1, é possível adicionar até 624 GB de memória. Para tipos de máquinas N2, é possível adicionar até 640 GB de memória. Para tipos de máquinas N2D, é possível adicionar até 768 GB de memória.
  • Os tipos de máquina N2 e N2D estão disponíveis somente em determinadas regiões e zonas.
  • A memória precisa ser especificada em incrementos de 256 MB.
  • A memória estendida não se qualifica para os descontos por compromisso de uso.

Adicionar memória estendida durante a criação da instância

Para criar uma instância de VM com memória estendida, siga as instruções abaixo.

Console

  1. No Console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. Na lista Zona, selecione a zona em que você quer hospedar esta VM. A lista Série é filtrada para incluir apenas as famílias de tipo de máquina disponíveis na zona selecionada.

  3. Na seção Configuração da máquina, selecione Uso geral.

    1. Na lista Série, clique em N1 em Primeira geração para tipos de máquinas personalizados N1 ou N2 ou N2D para tipos de máquina personalizados de segunda geração.
    2. Na lista Tipo de máquina, selecione Personalizado.
    3. Para especificar o número de vCPUs, arraste o controle deslizante Núcleos ou insira o valor na caixa de texto.
    4. Para adicionar memória estendida, selecione Estender memória e faça o seguinte:

      1. Para especificar a quantidade de memória da instância da VM, arraste o controle deslizante Memória ou insira o valor na caixa de texto.

      O console exibe um custo estimado para a VM à medida que você altera o número de vCPUs e a memória.

  4. Continue a criar a VM.

gcloud

Para tipos de máquinas N1, use o comando gcloud e o subcomando instances create, seguido pela sinalização --custom-extensions para ativar a memória estendida. Em seguida, especifique o total de memória desejada com o parâmetro --custom- memory.

gcloud compute instances create example-instance  \
    --custom-extensions --custom-cpu=2 --custom-memory=15

Para tipos de máquinas N2, use o comando gcloud com o subcomando instances create. Defina as sinalizações --custom-extensions, --custom-cpu e --custom-memory, seguidas pela sinalização --custom-vm-type, para especificar o tipo de máquina N2:

gcloud compute instances create example-instance \
    --custom-extensions --custom-cpu=2 --custom-memory=16 \
    --custom-vm-type=n2

Para os tipos de máquina N2D, use o comando gcloud com o subcomandoinstances create. Defina as sinalizações --custom-extensions, --custom-cpu e --custom-memory, seguidas pela sinalização --custom-vm-type, para especificar o tipo de máquina N2D:

gcloud compute instances create example-instance \
    --custom-extensions --custom-cpu=2 --custom-memory=16 \
    --custom-vm-type=n2d

API

Na API, faça sua solicitação de criação de instância como faria normalmente, mas ao especificar um valor machineType, use um dos formatos a seguir:

  • Para tipos de máquinas N1, use:

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Para tipos de máquinas N2, use:

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Para tipos de máquinas N2D, use:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    

Substitua estes itens:

  • NUMBER_OF_CPUS: o número de vCPUs
  • AMOUNT_OF_MEMORY: a memória, em MB.

Por exemplo, o seguinte comando especifica um tipo de máquina N2 com 2 vCPUs e 20 GB de memória:

zones/ZONE/machineTypes/n2-custom-2-20480-ext

Adicionar memória estendida a uma instância de VM atual

Para adicionar mais memória a uma instância atual, primeiro interrompa a instância. Depois que a instância for interrompida, siga as instruções abaixo para adicionar mais memória à VM.

Console

  1. No Console do Google Cloud, acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Escolha a VM interrompida que você quer modificar na lista de VMs.

  3. Clique em Editar no topo da página.

  4. Em Configuração de máquina, selecione Uso geral.

  5. Na lista Tipo de máquina, selecione Personalizado.

  6. Selecione o número de vCPUs desejado.

  7. Para adicionar memória estendida, selecione Estender memória e especifique a quantidade de memória desejada.

  8. Salve as alterações.

gcloud

Na ferramenta de linha de comando gcloud, use o subcomando instances set-machine-type, seguido pela sinalização --custom-extensions pareada com o parâmetro --custom-memory atual.

Por exemplo, para adicionar 2 GB de memória em uma instância de VM chamada example-instance, que atualmente tem um tipo de máquina N1 com 2 vCPUs, 13 GB, na zona us-central1-b, use o seguinte comando:

gcloud compute instances set-machine-type example-instance \
   --zone=us-central1-b --custom-cpu=2 \
   --custom-memory=15 --custom-extensions

API

Na API, faça uma solicitação POST para o método setMachineType com o tipo de máquina que você quer usar especificado no corpo da solicitação. Use um dos formatos a seguir:

  • Para tipos de máquinas N1, use:

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Para tipos de máquinas N2, use:

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Para tipos de máquinas N2D, use:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    

Substitua estes itens:

  • NUMBER_OF_CPUS: o número de vCPUs
  • AMOUNT_OF_MEMORY: a memória, em MB.

Por exemplo, o seguinte comando usa um tipo de máquina com 2 vCPUs e 15 GB de memória total:

zones/ZONE/machineTypes/custom-2-15360-ext

Exemplo:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setMachineType

{
    machineType: "zones/us-central1-f/machineTypes/custom-2-15360-ext"
}

A seguir