Condividi tramite


Gestire la disponibilità elevata

Importante

La scalabilità automatica di Lakebase è la versione più recente di Lakebase, con calcolo autoscalabile, scalabilità fino a zero, ramificazione e ripristino immediato. Per le aree supportate, vedere Disponibilità dell'area. Se sei un utente provisioning di Lakebase, vedere Lakebase provisioning.

Questa guida illustra l'abilitazione e la gestione della disponibilità elevata per gli endpoint Lakebase. Per informazioni generali sul funzionamento della disponibilità elevata e sul modo in cui le istanze di calcolo secondarie differiscono dalle repliche di lettura autonome, vedere Disponibilità elevata.

Abilitare la disponibilità elevata

Per abilitare la disponibilità elevata, impostare il tipo di calcolo e la configurazione a disponibilità elevata nell'interfaccia utente o configurare l'endpoint tramite l'API EndpointGroupSpec .

Prerequisiti

  • Scala a zero deve essere disabilitata. Nell'interfaccia utente impostare Scale su zero su Off nel pannello di calcolo di modifica. Tramite l'API impostare no_suspension: true nella specifica dell'endpoint (usare spec.suspension come maschera di aggiornamento).

INTERFACCIA UTENTE

Dopo aver creato un progetto, fare clic sul collegamento di calcolo primario dal dashboard del progetto per aprire il pannello di calcolo di modifica.

Dashboard del progetto che mostra il ramo di produzione con il suo collegamento computazionale principale

Impostare Tipo di calcolo su Disponibilità elevata, quindi scegliere una configurazione in Disponibilità elevata:

  • 2 (1 primario, 1 secondario),
  • 3 (1 primario, 2 secondari)
  • o 4 (1 istanze di calcolo primarie, 3 secondarie) totali.

Modificare il pannello di calcolo con l'interruttore Tipo di calcolo impostato su Disponibilità elevata e l'elenco a discesa Configurazione con le opzioni per 2, 3 o 4 istanze di calcolo totali

Lakebase effettua il provisioning di istanze di calcolo secondarie in zone di disponibilità diverse. Quando tutte le istanze di calcolo sono attive, l'endpoint ha il failover automatico.

PYTHON SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    Endpoint, EndpointSpec, EndpointType, EndpointGroupSpec, FieldMask
)

w = WorkspaceClient()

endpoint_name = "projects/my-project/branches/production/endpoints/my-endpoint"

result = w.postgres.update_endpoint(
    name=endpoint_name,
    endpoint=Endpoint(
        name=endpoint_name,
        spec=EndpointSpec(
            endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE,
            group=EndpointGroupSpec(
                min=2,
                max=2,
                enable_readable_secondaries=True
            )
        )
    ),
    update_mask=FieldMask(field_mask=["spec.group"])
).wait()

print(f"Group size: {result.status.group.max}")
print(f"Host: {result.status.hosts.host}")
print(f"Read-only host: {result.status.hosts.read_only_host}")

CLI

databricks postgres update-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  "spec.group" \
  --json '{
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }'

curva

curl -X PATCH "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint?update_mask=spec.group" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-endpoint",
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }' | jq

Configurare l'accesso in sola lettura alle istanze di calcolo secondarie

Consenti l'accesso alle istanze di calcolo di sola lettura controlla se le istanze di calcolo secondarie gestiscono il traffico di lettura tramite la stringa di connessione -ro.

INTERFACCIA UTENTE

  1. Nella scheda Calcolo fare clic su Modifica nell'ambiente di calcolo primario.
  2. In Disponibilità elevata, selezionare o deselezionare Consenti l'accesso alle istanze di calcolo di sola lettura.
  3. Fare clic su Salva.

PYTHON SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    Endpoint, EndpointSpec, EndpointType, EndpointGroupSpec, FieldMask
)

w = WorkspaceClient()

endpoint_name = "projects/my-project/branches/production/endpoints/my-endpoint"

# Get current group size first
current = w.postgres.get_endpoint(name=endpoint_name)
current_size = current.status.group.max

w.postgres.update_endpoint(
    name=endpoint_name,
    endpoint=Endpoint(
        name=endpoint_name,
        spec=EndpointSpec(
            endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE,
            group=EndpointGroupSpec(
                min=current_size,
                max=current_size,
                enable_readable_secondaries=True  # set False to disable
            )
        )
    ),
    update_mask=FieldMask(field_mask=["spec.group.enable_readable_secondaries"])
).wait()

CLI

# Replace 2 with your current group size
databricks postgres update-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  "spec.group.enable_readable_secondaries" \
  --json '{
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }'

curva

# Replace 2 with your current group size
curl -X PATCH "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint?update_mask=spec.group.enable_readable_secondaries" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-endpoint",
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }' | jq

Avviso

Con solo un'istanza di calcolo secondaria e l'accesso in lettura abilitato, tutto il traffico in lettura nella stringa di connessione -ro viene interrotto durante un failover fino a quando non viene aggiunta un'istanza sostitutiva. Per l'accesso in lettura resiliente, configurare due o più istanze di calcolo secondarie con l'accesso in lettura abilitato.

Modificare il numero di istanze di calcolo secondarie

INTERFACCIA UTENTE

  1. Nella scheda Calcolo fare clic su Modifica nell'ambiente di calcolo primario.
  2. In Disponibilità elevata scegliere una nuova configurazione di calcolo dall'elenco a discesa (2, 3 o 4 istanze di calcolo totali).
  3. Fare clic su Salva.

Annotazioni

Per disabilitare la disponibilità elevata, impostare il tipo di calcolo su Calcolo singolo. In questo modo vengono rimosse tutte le istanze di calcolo secondarie e l'endpoint torna a una configurazione a calcolo singolo.

PYTHON SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    Endpoint, EndpointSpec, EndpointType, EndpointGroupSpec, FieldMask
)

w = WorkspaceClient()

endpoint_name = "projects/my-project/branches/production/endpoints/my-endpoint"

# Scale to 3 compute instances (1 primary + 2 secondaries)
w.postgres.update_endpoint(
    name=endpoint_name,
    endpoint=Endpoint(
        name=endpoint_name,
        spec=EndpointSpec(
            endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE,
            group=EndpointGroupSpec(min=3, max=3)
        )
    ),
    update_mask=FieldMask(field_mask=["spec.group.min", "spec.group.max"])
).wait()

CLI

# Scale to 3 compute instances (1 primary + 2 secondaries)
databricks postgres update-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  "spec.group.min,spec.group.max" \
  --json '{
    "spec": {
      "group": { "min": 3, "max": 3 }
    }
  }'

curva

curl -X PATCH "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint?update_mask=spec.group.min,spec.group.max" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-endpoint",
    "spec": {
      "group": { "min": 3, "max": 3 }
    }
  }' | jq

Visualizzare lo stato e i ruoli a disponibilità elevata

La scheda Calcolo mostra ogni istanza di calcolo nella configurazione a disponibilità elevata con il ruolo, lo stato e il livello di accesso correnti.

Scheda Calcola che mostra un'istanza di calcolo primaria con accesso in lettura/scrittura e tre istanze di calcolo secondarie con accesso in sola lettura, tutte ATTIVE

colonna Valori
Role Primario, Secondario
Stato Avvio, Attivo
Access Lettura/scrittura (primaria), sola lettura (istanza di calcolo secondaria con accesso abilitato), Disabilitata (istanza di calcolo secondaria senza accesso in lettura)

L'intestazione di calcolo primaria mostra anche l'ID endpoint, l'intervallo di scalabilità automatica e il conteggio secondario ,ad esempio 8 ↔ 16 CU · 3 secondaries.

Ottenere stringhe di connessione

INTERFACCIA UTENTE

Fare clic su Connetti nel calcolo primario per aprire la finestra di dialogo dei dettagli della connessione. L'elenco a discesa Compute contiene entrambe le opzioni della connessione per l'endpoint ad alta disponibilità.

Finestra di dialogo Dettagli connessione che mostra l'elenco a discesa Compute aperto con le opzioni Primaria e Secondaria RO e la stringa di connessione di sola lettura visualizzata

Opzione di calcolo Stringa di connessione Usare per
Primary (name) ● Active {endpoint-id}.database.{region}.databricks.com Tutte le operazioni di scrittura e le connessioni di lettura/scrittura
Secondary (name) ● Active RO {endpoint-id}-ro.database.{region}.databricks.com Eseguire l'offload in istanze di calcolo secondarie

La stringa di connessione -ro è disponibile solo quando Consenti l'accesso alle istanze di calcolo di sola lettura è attivato.

PYTHON SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

endpoint = w.postgres.get_endpoint(
    name="projects/my-project/branches/production/endpoints/my-endpoint"
)

print(f"Read/write host: {endpoint.status.hosts.host}")
print(f"Read-only host:  {endpoint.status.hosts.read_only_host}")

CLI

databricks postgres get-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  -o json | jq '{rw_host: .status.hosts.host, ro_host: .status.hosts.read_only_host}'

curva

curl -X GET "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  | jq '{rw_host: .status.hosts.host, ro_host: .status.hosts.read_only_host}'

Per un riferimento completo alle stringhe di connessione, vedere Stringhe di connessione.

Passaggi successivi