Crea un'istanza

Un'istanza Bigtable è un contenitore per i cluster Bigtable. Un'istanza con più di un cluster utilizza la replica. Puoi creare cluster in un massimo di 8 regioni, con un numero di cluster in ogni regione pari al numero di zone.

Questa pagina spiega come creare un'istanza. Prima di leggere questa pagina, devi conoscere la panoramica di Bigtable. Ti consigliamo inoltre di leggere la panoramica di 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 attivare la replica, svolgi i seguenti passaggi:

  2. (Facoltativo) Se vuoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) anziché la crittografia gestita da Google predefinita, completa le attività descritte in Creare un'istanza abilitata per CMEK e tieni a portata di mano l'ID chiave CMEK prima di creare la nuova istanza. Non puoi aggiungere la protezione CMEK a un'istanza dopo averla creata e non puoi 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 dell'istanza.

  4. Fai clic su Continua.

  5. Scegli se utilizzare un disco SSD o HDD per i tuoi cluster. Nella maggior parte dei casi, l'unità 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 del 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 scegliere l'autoscaling. Per indicazioni sulla scalabilità, consulta Scalabilità automatica.

    1. In Allocazione manuale dei nodi, inserisci il numero di nodi Bigtable per il primo cluster. Se non sai con certezza quanti nodi ti occorrono, utilizza il valore predefinito. Puoi aggiungere altri nodi in un secondo momento.
    2. Per Scalabilità automatica, inserisci i valori per quanto segue:
      • Numero minimo di nodi
      • Numero massimo di nodi
      • Target di utilizzo della CPU
      • Target di utilizzo dello spazio di archiviazione
  10. (Facoltativo) Per proteggere l'istanza con CMEK anziché con la crittografia gestita da Google predefinita, svolgi 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 vuoi utilizzare per il cluster. Non potrai aggiungerlo in un secondo momento.
    4. Se ti viene chiesto di concedere l'autorizzazione all'account di servizio della chiave CMEK, fai clic su Concedi. Per completare questa attività, al tuo account utente deve essere concesso il ruolo Amministratore Cloud KMS.
    5. Fai clic su Salva.
  11. (Facoltativo) Per attivare subito la replica, completa i seguenti passaggi aggiuntivi:

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

    Ogni zona di una regione può contenere un solo cluster. Se il pulsante Aggiungi cluster è disabilitato, modifica la zona del primo cluster.

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

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

  13. Esamina le impostazioni di replica nel profilo dell'app predefinito per verificare se sono appropriate per il tuo caso d'uso di 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 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 del cluster.
    • CLUSTER_ZONE: la zona in cui viene eseguito il cluster.

    Devi configurare almeno un cluster per l'istanza utilizzando il flag --cluster-config. 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 al footprint dei dati e ottimizza per l'utilizzo del 50% dello spazio di archiviazione. Questa allocazione automatica dei 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 For_autoscaling, fornisci le opzioni autoscaling- nel --cluster-config flag (autoscaling-storage-target è facoltativo) e non utilizzare nodes. Consulta la sezione Scalabilità automatica per indicazioni 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 il cluster. Questo valore deve essere compreso tra 10 e 80.
    • AUTOSCALING_STORAGE_TARGET: (Facoltativo) Il target di utilizzo dello spazio di archiviazione in GiB mantenuto da Bigtable aggiungendo o 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 posizione 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 nella stessa regione della 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 archiviazione da utilizzare 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 corrente.

  2. Esamina le impostazioni di replica nel profilo dell'app predefinito per verificare se sono appropriate per il tuo caso d'uso di 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. Usa il comando createinstance per creare un'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 il 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 è la soluzione migliore. Questa scelta è definitiva. Scopri di più.
  2. Per attivare 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 dell'istanza appena creata.
    • CLUSTER_ID: l'identificatore permanente del 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 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 il valore NUM_NODES. Assicurati che il numero di nodi sia impostato su un valore diverso da zero.

      In molti casi, ogni cluster di un'istanza deve avere lo stesso numero di nodi, ma esistono delle eccezioni. Scopri di più su nodi e replica.

    • 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.

  3. (Facoltativo) Esamina le impostazioni di replica nel profilo dell'app predefinito per verificare se sono appropriate per il tuo caso d'uso di replica. Potresti dover aggiornare il profilo dell'app predefinito o creare profili dell'app personalizzati.

C++

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

Per autenticarti a 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 Bigtable.

Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 Bigtable.

Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 Bigtable.

Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 Bigtable.

Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 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 Bigtable.

Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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