Creare un cluster HorizonDB Azure (anteprima)

Azure HorizonDB è un servizio di database nativo del cloud completamente gestito e pronto per l'intelligenza artificiale basato su PostgreSQL. Combina un'architettura di calcolo e archiviazione disaggregata con una progettazione di database come log per offrire prestazioni prevedibili, sicurezza di livello aziendale, disponibilità elevata e scalabilità senza problemi per carichi di lavoro cruciali.

Questa guida introduttiva illustra come creare un cluster Azure HorizonDB usando il portale di Azure, interfaccia della riga di comando di Azure o i modelli di Azure Resource Manager (ARM).

Prerequisiti

Prima di iniziare, assicurarsi di avere:

  • Una sottoscrizione di Azure. Se non ne hai uno, crea un account Azure gratuito.
  • Autorizzazioni appropriate per creare risorse nella sottoscrizione.

Comprendere quello che si sta creando

Un cluster di Azure HorizonDB comprende:

  • Set configurato di risorse di calcolo e risorse di archiviazione.
  • Distribuzione all'interno di un gruppo di risorse di Azure.
  • Il database postgres creato per impostazione predefinita.
  • Un azure_maintenance database per i processi del servizio gestito.
  • Database azure_sys per query store e funzionalità di ottimizzazione autonoma.

Note

Non includere informazioni personali, sensibili o riservate nei nomi delle risorse (ad esempio, nome della tabella, nome del database) e nei tag delle risorse. I dati inseriti in questi campi non sono considerati dati del cliente.

Creare un cluster usando il portale di Azure

Seguire questa procedura per creare un cluster Azure HorizonDB usando il portale di Azure. La procedura guidata illustra le opzioni di configurazione essenziali per il calcolo, l'archiviazione e l'autenticazione.

  1. Accedi al portale di Azure.
  2. Selezionare Crea una risorsa nell'angolo superiore sinistro.
  3. In Categorie selezionare Database.
  4. Trovare e selezionare Azure HorizonDB.
  5. Fare clic su Crea.

Configurare le impostazioni di base

Dettagli del progetto

Setting Valore suggerito Note
Subscription Il tuo abbonamento Scegliere dove fatturare la risorsa
Gruppo di risorse {resourceGroup} Crea nuovo o seleziona esistente

Dettagli del cluster

Setting Valore suggerito Description
Nome del cluster horizondb-production Deve essere univoco nell'ambito della stessa sottoscrizione di Azure e dello stesso gruppo di risorse.
Area geografica Area più vicina all'utente Prendere in considerazione conformità, residenza dei dati, prezzi e prossimità agli utenti.
Versione di PostgreSQL Ultima versione disponibile Attualmente è supportata solo la versione 17.

Dettagli di calcolo

Selezionare Configura per personalizzare:

Setting Valore suggerito Description
vCore 2 Numero di vCore di cui è stato effettuato il provisioning per i nodi di calcolo primario e di replica (la memoria viene modificata automaticamente).
Disponibilità elevata Con ridondanza della zona Disabilitare o abilitare repliche leggibili con disponibilità elevata.
Repliche leggibili ad alta disponibilità 1 Crea una o più repliche per aumentare la protezione della disponibilità nell'area e aumentare la velocità effettiva di lettura.

Selezionare Salva per confermare o Annulla per annullare le modifiche.

Authentication

Setting Description Raccomandato
Metodo di autenticazione Modalità di autenticazione degli utenti - Solo autenticazione PostgreSQL
Nome utente amministratore adminuser - Deve essere di 1-63 caratteri
- Solo numeri e lettere
- Non è possibile iniziare con pg_
- Non può essere un nome riservato di sistema
Password Password complessa 8-128 caratteri con caratteri maiuscoli, minuscoli, numeri e caratteri speciali

Configurare la rete

Scegliere il metodo di connettività (non è possibile modificarlo dopo la creazione):

Connettività di rete

Connettersi tramite un endpoint pubblico usando le regole del firewall.

Metodo di connettività:

Setting Description
Accesso pubblico Solo gli indirizzi IP configurati nella sezione Regole del firewall possono accedere a questo cluster. Per impostazione predefinita, non sono consentiti indirizzi IP pubblici.

Regole del firewall:

Setting Description
Consenti servizi di Azure Consentire le connessioni da tutti i servizi di Azure
Aggiungere l'indirizzo IP client corrente Aggiungere l'indirizzo IP all'elenco elementi consentiti

Configurare la sicurezza

Setting Può cambiare in un secondo momento Options
Chiave di crittografia dei dati ❌ No L'archiviazione usata per il database e il backup vengono crittografati per impostazione predefinita con chiavi gestite dal servizio

Aggiungere tag di risorsa (facoltativo)

Organizzare le risorse con coppie nome-valore:

Name Value Purpose
Environment Development Identificare il tipo di ambiente
CostCenter IT-Dept Tenere traccia dei costi per reparto
Proprietario admin@contoso.com Identificare le parti responsabili

Rivedi e crea

  1. Selezionare Rivedi e crea.
  2. Esaminare tutte le configurazioni.
  3. Selezionare Crea per la distribuzione.

La distribuzione richiede in genere 5-10 minuti. Al termine, selezionare Vai alla risorsa per accedere al cluster.

Screenshot della pagina Panoramica del cluster Azure HorizonDB nella pagina Azure portal.

Creare un cluster usando il interfaccia della riga di comando di Azure

Prerequisiti per CLI

Per questo script, usare l'interfaccia della riga di comando di Azure in locale perché l'esecuzione in Cloud Shell richiede troppo tempo.

Accedere ad Azure

Usare lo script seguente per accedere usando una sottoscrizione specifica.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Per maggiori informazioni, vedere Impostare una sottoscrizione attiva o Accedere in modo interattivo

Se si usa Azure Cloud Shell, si è già connessi.

Aggiungere l'estensione interfaccia della riga di comando di Azure per HorizonDB:

az extension add --name horizondb

Creare un cluster Azure HorizonDB con CLI

Creare un cluster con un comando:

az horizondb create \
  --resource-group {resourceGroup} \
  --name {cluster} \
  --location {location} \
  --version 17 \
  --administrator-login {administratorLogin} \
  --administrator-login-password {administratorLoginPassword} \
  --v-cores 2

Informazioni di riferimento dei parametri dell'interfaccia a riga di comando

Parametro Description Esempio
--resource-group Nome del gruppo di risorse {resourceGroup}
--name Nome del cluster (univoco all'interno della sottoscrizione e del gruppo di risorse) {cluster}
--location Area di Azure {location}
--version Versione di PostgreSQL 17
--administrator-login Nome utente amministratore {administratorLogin}
--administrator-login-password Password amministratore {administratorLoginPassword}
--v-cores Numero di vCore assegnati a ogni replica del cluster 2
--replica-count Numero di repliche leggibili ad alta disponibilità 1
--zone-placement-policy Definisce il modo in cui le repliche vengono posizionate tra le zone di disponibilità BestEffort

Creare una regola del firewall in un cluster Azure HorizonDB con l'interfaccia della riga di comando

Importante

Questa funzionalità non è ancora supportata da interfaccia della riga di comando di Azure tramite un modulo o un'estensione specifica per HorizonDB.

Aggiungere regole del firewall per la connettività client:

az rest --method PUT \
  --uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.HorizonDB/pools/DefaultPool/firewallRules/{firewallRule}?api-version=2026-01-20-preview" \
  --body '{
      "properties": {
        "startIpAddress": "10.0.0.1",
        "endIpAddress": "10.0.0.10",
        "description": "Allow access from corporate network"
      }
  }'

Esempio di interfaccia della riga di comando avanzata

Creare un cluster a disponibilità elevata con ridondanza della zona:

az horizondb create \
  --resource-group {resourceGroup} \
  --name {cluster} \
  --location australiaeast \
  --version 17 \
  --administrator-login {administratorLogin} \
  --administrator-login-password {administratorLoginPassword} \
  --v-cores 2 \
  --replica-count 2 \
  --zone-placement-policy Strict

Importante

Questa funzionalità non è ancora supportata da interfaccia della riga di comando di Azure tramite un modulo o un'estensione specifica per HorizonDB.

Aggiungere regole del firewall per la connettività client:

az rest --method PUT \
  --uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.HorizonDB/pools/DefaultPool/firewallRules/{firewallRule}?api-version=2026-01-20-preview" \
  --body '{
      "properties": {
        "startIpAddress": "10.0.0.1",
        "endIpAddress": "10.0.0.10",
        "description": "Allow access from corporate network"
      }
  }'

Creare un cluster utilizzando un modello ARM

Panoramica dei modelli ARM

I modelli di Azure Resource Manager (ARM) consentono di definire l'infrastruttura come codice. Usare i modelli per le distribuzioni ripetibili.

Modello ARM minimo

Salvare il file come horizondb-template.json:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "clusterName": {
            "type": "String"
        },
        "poolName": {
            "defaultValue": "DefaultPool",
            "type": "String"
        },
        "location": {
            "type": "String"
        },
        "administratorLogin": {
            "type": "String"
        },
        "administratorLoginPassword": {
            "type": "SecureString"
        },
        "version": {
            "type": "String"
        },
        "vCores": {
            "type": "String"
        },
        "apiVersion": {
            "defaultValue": "2026-01-20-preview",
            "type": "String"
        },
        "firewallRules": {
            "defaultValue": [],
            "type": "Array"
        }
    },
    "resources": [
        {
            "type": "Microsoft.HorizonDB/clusters",
            "apiVersion": "[parameters('apiVersion')]",
            "name": "[parameters('clusterName')]",
            "location": "[parameters('location')]",
            "properties": {
                "createMode": "Default",
                "version": "[parameters('version')]",
                "administratorLogin": "[parameters('administratorLogin')]",
                "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
                "vCores": "[parameters('vCores')]"
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-08-01",
            "name": "[concat('firewallRules-', copyIndex())]",
            "dependsOn": [
                "[concat('Microsoft.HorizonDB/clusters/', parameters('clusterName'))]"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "resources": [
                        {
                            "type": "Microsoft.HorizonDB/clusters/pools/firewallRules",
                            "name": "[concat(parameters('clusterName'),'/',parameters('poolName'),'/',parameters('firewallRules')[copyIndex()].name)]",
                            "apiVersion": "[parameters('apiVersion')]",
                            "properties": {
                                "description": "[parameters('firewallRules')[copyIndex()].name]",
                                "startIpAddress": "[parameters('firewallRules')[copyIndex()].startIpAddress]",
                                "endIpAddress": "[parameters('firewallRules')[copyIndex()].endIpAddress]"
                            }
                        }
                    ]
                }
            },
            "copy": {
                "name": "firewallRulesIterator",
                "count": "[if(greater(length(parameters('firewallRules')), 0), length(parameters('firewallRules')), 1)]",
                "mode": "Serial"
            },
            "condition": "[greater(length(parameters('firewallRules')), 0)]"
        }
    ]
}

Salvare il file come horizondb-parameters.json:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "clusterName": {
            "value": "{cluster}"
        },
        "location": {
            "value": "australiaeast"
        },
        "administratorLogin": {
            "value": "{administratorLogin}"
        },
        "administratorLoginPassword": {
            "value": "{administratorLoginPassword}"
        },
        "version": {
            "value": "17"
        },
        "vCores": {
            "value": "2"
        },
        "apiVersion": {
            "value": "2026-01-20-preview"
        },
        "firewallRules": {
            "value": [
                {
                    "name": "myfirewallrule",
                    "startIpAddress": "{yourIPAddress}",
                    "endIpAddress": "{yourIPAddress}"
                }
            ]
        }
    }
}

Distribuire il modello di ARM

az group create --name {resourceGroup} --location australiaeast

az deployment group create \
  --resource-group {resourceGroup} \
  --template-file horizondb-template.json \
  --parameters horizondb-parameters.json

Ottenere informazioni di connessione

Dopo aver creato il cluster, recuperare i dettagli della connessione:

Usare il portale di Azure

  1. Vai al cluster nel portale di Azure.
  2. Aprire la pagina Panoramica .
  3. Copiare questi valori:
    • Nome del cluster (endpoint primario): {cluster}.{randomId}.australiaeast.horizondb.azure.com
    • Account di accesso amministratore: {administratorLogin}

Utilizzare l'interfaccia della riga di comando di Azure

az horizondb show \
  --resource-group {resourceGroup} \
  --name {cluster} \
  --query "{clusterName:properties.fullyQualifiedDomainName, adminUser:properties.administratorLogin}" \
  --output table

Connettersi tramite psql

Installare psql

Se non si hanno strumenti client PostgreSQL, scaricare PostgreSQL per la piattaforma.

Connetti al tuo cluster

psql "host={cluster}.{randomId}.australiaeast.horizondb.azure.com port=5432 dbname=postgres user={administratorLogin} sslmode=require"

Quando richiesto, immettere la password amministratore impostata durante la creazione del cluster.

Formato stringa di connessione

host={cluster}.{randomId}.australiaeast.horizondb.azure.com port=5432 dbname={databaseName} user={administratorLogin} password={administratorLoginPassword} sslmode=require

Verificare la connessione

Dopo la connessione, viene visualizzato:

psql (16.12, server 17.9 (Azure HorizonDB (c8e7b717d05)(release)))
WARNING: psql major version 16, server major version 17.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

postgres=>

Creazione di un database

CREATE DATABASE user_database;
\c user_database
\q

Risolvere problemi di connessione

Blocco della connessione da parte del firewall

Se viene visualizzato:

connection to server at "{cluster}.{randomId}.australiaeast.horizondb.azure.com" (###.###.###.###), port 5432 failed: Connection timed out

Soluzione: assicurarsi che sia presente una regola del firewall il cui intervallo di indirizzi IP iniziali e finali include l'indirizzo IP usato dal computer per accedere al cluster.

az horizondb firewall-rule create \
  --resource-group {resourceGroup} \
  --cluster-name {cluster} \
  --firewall-rule-name {firewallRule} \
  --start-ip-address {yourIPAddress} \
  --end-ip-address {yourIPAddress}

SSL obbligatorio ma non configurato

Verificare che la stringa di connessione includa sslmode=require.

Pulire le risorse

Al termine dell'avvio rapido, eliminare le risorse per evitare addebiti.

Eliminare l'intero gruppo di risorse

az group delete --name {resourceGroup} --yes

Eliminare solo il cluster

az horizondb delete \
  --resource-group {resourceGroup} \
  --name {cluster} \
  --yes