Deployment di IBM Db2 Warehouse su Compute Engine con archiviazione NFS

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questo tutorial mostra come creare un cluster IBM Db2 Warehouse su Compute Engine con un'unità Network File System (NFS) come livello di archiviazione. Utilizzi Filestore come backend NFS per la soluzione di archiviazione condivisa. Tuttavia, puoi scegliere qualsiasi altra soluzione NFS di cui è possibile eseguire il deployment nel cloud.

Questo tutorial è utile se sei un amministratore di sistema, uno sviluppatore, un tecnico o un amministratore di database e vuoi eseguire il deployment di un cluster IBM Db2 Warehouse su Google Cloud.

Per una panoramica di IBM Db2 Warehouse e delle opzioni di deployment su Google Cloud, consulta la panoramica della serie.

In questo tutorial utilizzerai il seguente software:

  • Ubuntu-server 16.04
  • Versione Community Docker
  • IBM Db2 Warehouse Enterprise Edition (prova)
  • Client IBM Db2 Warehouse

Obiettivi

  • Accedi alle immagini Docker IBM Db2 Warehouse nel Docker Store.
  • Creare un'istanza di Filestore.
  • Esegui il provisioning di un account di servizio personalizzato che disponga solo delle autorizzazioni necessarie per questa architettura.
  • Inizializza l'autenticazione Docker Store.
  • Esegui il deployment dei container IBM Db2 Warehouse nel cluster.
  • Esegui IBM Db2 Warehouse.
  • Caricare dati di esempio in IBM Db2 Warehouse.
  • Connettiti alla console di amministrazione IBM Db2.

Costi

Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:

Utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  4. Abilita le API Compute Engine and Filestore.

    Abilita le API

  5. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  7. Abilita le API Compute Engine and Filestore.

    Abilita le API

  8. Se non hai un ID Docker, creane uno nel Docker Store.

In questo tutorial viene utilizzato IBM Db2 Warehouse Enterprise Edition. Se non hai già una licenza per questo software, potresti essere in grado di utilizzare una versione di prova gratuita per questo tutorial.

Al termine di questo tutorial, puoi evitare una fatturazione continua eliminando le risorse che hai creato. Per scoprire di più, vedi Pulizia.

Architettura

In questo tutorial, eseguirai il deployment di tre istanze di Compute Engine in tre zone diverse:

  • Un'istanza denominata db2wh-1 è inizialmente designata come nodo head.
  • Le istanze denominate db2wh-2 e db2wh-3 sono inizialmente definite come nodi di dati.

Il ruolo (nodo di testa o di dati) delle singole istanze può cambiare se si verifica il funzionamento del nodo di testa.

Esegui anche il deployment di un'istanza Filestore denominata db2wh-data-nfs, che funge da spazio di archiviazione condiviso per i nodi del cluster.

L'architettura è mostrata nel seguente diagramma:

Architettura

Accesso alle immagini Docker IBM Db2 Warehouse Edition

In questo tutorial, consenti al tuo account Docker Store di scaricare una versione di prova gratuita di IBM Db2 Warehouse Edition dal Docker Store. Questo implica il download di due immagini separate: un server e un client.

  1. Nel browser, vai all'immagine Docker EEB Db2 Warehouse EE.

  2. Accedi con il nome utente e la password Docker.

  3. Fai clic su Vai alla cassa.

  4. Inserisci i tuoi dati.

  5. Se accetti i termini, seleziona le caselle di controllo Accetto ... e Confermo ... a destra.

  6. Fai clic su Get Content.

    Viene visualizzata la pagina Configurazione. Non è necessario seguire queste istruzioni, perché verranno eseguiti più avanti nel tutorial.

  7. Ripeti la procedura per l'immagine client IDA Db2 Warehouse.

Preparazione dell'ambiente

Esegui la maggior parte dei passaggi di questo tutorial in Cloud Shell. Quando apri Cloud Shell, puoi anche clonare automaticamente il repository GitHub associato a questo tutorial.

  • Apri Cloud Shell e clona il repository GitHub per questo tutorial:

    APRI Cloud Shell

Creazione dell'istanza Filestore

Il passaggio successivo consiste nel creare l'istanza di database Filestore.

  1. In Cloud Shell, crea un'istanza Filestore:

    gcloud beta filestore instances create db2wh-data-nfs \
        --location=us-central1-c --tier=STANDARD \
        --file-share=name="db2whdata",capacity=1TB \
        --network=name="default",reserved-ip-range="10.0.0.0/29"
    

    Viene creata un'istanza Filestore di livello standard denominata db2wh-data-nfs con una capacità di 1 TB e un punto di montaggio denominato db2whdata.

  2. Crea una variabile di ambiente che archivia l'indirizzo IP dell'istanza Filestore:

    export FILESTORE_IP=$(gcloud beta filestore instances describe db2wh-data-nfs --location=us-central1-c \
    --format='value(networks[0].ipAddresses[0])')
    

Provisioning di un account di servizio per la gestione delle istanze di Compute Engine

Per questo tutorial, creerai un account di servizio per gestire le istanze di Compute Engine. È buona norma limitare l'account di servizio ai soli ruoli e alle autorizzazioni di accesso necessarie per eseguire l'applicazione.

Per questo tutorial, l'unico ruolo richiesto per l'account di servizio è il ruolo Visualizzatore Compute (roles/compute.viewer). Questo ruolo fornisce l'accesso in sola lettura alle risorse di Compute Engine.

  1. In Cloud Shell, crea un account di servizio denominato db2wh-sa:

    gcloud iam service-accounts create db2wh-sa --display-name=db2wh-sa
    
  2. Crea una variabile di ambiente che memorizzi il nome email dell'account di servizio:

    export GCE_SERVICE_ACCOUNT_EMAIL="db2wh-sa@$(gcloud config get-value project 2> /dev/null).iam.gserviceaccount.com"
    
  3. Associa il ruolo compute.viewer all'account di servizio:

    gcloud projects add-iam-policy-binding $(gcloud config get-value project 2> /dev/null) \
        --member serviceAccount:$GCE_SERVICE_ACCOUNT_EMAIL \
        --role roles/compute.viewer
    

Creazione di regole firewall

Puoi creare le regole firewall per consentire le comunicazioni e l'accesso interni al cluster dalla console di gestione al cluster. Per ulteriori informazioni, consulta i prerequisiti di IBM Db2 Warehouse per Linux e l'hardware x86 sul sito di assistenza di IBM.

  1. In Cloud Shell, crea le regole firewall necessarie per le comunicazioni tra nodi:

    gcloud compute firewall-rules create db2wh-internal \
        --description="db2wh" \
        --action=ALLOW \
        --rules=tcp:50000-50001,tcp:60000-60060,tcp:25000-25999,tcp:50022,tcp:9929,tcp:9300,tcp:8998,tcp:5000,tcp:2379-2380,tcp:389 \
        --source-tags=db2wh \
        --target-tags=db2wh
    
  2. Crea le regole firewall per la console di amministrazione:

    gcloud compute firewall-rules create db2wh-admin \
        --description="db2wh admin console" \
        --action=ALLOW --rules=tcp:8443 \
        --source-ranges=0.0.0.0/0
    

Inizializzazione dell'ambiente Compute Engine

In questa sezione lancerai le istanze di Compute Engine, concederai le autorizzazioni e completerai l'inizializzazione dell'ambiente.

Avvia istanze di Compute Engine

Utilizzando lo script di avvio nel repository di GitHub crei tre istanze di Compute Engine per i nodi del cluster. Le istanze si trovano in zone diverse per supportare l'alta disponibilità. Questo include la mappatura di un indirizzo IP interno a ogni istanza.

  1. In Cloud Shell, crea un'istanza denominata db2wh-1:

    gcloud compute instances create db2wh-1 \
        --image-family=ubuntu-1604-lts  \
        --image-project=ubuntu-os-cloud \
        --tags=db2wh --boot-disk-size=50GB \
        --machine-type=n1-standard-16 \
        --zone=us-central1-c \
        --private-network-ip=10.128.0.100 \
        --metadata=storagetype=nfs_filestore,filestoreip=$FILESTORE_IP \
        --metadata-from-file startup-script=solutions-db2wh/gce-db2wh-startup.sh \
        --service-account=$GCE_SERVICE_ACCOUNT_EMAIL
    
  2. Crea l'istanza db2wh-2:

    gcloud compute instances create db2wh-2 \
        --image-family=ubuntu-1604-lts \
        --image-project=ubuntu-os-cloud \
        --tags=db2wh --boot-disk-size=50GB \
        --machine-type=n1-standard-16 \
        --zone=us-central1-b \
        --private-network-ip=10.128.0.101 \
        --metadata=storagetype=nfs_filestore,filestoreip=$FILESTORE_IP \
        --metadata-from-file startup-script=solutions-db2wh/gce-db2wh-startup.sh \
        --service-account=$GCE_SERVICE_ACCOUNT_EMAIL
    
  3. Crea l'istanza db2wh-3:

    gcloud compute instances create db2wh-3 \
        --image-family=ubuntu-1604-lts \
        --image-project=ubuntu-os-cloud \
        --tags=db2wh --boot-disk-size=50GB \
        --machine-type=n1-standard-16 \
        --zone=us-central1-f \
        --private-network-ip=10.128.0.102 \
        --metadata=storagetype=nfs_filestore,filestoreip=$FILESTORE_IP \
        --metadata-from-file startup-script=solutions-db2wh/gce-db2wh-startup.sh \
        --service-account=$GCE_SERVICE_ACCOUNT_EMAIL
    

Accedi al Docker Store dalle istanze di Compute Engine

Ora fornisci le tue credenziali a ciascuno dei tre membri del cluster per abilitare le comunicazioni con il Docker Store.

  1. In Cloud Shell, accedi al Docker Store in db2wh-1:

    gcloud compute ssh db2wh-1 \
        --zone=us-central1-c \
        --command="sudo docker login" \
        -- -t
    
  2. Accedi al Docker Store in db2wh-2:

    gcloud compute ssh db2wh-2 \
        --zone=us-central1-b \
        --command="sudo docker login" \
        -- -t
    
  3. Accedi al Docker Store in db2wh-3:

    gcloud compute ssh db2wh-3 \
        --zone=us-central1-f \
        --command="sudo docker login" \
        -- -t
    

Crea il file dei nodi

Ora crei un file nodes che IBM Db2 Warehouse utilizza per individuare i nodi nel cluster. Ogni riga specifica il tipo iniziale del nodo, il nome DNS e l'indirizzo IP.

  1. In Cloud Shell, crea i file nodes connettendoti all'istanza dbw2h-1 tramite SSH:

    gcloud compute ssh db2wh-1 --zone=us-central1-c \
        --command='sudo bash -c "cat <<EOF >  /mnt/clusterfs/nodes
    head_node=db2wh-1:10.128.0.100
    data_node=db2wh-2:10.128.0.101
    data_node=db2wh-3:10.128.0.102
    EOF"'
    

Avvio dei container IBM Db2 Warehouse

Ora avvii i container Db2 Warehouse nelle tre istanze.

  1. In Cloud Shell, avvia il container Docker su db2wh-1:

    gcloud compute ssh db2wh-1 \
        --zone=us-central1-c \
        --command='sudo docker run -d -it \
        --privileged=true \
        --net=host \
        --name=db2wh -v /mnt/clusterfs:/mnt/bludata0 -v /mnt/clusterfs:/mnt/blumeta0 store/ibmcorp/db2wh_ee:v2.12.0-db2wh-linux'
    
  2. Avvia il container Docker su db2wh-2:

    gcloud compute ssh db2wh-2 \
        --zone=us-central1-b \
        --command='sudo docker run -d -it \
        --privileged=true \
        --net=host \
        --name=db2wh -v /mnt/clusterfs:/mnt/bludata0 -v /mnt/clusterfs:/mnt/blumeta0 store/ibmcorp/db2wh_ee:v2.12.0-db2wh-linux'
    
  3. Avvia il container Docker su db2wh-3:

    gcloud compute ssh db2wh-3 \
        --zone=us-central1-f \
        --command='sudo docker run -d -it \
        --privileged=true \
        --net=host \
        --name=db2wh -v /mnt/clusterfs:/mnt/bludata0 -v /mnt/clusterfs:/mnt/blumeta0 store/ibmcorp/db2wh_ee:v2.12.0-db2wh-linux'
    
  4. Verifica che l'avvio sia completo:

    gcloud compute ssh db2wh-1 \
        --zone=us-central1-c \
        --command='sudo docker exec -it db2wh status --check-startup' \
        -- -t
    

    Questa operazione potrebbe richiedere 40-60 minuti, durante i quali potresti rilevare alcuni errori. Puoi ignorarli per questo tutorial.

    La configurazione è completa quando viene visualizzato il messaggio running successfully nell'output:

    HA Management up and running successfully!
    Successfully started IBM Db2 Warehouse service stack!
    
  5. Utilizza SSH per connetterti a db2wh-1 e reimpostare la password amministratore:

    DB2_ADMIN_PASSWORD=$(openssl rand -hex 8)
    gcloud compute ssh db2wh-1 \
        --zone=us-central1-c \
        --command="sudo docker exec db2wh setpass ${DB2_ADMIN_PASSWORD}" \
        -- -t
    

Test del deployment

Hai completato la configurazione dei contenitori del server, ora puoi testarli.

Deployment del container Client IBM Db2 Warehouse

Per caricare i dati su IBM Db2 Warehouse, ora puoi eseguire il deployment nel container client.

  1. In Cloud Shell, copia i dati di esempio nell'istanza di Compute Engine che eseguirà il container client:

    gcloud compute scp solutions-db2wh/sample-data/nyc-wifi-locs.csv db2wh-1:/tmp \
        --zone=us-central1-c
    
  2. Copia lo schema della tabella di esempio nell'istanza di Compute Engine che eseguirà il container client:

    gcloud compute scp solutions-db2wh/sample-data/sample-table.sql db2wh-1:/tmp \
        --zone=us-central1-c
    
  3. Avvia il container Docker su db2wh-1:

    gcloud compute ssh db2wh-1 \
        --zone=us-central1-c \
        --command='sudo docker run -d -it \
        --privileged=true \
        --net=host \
        --name=db2wh-client -v /tmp/nyc-wifi-locs.csv:/nyc-wifi-locs.csv -v /tmp/sample-table.sql:/sample-table.sql store/ibmcorp/db2wh_ce:v3.0.1-db2wh_client-linux'
    

Caricare dati di esempio

Per testare il deployment, devi caricare i dati di esempio sul server IBM Db2 Warehouse.

  1. In Cloud Shell, visualizza la password creata in precedenza:

    echo $DB2_ADMIN_PASSWORD
    
  2. Apri una finestra della shell nel container Client IBM Db2 Warehouse:

    gcloud compute ssh db2wh-1 \
        --zone=us-central1-c \
        --command='sudo docker exec -it db2wh-client cli' \
        -- -t
    
  3. Crea una variabile di ambiente che memorizzi la password, dove [PASSWORD] è la password che hai ricevuto in precedenza nella procedura:

    DB_PASSWORD=[PASSWORD]
    
  4. Crea una variabile di ambiente che memorizzi l'alias del database:

    DB_ALIAS=BLUDB
    

    BLUDB è il nome database predefinito in IBM Db2 Warehouse.

  5. Crea una variabile di ambiente che memorizzi il nome host del database:

    DB_HOST=db2wh-1
    
  6. Configura il catalogo database:

    db_catalog --add $DB_HOST --alias $DB_ALIAS
    
  7. Crea una tabella in cui inserire dati di esempio nel server IBM Db2 Warehouse:

    dbsql -f /sample-table.sql -d $DB_ALIAS -h $DB_HOST -u bluadmin -W $DB_PASSWORD
    
  8. Carica i dati sul server IBM Db2 Warehouse:

    dbload -verbose -host $DB_HOST -u bluadmin -pw $DB_PASSWORD -db $DB_ALIAS -schema BLUADMIN -t NYC_FREE_PUBLIC_WIFI -df /nyc-wifi-locs.csv -delim ',' -quotedValue DOUBLE -timeStyle 12HOUR -skipRows 1
    
  9. Chiudi la shell client IBM Db2 Warehouse:

    exit
    

Convalidare i dati con la Console di amministrazione

Ora puoi connetterti alla console di amministrazione di IBM Db2 Warehouse e verificare i dati che hai caricato.

  1. In Cloud Shell, individua l'indirizzo IP esterno del servizio:

    gcloud compute instances describe db2wh-1 \
        --zone=us-central1-c \
        --format='value(networkInterfaces[0].accessConfigs[0].natIP)'
    
  2. Apri un browser e vai all'URL seguente, dove [EXTERNAL_IP] è l'indirizzo IP del passaggio precedente:

    https://[EXTERNAL_IP]:8443
    

    Puoi ignorare l'avviso di sicurezza.

  3. Accedi con le seguenti credenziali:

    • Nome utente: bluadmin
    • Password: (la password creata nel passaggio precedente)
  4. Se accetti il Contratto di licenza con l'utente finale (EULA) di IBM Db2 Warehouse, fai clic su Accept (Accetto).

  5. Sul lato sinistro, apri il menu e seleziona Amministrazione > Tabelle:

    UI di amministrazione di IBM Db2 Warehouse, che mostra la cartella Tables

  6. Chiudi il popup Tour rapido.

  7. Fai clic su NYC_FREE_PUBLIC_WIFI:

    Elenco degli hotspot Wi-Fi disponibili

  8. Fai clic sulla scheda Data Distribution e accertati che la tabella sia compilata:

    Scheda Distribuzione dei dati nell&#39;elenco Tabelle

    Vedrai 2871 righe in totale, che corrisponde all'intero set di dati.

  9. Fai clic su Genera SQL.

  10. Seleziona SELEZIONA istruzione.

  11. Fai clic su OK.

    La scheda Genera SQL si apre e viene precompilata con un'istruzione SELECT generata automaticamente.

  12. Aggiungi una clausola LIMIT all'istruzione SELECT generata automaticamente per limitare i risultati ai primi cinque record:

    SELECT "THE_GEOM", "OBJECTID", "BORO", "TYPE", "PROVIDER", "NAME", "LOCATION",
           "LAT", "LON", "X", "Y", "LOCATION_T", "REMARKS", "CITY", "SSID",
           "SOURCEID", "ACTIVATED", "BOROCODE", "BORONAME", "NTACODE", "NTANAME",
           "COUNDIST", "POSTCODE", "BOROCD", "CT2010", "BOROCT2010", "BIN", "BBL", "DOITT_ID"
      FROM "BLUADMIN"."NYC_FREE_PUBLIC_WIFI"
      LIMIT 5;
    
  13. Fai clic su Esegui e seleziona Esegui tutto.

    Un elenco dei record viene visualizzato nella scheda Set di risultati, a indicare che i dati di esempio sono stati caricati correttamente.

    Risultati dell&#39;esecuzione dell&#39;istruzione SQL in cui sono visualizzati 5 record dei dati caricati

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

  1. In Google Cloud Console, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi