Crea un'istanza

Un'istanza Bigtable è un container per Bigtable cluster. Un'istanza con più di un cluster utilizza replica. Puoi creare cluster in un massimo di 8 regioni, con quanti più cluster in ognuna perché esistono zone.

Questa pagina spiega come creare un'istanza. Prima di leggere questa pagina, dovresti conoscere le panoramica di Bigtable. Dovresti leggi anche la panoramica su istanze, cluster e nodi.

Prima di iniziare

Prepara l'ambiente:

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Bigtable API, Cloud Bigtable Admin API APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Bigtable API, Cloud Bigtable Admin API APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Esegui il seguente comando per installare cbt CLI:
    gcloud components install cbt

Pianifica la configurazione:

  1. (Facoltativo) Se prevedi di abilitare la replica, segui questi passaggi:

  2. (Facoltativo) Se vuoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) anziché la crittografia predefinita gestita da Google, completa le attività in Creazione di un'istanza abilitata per CMEK e ID chiave CMEK pronto prima di creare la nuova istanza. Non puoi Aggiungere la protezione CMEK a un'istanza dopo averla creata modificare o sostituire la chiave CMEK dopo la creazione dell'istanza.

Crea un'istanza

Per creare un'istanza Bigtable:

Console

  1. Nella console Google Cloud, vai alla pagina Crea istanza.

    Vai a Crea istanza

  2. Inserisci un nome per l'istanza.

    La console Google Cloud mostra questo nome per identificare l'istanza.

  3. Inserisci un ID istanza.

    L'ID istanza è un identificatore permanente per l'istanza.

  4. Fai clic su Continua.

  5. Scegli se utilizzare un disco SSD o HDD per i cluster. Nella maggior parte dei casi, in questi casi, l'SSD è la scelta migliore. Questa scelta è definitiva. Scopri di più.

  6. Fai clic su Continua.

  7. Inserisci un ID cluster per il primo cluster.

    L'ID cluster è un identificatore permanente per il cluster.

  8. Scegli la regione e la zona in cui verrà eseguito il primo cluster.

  9. Scegli una modalità di scalabilità dei nodi per il cluster. Nella maggior parte dei casi, dovresti e scegliere la scalabilità automatica. Per indicazioni sulla scalabilità, consulta la sezione Scalabilità automatica.

    1. In Allocazione manuale dei nodi, inserisci il numero di nodi Bigtable per il primo cluster. Se non sai di quanti nodi hai bisogno, utilizza il valore predefinito. Puoi aggiungere altri nodi in un secondo momento.
    2. Per Scalabilità automatica, inserisci i valori seguenti:
      • Numero minimo di nodi
      • Numero massimo di nodi
      • Target di utilizzo CPU
      • Target di utilizzo dello spazio di archiviazione
  10. (Facoltativo) Per proteggere l'istanza con CMEK anziché quella predefinita Crittografia gestita da Google, completa i seguenti passaggi:

    1. Fai clic su Mostra opzioni di crittografia.
    2. Seleziona il pulsante di opzione accanto a Chiave di crittografia gestita dal cliente (CMEK).
    3. Seleziona o inserisci il nome della risorsa per la chiave CMEK che che vuoi utilizzare per il cluster. Non potrai aggiungerlo in un secondo momento.
    4. Se ti viene chiesto di concedere l'autorizzazione al servizio della chiave CMEK account fai clic su Concedi. Al tuo account utente deve essere concesso Ruolo Amministratore Cloud KMS per completare questa attività.
    5. Fai clic su Salva.
  11. (Facoltativo) Per abilitare la replica ora, completa i seguenti passaggi aggiuntivi passaggi:

    1. Fai clic su Mostra opzioni avanzate.
    2. Fai clic su Aggiungi cluster, inserisci le impostazioni per il cluster e quindi fai clic su Aggiungi. Ripeti questo passaggio per creare altri cluster in l'istanza. Puoi anche abilitare la replica in un secondo momento aggiungendo un cluster.

    Ogni zona di una regione può contenere un solo cluster. Se il pulsante Aggiungi cluster è disabilitata, cambia la zona per il tuo primo cluster.

    Per creare un'istanza con più di sei cluster, devi prima creare con sei cluster, quindi aggiungine altri all'istanza.

  12. Fai clic sul pulsante Crea per creare l'istanza.

  13. Esamina la replica impostazioni nel profilo dell'app predefinito per controllare se possono essere utili per il tuo caso d'uso della replica. Potresti dover aggiornare il profilo dell'app predefinito o creare profili dell'app personalizzati.

gcloud

  1. Utilizza il comando bigtable instances create per creare di un'istanza:

    gcloud bigtable instances create INSTANCE_ID \
        --display-name=DISPLAY_NAME \
        [--cluster-storage-type=CLUSTER_STORAGE_TYPE] \
        [--cluster-config=id=CLUSTER_ID,zone=CLUSTER_ZONE, \
        nodes=NODES] \
        [--cluster-config=id=CLUSTER_ID,zone=CLUSTER_ZONE, \
        autoscaling-min-nodes=AUTOSCALING_MIN_NODES, \
        autoscaling-max-nodes=AUTOSCALING_MAX_NODES, \
        autoscaling-cpu-target=AUTOSCALING_CPU_TARGET, \
        autoscaling-storage-target=AUTOSCALING_STORAGE_TARGET, \
        kms-key=KMS_KEY]
    

    Sostituisci quanto segue:

    • INSTANCE_ID: L'identificatore permanente dell'istanza.
    • DISPLAY_NAME: Un nome leggibile che identifica l'istanza nella console Google Cloud.
    • CLUSTER_ID: L'identificatore permanente per il cluster.
    • CLUSTER_ZONE: La zona in cui viene eseguito il cluster.

    Devi configurare almeno un cluster per l'istanza, utilizzando il metodo --cluster-config flag. Per creare un'istanza con più cluster, ripeti il flag --cluster-config per ogni cluster.

    Per l'allocazione manuale dei nodi, l'impostazione nodes nel flag --cluster-config è facoltativa. Se non viene impostato alcun valore, Bigtable alloca automaticamente i nodi al cluster in base all'impronta dei dati e ottimizza per il 50% l'utilizzo dello spazio di archiviazione. L'allocazione automatica nodi ha un impatto sui prezzi. Se vuoi controllare il numero di nodi in un cluster, sostituisci NODES con il numero di nodi che vuoi nel cluster. Scopri di più sui nodi.

    Nella maggior parte dei casi, scegli la scalabilità automatica anziché l'allocazione manuale dei nodi. Per la scalabilità automatica, fornisci autoscaling- opzioni nella --cluster-config (autoscaling-storage-target è facoltativo) e non usare nodes. Consulta Scalabilità automatica per una guida su come scegliere i valori per le impostazioni di scalabilità automatica. Sostituisci quanto segue per le chiavi di opzione cluster-config:

    • AUTOSCALING_MIN_NODES: il numero minimo di nodi per il cluster.
    • AUTOSCALING_MAX_NODES: il numero massimo di nodi per il cluster.
    • AUTOSCALING_CPU_TARGET: la percentuale di utilizzo della CPU target per nel cluster. Questo valore deve essere compreso tra 10 e 80.
    • (Facoltativo) AUTOSCALING_STORAGE_TARGET: l'utilizzo dello spazio di archiviazione in GiB che Bigtable gestisce aggiungendo rimuovendo i nodi.
    • KMS_KEY: la chiave CMEK per il cluster.

      Il valore KMS_KEY deve essere impostato nel seguente formato:

      projects/PROJECT/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
      
      

      Sostituisci quanto segue:

      • PROJECT: l'identificatore permanente del progetto
      • LOCATION: la località del cluster
      • KEYRING: il nome del keyring che contiene la chiave
      • KEY: il nome della chiave

      Di seguito è riportato un esempio:

      projects/examplestore.com:dev/locations/us-east1/keyRings/devt-cmek-2/cryptoKeys/key2

      Se l'istanza è protetta da CMEK, ogni cluster deve trovarsi della sua chiave CMEK. Puoi aggiungere cluster CMEK solo a istanze già protette da CMEK. Scopri di più.

    Il comando accetta i seguenti flag facoltativi:

    • --cluster-storage-type=CLUSTER_STORAGE_TYPE: il tipo di spazio di archiviazione a cui per l'istanza. Il valore predefinito è SSD. Nella maggior parte dei casi, il valore predefinito è il migliore. Questa scelta è definitiva. Scopri di più.

    • --project=PROJECT: il progetto in cui creare il cluster se diverso da quello attuale.

  2. Esamina la replica impostazioni nel profilo dell'app predefinito per controllare se possono essere utili per il tuo caso d'uso della replica. Potresti dover aggiornare il profilo dell'app predefinito o creare profili dell'app personalizzati.

cbt

  1. Inizia creando un'istanza con un singolo cluster. Utilizza il comando createinstance per creare un'istanza istanza:

    cbt createinstance INSTANCE_ID \
        DISPLAY_NAME \
        CLUSTER_ID \
        CLUSTER_ZONE \
        CLUSTER_NUM_NODES \
        CLUSTER_STORAGE_TYPE
    

    Fornisci quanto segue:

    • INSTANCE_ID: l'identificatore permanente dell'istanza.
    • DISPLAY_NAME: Un nome leggibile che identifica l'istanza nella console Google Cloud.
    • CLUSTER_ID: l'identificatore permanente del cluster.
    • CLUSTER_ZONE: La zona in cui viene eseguito il cluster.
    • CLUSTER_NUM_NODES: questo campo è facoltativo. Se non viene impostato alcun valore, Bigtable alloca automaticamente i nodi in base al tuo footprint dei dati e ottimizza per il 50% di utilizzo dello spazio di archiviazione. Se vuoi controllare il numero di nodi in un cluster, aggiorna Valore CLUSTER_NUM_NODES. Assicurati che il numero di nodi sia impostato su un valore diverso da zero. Scopri di più sui nodi.
    • CLUSTER_STORAGE_TYPE: Il tipo di spazio di archiviazione da utilizzare per il cluster. Ogni cluster di un'istanza deve utilizzare lo stesso tipo di archiviazione. Accetta i valori SSD e HDD. Nella maggior parte dei casi, SSD è il migliore. Questa scelta è definitiva. Scopri di più.
  2. Per abilitare la replica, utilizza il comando createcluster per aggiungere un cluster:

    
    cbt -instance=INSTANCE_ID \
    createcluster CLUSTER_ID \
    ZONE \
    NUM_NODES \
    STORAGE_TYPE
    
    

    Fornisci quanto segue:

    • INSTANCE_ID: L'identificatore permanente per l'istanza appena creata.
    • CLUSTER_ID: L'identificatore permanente per il cluster.
    • ZONE: La zona in cui viene eseguito il cluster.

      Ogni zona di una regione può contenere un solo cluster. Ad esempio, se un'istanza ha un cluster in us-east1-b, puoi aggiungere un cluster in un'altra zona della stessa regione, ad esempio us-east1-c, o in una zona di un'altra regione, ad esempio europe-west2-a.

    • NUM_NODES: Questo campo è facoltativo. Se non viene impostato alcun valore, Bigtable automaticamente alloca i nodi in base all'ingombro dei dati e ottimizza per il 50% di spazio di archiviazione all'utilizzo delle risorse. Se vuoi controllare il numero di nodi in un cluster, aggiorna Valore NUM_NODES. Assicurati che il numero di nodi sia impostato su un valore diverso da zero.

      In molti casi, ogni cluster in un'istanza dovrebbe avere lo stesso numero di nodi, ma eccezioni. Scopri di più sui nodi e replica.

    • STORAGE_TYPE: Il tipo di spazio di archiviazione da utilizzare per il cluster. Ogni cluster in un'istanza deve utilizzare lo stesso spazio di archiviazione di testo. Accetta i valori SSD e HDD.

  3. (Facoltativo) Esamina le impostazioni di replica nel profilo dell'app predefinito per verificare se sono appropriate per il tuo caso d'uso della replica. Potresti dover aggiorna l'app predefinita profilo o crea un profili delle app.

C++

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

namespace cbta = ::google::cloud::bigtable_admin;
using ::google::cloud::future;
using ::google::cloud::Location;
using ::google::cloud::Project;
using ::google::cloud::StatusOr;
[](cbta::BigtableInstanceAdminClient instance_admin,
   std::string const& project_id, std::string const& instance_id,
   std::string const& zone) {
  auto const project = Project(project_id);
  std::string project_name = project.FullName();
  std::string cluster_id = instance_id + "-c1";

  google::bigtable::admin::v2::Instance in;
  in.set_type(google::bigtable::admin::v2::Instance::PRODUCTION);
  in.set_display_name("Put description here");

  google::bigtable::admin::v2::Cluster cluster;
  cluster.set_location(Location(project, zone).FullName());
  cluster.set_serve_nodes(3);
  cluster.set_default_storage_type(google::bigtable::admin::v2::HDD);

  std::map<std::string, google::bigtable::admin::v2::Cluster> cluster_map = {
      {cluster_id, std::move(cluster)}};

  future<StatusOr<google::bigtable::admin::v2::Instance>> instance_future =
      instance_admin.CreateInstance(project_name, instance_id, std::move(in),
                                    std::move(cluster_map));
  // Show how to perform additional work while the long running operation
  // completes. The application could use future.then() instead.
  std::cout << "Waiting for instance creation to complete " << std::flush;
  instance_future.wait_for(std::chrono::seconds(1));
  std::cout << '.' << std::flush;
  auto instance = instance_future.get();
  if (!instance) throw std::move(instance).status();
  std::cout << "DONE, details=" << instance->DebugString() << "\n";
}

C#

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

// Creates a production instance with "<intanceId>-prod" instance ID,
// with cluster ID "ssd-cluster1", 3 nodes and location us-east1-b.
displayName += " Prod"; // Display name is for display purposes only. It doesn't have to equal instanceId and can be amended after instance is created.
string instanceId = Regex.Replace(displayName, @"[^A-Za-z0-9_\.~]+", "-").ToLower();

// Please refer to the link below for the full list of available locations:
// https://cloud.google.com/bigtable/docs/locations
string zone1 = "us-east1-b";

// The instance to create.
Instance myInstance = new Instance
{
    DisplayName = displayName,
    // You can choose DEVELOPMENT or PRODUCTION type here.
    // If not set, will default to PRODUCTION type.
    // Instance type can be upgraded from DEVELOPMENT to PRODUCTION but cannot be dowgraded after the instance is created.
    Type = Instance.Types.Type.Production,
    Labels = { { "prod-label", "prod-label" } }
};

// The first cluster to be created within the instance.
Cluster myCluster1 = new Cluster
{
    // You can choose SSD or HDD storage type here: StorageType.Ssd or StorageType.Hdd.
    // Cluster storage type can not be changed after the instance is created.
    // If not set will default to SSD type.
    DefaultStorageType = StorageType.Ssd,
    LocationAsLocationName = new LocationName(projectId, zone1),
    // Serve Nodes count can only be set if PRODUCTION type instance is being created.
    // Minimum count of 3 serve nodes must be specified.
    // Serve Nodes count can be increased and decreased after an instance is created.
    ServeNodes = 3
};

// Initialize request argument(s).
CreateInstanceRequest request = new CreateInstanceRequest
{
    ParentAsProjectName = new ProjectName(projectId),
    Instance = myInstance,
    InstanceId = instanceId,
    // Must specify at lease one cluster.
    // Only PRODUCTION type instance can be created with more than one cluster.
    // Currently all clusters must have the same storage type.
    // Clusters must be set to different locations.
    Clusters = { { "ssd-cluster1", myCluster1 } }
};

try
{
    // Make a request.
    Operation<Instance, CreateInstanceMetadata> createInstanceResponse =
        bigtableInstanceAdminClient.CreateInstance(request);
    Console.WriteLine("Waiting for operation to complete...");

    // Poll until the returned long-running operation is complete
    Operation<Instance, CreateInstanceMetadata> completedResponse =
        createInstanceResponse.PollUntilCompleted();
}
catch (Exception ex)
{
    Console.WriteLine($"Exception while creating {displayName} instance");
    Console.WriteLine(ex.Message);
}

Java

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

// Creates a Production Instance with the ID "ssd-instance",
// cluster id "ssd-cluster", 3 nodes and location "us-central1-f".
CreateInstanceRequest createInstanceRequest =
    CreateInstanceRequest.of(instanceId)
        .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD)
        .setType(Instance.Type.PRODUCTION)
        .addLabel("department", "accounting");
// Creates a production instance with the given request.
try {
  Instance instance = adminClient.createInstance(createInstanceRequest);
  System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getId());
} catch (Exception e) {
  System.err.println("Failed to create instance: " + e.getMessage());
  throw e;
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

// Creates a Production Instance with the ID "ssd-instance"
// with cluster id "ssd-cluster", 3 nodes and location us-central1-f

const instanceOptions = {
  clusters: [
    {
      id: clusterID,
      nodes: 3,
      location: 'us-central1-f',
      storage: 'ssd',
    },
  ],
  type: 'PRODUCTION', // Optional as default type is PRODUCTION
  labels: {'prod-label': 'prod-label'},
};

// Create production instance with given options
const [prodInstance, operation] = await instance.create(instanceOptions);
await operation.promise();
console.log(`Created Instance: ${prodInstance.id}`);

PHP

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

use Exception;
use Google\ApiCore\ApiException;
use Google\Cloud\Bigtable\Admin\V2\Client\BigtableInstanceAdminClient;
use Google\Cloud\Bigtable\Admin\V2\Cluster;
use Google\Cloud\Bigtable\Admin\V2\CreateInstanceRequest;
use Google\Cloud\Bigtable\Admin\V2\GetInstanceRequest;
use Google\Cloud\Bigtable\Admin\V2\Instance;
use Google\Cloud\Bigtable\Admin\V2\Instance\Type as InstanceType;
use Google\Cloud\Bigtable\Admin\V2\StorageType;

/**
 * Create a production Bigtable instance
 *
 * @param string $projectId The Google Cloud project ID
 * @param string $instanceId The ID of the Bigtable instance to be generated
 * @param string $clusterId The ID of the cluster to be generated
 * @param string $locationId The Bigtable region ID where you want your instance to reside
 */
function create_production_instance(
    string $projectId,
    string $instanceId,
    string $clusterId,
    string $locationId = 'us-east1-b'
): void {
    $instanceAdminClient = new BigtableInstanceAdminClient();

    $projectName = $instanceAdminClient->projectName($projectId);
    $instanceName = $instanceAdminClient->instanceName($projectId, $instanceId);

    $serveNodes = 3;
    $storageType = StorageType::SSD;
    $production = InstanceType::PRODUCTION;
    $labels = ['prod-label' => 'prod-label'];

    $instance = new Instance();
    $instance->setDisplayName($instanceId);

    $instance->setLabels($labels);
    $instance->setType($production);

    $cluster = new Cluster();
    $cluster->setDefaultStorageType($storageType);
    $locationName = $instanceAdminClient->locationName($projectId, $locationId);
    $cluster->setLocation($locationName);
    $cluster->setServeNodes($serveNodes);
    $clusters = [
        $clusterId => $cluster
    ];
    try {
        $getInstanceRequest = (new GetInstanceRequest())
            ->setName($instanceName);
        $instanceAdminClient->getInstance($getInstanceRequest);
        printf('Instance %s already exists.' . PHP_EOL, $instanceId);
        throw new Exception(sprintf('Instance %s already exists.' . PHP_EOL, $instanceId));
    } catch (ApiException $e) {
        if ($e->getStatus() === 'NOT_FOUND') {
            printf('Creating an Instance: %s' . PHP_EOL, $instanceId);
            $createInstanceRequest = (new CreateInstanceRequest())
                ->setParent($projectName)
                ->setInstanceId($instanceId)
                ->setInstance($instance)
                ->setClusters($clusters);
            $operationResponse = $instanceAdminClient->createInstance($createInstanceRequest);
            $operationResponse->pollUntilComplete();
            if (!$operationResponse->operationSucceeded()) {
                print('Error: ' . $operationResponse->getError()->getMessage());
            } else {
                printf('Instance %s created.', $instanceId);
            }
        } else {
            throw $e;
        }
    }
}

Python

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per autenticarti a Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

cluster = instance.cluster(
    cluster_id,
    location_id=location_id,
    serve_nodes=serve_nodes,
    default_storage_type=storage_type,
)
if not instance.exists():
    print("\nCreating an instance")
    # Create instance with given options
    operation = instance.create(clusters=[cluster])
    # Ensure the operation completes.
    operation.result(timeout=480)
    print("\nCreated instance: {}".format(instance_id))

Ruby

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

# instance_id      = "my-instance"
# cluster_id       = "my-cluster"
# cluster_location = "us-east1-b"
puts "Creating a PRODUCTION Instance"
job = bigtable.create_instance(
  instance_id,
  display_name: "Sample production instance",
  labels:       { "env": "production" },
  type:         :PRODUCTION # Optional as default type is :PRODUCTION
) do |clusters|
  clusters.add cluster_id, cluster_location, nodes: 3, storage_type: :SSD
end

job.wait_until_done!
instance = job.instance
puts "Created Instance: #{instance.instance_id}"

Passaggi successivi