Správa vysoké dostupnosti

Důležité

LakeBase Autoscaling je nejnovější verze LakeBase s automatickým škálováním výpočetních prostředků, škálováním na nulu, větvením a okamžitým obnovením. Podporované oblasti najdete v tématu Dostupnost oblastí. Pokud jste uživatel Lakebase Provisioned, přečtěte si Lakebase Provisioned.

Tato příručka pokrývá umožnění a správu vysoké dostupnosti vašich koncových bodů Lakebase. Základní informace o tom, jak funguje vysoká dostupnost a jak se sekundární výpočetní instance liší od samostatných replik pro čtení, najdete v tématu Vysoká dostupnost.

Povolení vysoké dostupnosti

Pokud chcete povolit vysokou dostupnost, nastavte typ výpočetních prostředků a konfiguraci vysoké dostupnosti v uživatelském rozhraní nebo nakonfigurujte koncový bod EndpointGroupSpec přes rozhraní API.

Předpoklady

  • Škálování na nulu musí být deaktivováno. V uživatelském rozhraní nastavte měřítko na nulu na Vypnuto v panelu pro úpravy výpočetních prostředků. Prostřednictvím rozhraní API nastavte specifikaci pro koncový bod (použijte no_suspension: true jako aktualizační masku).

uživatelské rozhraní

Po vytvoření projektu kliknutím na primární odkaz na výpočetní zdroj z nástěnky projektu otevřete panel pro úpravy výpočetního zdroje.

Řídicí panel projektu zobrazující produkční větev s primárním výpočetním propojením

Nastavte typ výpočetních prostředků na Vysokou dostupnost a pak v části Vysoká dostupnost zvolte konfiguraci:

  • 2 (1 primární, 1 sekundární),
  • 3 (1 primární, 2 sekundární),
  • nebo 4 (1 primární, 3 sekundární) celkový počet výpočetních instancí.

Úprava výpočetního zásobníku s přepínačem výpočetního typu nastaveným na vysokou dostupnost a rozevíracím seznamem konfigurace obsahujícím možnosti pro 2, 3 nebo 4 celkové výpočetní instance

Lakebase zřizuje sekundární výpočetní instance v různých zónách dostupnosti. Jakmile jsou všechny výpočetní instance aktivní, koncový bod automaticky přebírá při selhání.

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
      }
    }
  }'

kroucení

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

Konfigurace přístupu jen pro čtení k sekundárním výpočetním instancím

Povolit přístup k výpočetním instancím jen pro čtení určuje, jestli sekundární výpočetní instance obsluhují provoz čtení přes -ro connection string.

uživatelské rozhraní

  1. Na kartě Výpočty klikněte na Upravit u primárního výpočetního objektu.
  2. V části Vysoká dostupnost zaškrtněte nebo zrušte zaškrtnutí políčka Povolit přístup k výpočetním instancím jen pro čtení.
  3. Klikněte na Uložit.

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
      }
    }
  }'

kroucení

# 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

Výstraha

Pokud je povolena pouze jedna sekundární výpočetní instance a přístup pro čtení, veškerý provoz čtení na -ro připojovacím řetězci se během selhání přeruší, dokud se nenahradí. Pro odolný přístup pro čtení nakonfigurujte dvě nebo více sekundárních výpočetních instancí s povoleným přístupem pro čtení.

Změna počtu sekundárních výpočetních instancí

uživatelské rozhraní

  1. Na kartě Výpočty klikněte na Upravit u primárního výpočetního objektu.
  2. V části Vysoká dostupnost zvolte v rozevíracím seznamu novou konfiguraci výpočetních prostředků (2, 3 nebo 4 celkové výpočetní instance).
  3. Klikněte na Uložit.

Poznámka:

Pokud chcete vysokou dostupnost zakázat, nastavte typ výpočetních prostředků zpět na Jeden výpočetní objekt. Tím se odeberou všechny sekundární výpočetní instance a koncový bod se vrátí do konfigurace s jedním výpočetním objektem.

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 }
    }
  }'

kroucení

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

Zobrazení stavu a rolí s vysokou dostupností

Na kartě Výpočty se zobrazí každá výpočetní instance v konfiguraci vysoké dostupnosti s aktuální rolí, stavem a úrovní přístupu.

Karta Výpočty zobrazující jednu primární výpočetní instanci s přístupem pro čtení a zápis a třemi sekundárními výpočetními instancemi s přístupem jen pro čtení, všechny aktivní

Sloupec Hodnoty
Role Primární, sekundární
Stav Spuštění, Aktivní
Access Čtení/zápis (primární), jen pro čtení (sekundární výpočetní instance s povoleným přístupem), zakázáno (sekundární výpočetní instance bez přístupu pro čtení)

Primární hlavička výpočetních prostředků také zobrazuje ID koncového bodu, rozsah automatického škálování a sekundární počet (např. 8 ↔ 16 CU · 3 secondaries).

Získání připojovacích řetězců

uživatelské rozhraní

Kliknutím na Připojit u primárního výpočetního prostředí otevřete dialogové okno podrobností o připojení. V rozevíracím seznamu Compute jsou uvedené obě možnosti připojení pro váš koncový bod s vysokou dostupností.

Dialog podrobností spojení s otevřenou rozevírací nabídkou Compute s možnostmi Primární a Sekundární RO a zobrazeným connection stringem jen pro čtení

Možnost výpočtu Připojovací řetězec Použít pro
Primary (name) ● Active {endpoint-id}.database.{region}.databricks.com Všechna zápisová a čtecí/zápisová připojení
Secondary (name) ● Active RO {endpoint-id}-ro.database.{region}.databricks.com Přesun čtení na sekundární výpočetní instance

připojovací řetězec je k dispozici pouze v případě, že je povolen přístup k výpočetním instancím jen pro čtení .

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}'

kroucení

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}'

Pro úplnou referenci připojovacích řetězců viz Připojovací řetězce.

Další kroky