Usar volumes NFS como repositórios de dados do vSphere no VMware Engine

Neste documento, descrevemos como usar volumes NFS como repositórios de dados do vSphere no VMware Engine. Para isso, crie e gerencie repositórios de dados NFS com suporte de instâncias do Filestore, volumes do Google Cloud NetApp Volumes ou compartilhamentos NFS de terceiros usando a API do VMware Engine ou a Google Cloud CLI. O endpoint da API é vmwareengine.googleapis.com. As operações de API e da CLI gcloud para criar, atualizar, excluir, montar e desmontar datastores são assíncronas. Quando você inicia uma dessas operações, o VMware Engine retorna um objeto de operação que pode ser usado para acompanhar o status da sua solicitação.

Pesquisar uma operação

Para acompanhar o status de uma operação, use uma solicitação GET ou a CLI gcloud.

API

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local da operação.
  • OPERATION_ID: o ID da operação que está sendo rastreada.

gcloud

gcloud vmware operations describe OPERATION_ID --location=LOCATION --project=PROJECT_ID

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local da operação.
  • OPERATION_ID: o ID da operação que está sendo rastreada.

Criar um repositório de dados NFS

Para criar um Datastore com suporte de uma instância do Filestore, um volume do Google Cloud NetApp Volumes ou um compartilhamento NFS de terceiros, use a CLI gcloud ou faça a seguinte solicitação POST:

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores?datastoreId=DATASTORE_ID

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local do Datastore.
  • DATASTORE_ID: o nome do seu Datastore.

O corpo da solicitação precisa ser um objeto JSON que contenha os detalhes do volume NFS que vai fazer backup do Datastore.

  • description: (opcional) uma breve descrição do seu Datastore.
  • nfs_datastore: (obrigatório) Um contêiner para a configuração do armazenamento de dados NFS.

Filestore

As seções a seguir descrevem como criar um Datastore com suporte do Filestore usando a API ou a CLI gcloud.

API

Para um Datastore com suporte do Filestore, forneça o seguinte em google_file_service:

  • filestore_instance: (obrigatório) o nome completo do recurso da instância do Filestore no formato projects/{project}/locations/{location}/instances/{instance}.

Exemplo de corpo da solicitação:

{
  "description": "Filestore Datastore example",
  "nfs_datastore": {
    "google_file_service": {
      "filestore_instance": "projects/FILESTORE_PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME"
    }
  }
}

Substitua:

  • FILESTORE_PROJECT_ID: o ID do projeto em que a instância do Filestore está localizada.
  • LOCATION: o local da instância do Filestore. Precisa ser igual ao local do Datastore especificado no URL da solicitação.
  • INSTANCE_NAME: o nome da instância do Filestore.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--filestore=projects/FILESTORE_PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME

Substitua:

  • DATASTORE_ID: o nome do seu Datastore.
  • LOCATION: o local do Datastore e da instância do Filestore.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • FILESTORE_PROJECT_ID: o ID do projeto em que a instância do Filestore está localizada.
  • INSTANCE_NAME: o nome da instância do Filestore.

Google Cloud NetApp Volumes

As seções a seguir descrevem como criar um Datastore com suporte do Google Cloud NetApp Volumes usando a API ou a CLI gcloud.

API

Para um Datastore com suporte do Google Cloud NetApp Volumes, forneça o seguinte em google_file_service:

  • netapp_volume: (obrigatório) o nome completo do recurso do volume do Google Cloud NetApp Volumes no formato projects/{project}/locations/{location}/volumes/{volume}.

Exemplo de corpo da solicitação:

{
  "description": "NetApp Volumes Datastore example",
  "nfs_datastore": {
    "google_file_service": {
      "netapp_volume": "projects/NETAPP_PROJECT_ID/locations/LOCATION/volumes/VOLUME_NAME"
    }
  }
}

Substitua:

  • NETAPP_PROJECT_ID: o ID do projeto em que o volume do Google Cloud NetApp Volumes está localizado.
  • LOCATION: o local do volume do Google Cloud NetApp Volumes. Precisa ser igual ao local do Datastore especificado no URL da solicitação.
  • VOLUME_NAME: o nome do seu volume do Google Cloud NetApp Volumes.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--netapp=projects/NETAPP_PROJECT_ID/locations/LOCATION/volumes/VOLUME_NAME

Substitua:

  • DATASTORE_ID: o nome do seu Datastore.
  • LOCATION: o local do Datastore e do volume do Google Cloud NetApp Volumes.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • NETAPP_PROJECT_ID: o ID do projeto em que o volume do Google Cloud NetApp Volumes está localizado.
  • VOLUME_NAME: o nome do seu volume do Google Cloud NetApp Volumes.

NFS de terceiros

As seções a seguir descrevem como criar um Datastore com suporte de um compartilhamento NFS de terceiros usando a API ou a CLI gcloud.

API

Para um Datastore com suporte de um compartilhamento NFS de terceiros, forneça o seguinte em nfs_datastore:

  • third_party_nfs: (obrigatório) contém a configuração para NFS de terceiros.
    • network:o nome da rede VPC no formato projects/{project}/global/networks/{network}.
    • file_share:o nome do compartilhamento de arquivos.
    • servers:uma lista de endereços IP do servidor.

O corpo da solicitação é semelhante a este:

{
  "description": "Third-party NFS Datastore example",
  "nfs_datastore": {
    "third_party_nfs": {
      "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
      "file_share": "FILE_SHARE_NAME",
      "servers": ["SERVER_ADDRESS_1"]
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • NETWORK_NAME: o nome da rede VPC do repositório de dados NFS de terceiros.
  • FILE_SHARE_NAME: o nome do compartilhamento de arquivos do Datastore NFS de terceiros.
  • SERVER_ADDRESS_1: um endereço IP do servidor para o repositório de dados NFS de terceiros. Adicione mais endereços à lista, se necessário.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--third-party-nfs-network=NETWORK_NAME \
--third-party-nfs-file-share=FILE_SHARE_NAME \
--third-party-nfs-servers=SERVER_ADDRESSES \
--location=LOCATION --project=PROJECT_ID

Substitua:

  • DATASTORE_ID: o nome do seu Datastore.
  • NETWORK_NAME: o nome da rede VPC do repositório de dados NFS de terceiros.
  • FILE_SHARE_NAME: o nome do compartilhamento de arquivos do Datastore NFS de terceiros.
  • SERVER_ADDRESSES: uma lista separada por vírgulas de endereços IP do servidor para o armazenamento de dados NFS de terceiros.
  • LOCATION: o local do Datastore.
  • PROJECT_ID: o ID do projeto do Google Cloud .

Listar ou receber repositórios de dados

Para listar todos os armazenamentos de dados de um determinado projeto e local, use a CLI gcloud ou faça uma solicitação GET:

API

Para listar todos os armazenamentos de dados de um determinado projeto e local, faça uma solicitação GET:

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores

Para recuperar detalhes sobre um Datastore específico, faça uma solicitação GET:

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local do Datastore.
  • DATASTORE_ID: o nome do Datastore.

gcloud

Para listar todos os armazenamentos de dados de um determinado projeto e local, use o comando gcloud vmware datastores list:

gcloud vmware datastores list \
--location=LOCATION --project=PROJECT_ID

Para recuperar detalhes sobre um Datastore específico, use o comando gcloud vmware datastores describe:

gcloud vmware datastores describe DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID

Substitua:

  • LOCATION: o local do Datastore.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • DATASTORE_ID: o nome do Datastore.

Montar um Datastore

Depois de criar um recurso de Datastore, é necessário montá-lo em um cluster do vSphere para disponibilizá-lo aos hosts ESXi. Para montar um NFS Datastore, use a CLI gcloud ou faça uma solicitação POST para o cluster de destino:

API

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID:mountDatastore

Exemplo de corpo da solicitação:

{
  "datastore_mount_config": {
    "datastore": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID",
    "datastore_network": {
      "subnet": "projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/subnets/SERVICE_SUBNET_NAME",
      "connection_count": 4
    },
    "access_mode": "READ_WRITE",
    "nfs_version": "NFS_V3"
  }
}
  • datastore:o nome do recurso do Datastore a ser montado.
  • subnet:o nome do recurso da sub-rede de serviço a ser usada para o tráfego do NFS.
  • connection_count: (opcional) o número de conexões. O padrão é 4.
  • access_mode: (opcional) o modo de acesso, READ_WRITE ou READ_ONLY. O padrão é READ_WRITE.
  • nfs_version: (opcional) A versão do NFS. O padrão é NFS_V3.

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local dos recursos.
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • CLUSTER_ID: o nome do cluster.
  • DATASTORE_ID: o nome do Datastore a ser montado.
  • SERVICE_SUBNET_NAME: o nome da sub-rede de serviço a ser usada para o tráfego NFS.

gcloud

gcloud vmware private-clouds clusters mount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID \
--subnet=SERVICE_SUBNET_NAME

Como alternativa, é possível fornecer detalhes da configuração de rede usando um arquivo JSON com a flag --datastore-network:

gcloud vmware private-clouds clusters mount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID \
--datastore-network=network-config.json

Em que network-config.json contém:

{
    "subnet": "SERVICE_SUBNET_NAME",
    "mtu": 1500,
    "connection-count": 4
}

Substitua:

  • CLUSTER_ID: o nome do cluster.
  • LOCATION: o local dos recursos.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • DATASTORE_ID: o nome do Datastore a ser montado.
  • SERVICE_SUBNET_NAME: o nome da sub-rede de serviço a ser usada para o tráfego NFS.

Após uma operação de ativação bem-sucedida, é possível conferir a configuração ativada do Datastore no recurso do cluster. O recurso de cluster inclui uma entrada DatastoreMountConfig que corresponde à montagem. Exemplo:

...
datastoreMountConfig:
- accessMode: READ_WRITE
  datastore: projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID
  datastoreNetwork:
    connectionCount: 4
    mtu: 1500
    networkPeering: projects/PROJECT_ID/locations/global/networkPeerings/PEERING_NAME
    subnet: projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/subnets/SUBNET_NAME
  fileShare: FILE_SHARE_NAME
  nfsVersion: NFS_V3
  servers:
  - SERVER_IP
...

Após uma operação de ativação bem-sucedida, a lista clusters do recurso do Datastore é atualizada. É possível descrever um Datastore para ver em quais clusters ele está montado.

API

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

gcloud

gcloud vmware datastores describe DATASTORE_ID --location=LOCATION --project=PROJECT_ID

Depois de descrever um Datastore, procure o campo clusters na resposta para ver em quais clusters o Datastore está montado. O exemplo de saída a seguir mostra um Datastore montado em um cluster:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID",
  ...
  "clusters": [
    "projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID"
  ],
  ...
}

Atualizar um Datastore

Apenas o campo description de um datastore pode ser atualizado. Para atualizar um Datastore, use a CLI gcloud ou faça uma solicitação PATCH:

API

PATCH https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Exemplo de corpo da solicitação:

{
  "description": "New datastore description"
}

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local do Datastore.
  • DATASTORE_ID: o ID do Datastore.

gcloud

gcloud vmware datastores update DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--description="DESCRIPTION"

Substitua:

  • DATASTORE_ID: o nome do Datastore.
  • LOCATION: o local do Datastore.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • DESCRIPTION: uma descrição para o Datastore.

Desmontar um Datastore

Para desmontar um repositório de dados NFS de um cluster, use a CLI gcloud ou faça uma solicitação POST:

API

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID:unmountDatastore

Exemplo de corpo da solicitação:

{
  "datastore": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID"
}

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local dos recursos.
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • CLUSTER_ID: o nome do cluster.
  • DATASTORE_ID: o nome do Datastore a ser desmontado.

gcloud

gcloud vmware private-clouds clusters unmount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Substitua:

  • CLUSTER_ID: o nome do cluster.
  • LOCATION: o local dos recursos.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • DATASTORE_ID: o nome do Datastore a ser desmontado.

Excluir um Datastore

Para excluir um recurso do Datastore, use a CLI gcloud ou faça uma solicitação DELETE. O Datastore não pode ser montado em nenhum cluster.

API

DELETE https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local do Datastore.
  • DATASTORE_ID: o nome do Datastore a ser excluído.

gcloud

gcloud vmware datastores delete DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID

Substitua:

  • DATASTORE_ID: o nome do Datastore a ser excluído.
  • LOCATION: o local do Datastore.
  • PROJECT_ID: o ID do projeto do Google Cloud .

Solução de problemas

As tabelas a seguir listam erros comuns durante a criação e a montagem do Datastore:

Criar erros do Datastore

A tabela a seguir descreve os erros que podem ocorrer ao criar repositórios de dados:

Mensagem de erro Causa Solução
A instância do servidor de arquivos NFS do Filestore não pode estar vazia. O campo filestore_instance no corpo da solicitação está vazio. Informe o nome completo do recurso da sua instância do Filestore.
O volume do servidor de arquivos NFS da NetApp não pode estar vazio. O campo netapp_volume no corpo da solicitação está vazio. Informe o nome completo do recurso do volume do Google Cloud NetApp Volumes.
Formato de campo inválido para o tipo de campo filestore_instance O campo filestore_instance não segue o formato obrigatório. Verifique se o nome do recurso está no formato projects/{project}/locations/{location}/instances/{instance}.
Formato de campo inválido para o tipo de campo netapp_volume… O campo netapp_volume não segue o formato obrigatório. Verifique se o nome do recurso está no formato projects/{project}/locations/{location}/volumes/{volume}.
O Datastore e o volume NFS estão em locais diferentes. A instância do Filestore ou o volume do Google Cloud NetApp Volumes está em um local diferente do Datastore que você está tentando criar. Verifique se o volume do NFS e o Datastore estão no mesmo local.
O usuário não tem as permissões necessárias "file.instances.get" A conta de serviço não tem as permissões necessárias do IAM para acessar a instância do Filestore. Conceda o papel roles/file.viewer ao agente de serviço do VMware Engine.
Permissão "netapp.volumes.get" negada no recurso… A conta de serviço não tem as permissões necessárias do IAM para acessar o volume do Google Cloud NetApp Volumes. Conceda o papel roles/netapp.viewer ao agente de serviço do VMware Engine.
A instância do Filestore ... não existe. Não foi possível encontrar a instância do Filestore especificada. Verifique se a instância do Filestore existe e se o nome do recurso está correto.
O volume da Netapp ... não existe. Não foi possível encontrar o volume especificado do Google Cloud NetApp Volumes. Verifique se o volume do Google Cloud NetApp Volumes existe e se o nome do recurso está correto.
A instância do Filestore tem um nível sem suporte A instância do Filestore usa um nível que não é compatível com esse recurso. Crie uma instância do Filestore com um nível compatível: zonal ou regional.
A instância do Filestore tem uma versão do NFS sem suporte A instância do Filestore usa uma versão do NFS sem suporte. Crie uma instância do Filestore com a versão 3 do NFS.
O volume da Netapp ... tem uma versão do NFS não compatível ... O volume do Google Cloud NetApp Volumes está usando uma versão do NFS sem suporte. Crie um volume do Google Cloud NetApp Volumes com a versão 3 do NFS.
O volume do Netapp ... tem a proteção contra exclusão desativada. A proteção contra exclusão do volume do Google Cloud NetApp Volumes está desativada. Ative a proteção contra exclusão no volume do Google Cloud NetApp Volumes.
Não é possível criar o Datastore. O recurso ... com a mesma configuração já existe. Já existe um Datastore com o mesmo nome e configuração. Escolha outro nome para o Datastore ou modifique a configuração.

Erros de montagem e desmontagem do Datastore

A tabela a seguir descreve os erros que podem ocorrer ao montar ou desmontar datastores:

Mensagem de erro Causa Solução
Falha na validação de DatastoreFormat. O formato especificado do Datastore não é compatível ou é inválido. Verifique se o formato do Datastore é compatível com o VMware Engine (por exemplo, NFSv3).
Intervalo de MTU inválido, deve ser de 1.300 a 9.000 O valor da MTU (unidade máxima de transmissão) fornecido para a rede do Datastore está fora do intervalo aceitável de 1.300 a 9.000. Especifique um valor de MTU entre 1300 e 9000.
O projeto do Datastore não é igual ao projeto do cluster O ID do projeto Google Cloud do Datastore não corresponde ao ID do projeto Google Cloud do cluster do vSphere. Verifique se o Datastore e o cluster pertencem ao mesmo projeto Google Cloud .
MTU inválido. O MTU precisa ser consistente com o MTU do Datastore montado no cluster. A MTU da nova rede do Datastore é inconsistente com a MTU de outros armazenamentos de dados NFS já montados no mesmo cluster. Alinhe a MTU do novo Datastore com a MTU dos Datastores montados no cluster.
O Datastore precisa estar presente e no estado "Pronto". O recurso do Datastore especificado não existe ou não está no estado READY. Verifique se o Datastore foi criado e se o status é READY usando a API Get ou List Datastore.
Para terceirização interna, o Filestore ou NetApp referenciado precisa estar presente e pronto. A instância do Filestore ou o volume do Google Cloud NetApp Volumes subjacente está ausente ou não está no estado READY. Verifique se o volume do NFS referenciado existe e está no estado READY no projeto Google Cloud .
O peering de rede precisa estar ativo entre a VPC de compartilhamento de arquivos e a rede do VMware Engine da nuvem privada do cluster. Uma conexão de peering de rede VPC é necessária entre a rede VPC em que o volume NFS reside e a rede do VMware Engine da nuvem privada. Essa conexão está ausente ou não está no estado ACTIVE. Confirme se há uma conexão de peering de rede VPC ativa entre a VPC do compartilhamento de arquivos e a rede do VMware Engine da sua nuvem privada.
Falha na operação de montagem em redes legadas Para redes legadas, a conexão particular com o projeto do locatário do volume NFS está ausente ou inativa. Verifique se há uma conexão privada ativa com o projeto do locatário antes de tentar montar o Datastore. Não exclua uma conexão particular que um Datastore montado esteja usando.
Para terceiros, a opção de exportação precisa ser adicionada para permitir o uso da sub-rede do PC para montagem. A política de exportação no volume NFS não inclui a sub-rede de serviço da nuvem privada para acesso. Modifique a política de exportação do volume NFS para permitir o acesso da sub-rede de serviço da nuvem privada que será usada para montagem.
A sub-rede precisa estar presente com um CIDR de IP válido configurado A sub-rede de serviço especificada para a rede do Datastore está ausente ou não tem um intervalo CIDR de IP válido configurado. Verifique se a sub-rede de serviço designada existe e tem um intervalo CIDR de IP configurado corretamente, suficiente para alocar IPs a todos os hosts ESXi no cluster.
Formato do Datastore inválido O nome do recurso do Datastore especificado não está em um formato reconhecido ou correto, o que impede a operação de desmontagem. Verifique se o nome do recurso do Datastore fornecido na solicitação de desmontagem está correto e segue o formato projects/{project}/locations/{location}/datastores/{datastore_id}.
Datastore não está montado no cluster O Datastore que você está tentando desmontar não está montado no cluster especificado. Antes de tentar desmontar, confirme se o Datastore está montado no cluster vSphere de destino.