Configurazione di un'applicazione ad alta disponibilità

È possibile distribuire l'applicazione " IBM Cloud® Code Engine " su più regioni per renderla resiliente ai guasti a livello regionale. Si noti che in questo esempio viene utilizzata una rete globale di distribuzione dei contenuti (CDN) denominata IBM Cloud Internet Services, ma è possibile utilizzare provider alternativi. Questo esempio utilizza anche un dominio personalizzato.

Prerequisiti

  • È necessario disporre di un nome dominio personalizzato per l'applicazione, ad esempio example.com. Questo nome di dominio viene utilizzato dall'applicazione Code Engine.
  • Configura un'istanza di Cloud Internet Services (CIS).
  • Aggiungi il tuo nome dominio a Cloud Internet Services (CIS). Quando registri il tuo nome dominio con Cloud Internet Services (CIS), stai delegando il controllo del tuo nome dominio a Cloud Internet Services (CIS). Tenere presente che il completamento di questa operazione potrebbe richiedere del tempo.

Crea progetti in regioni diverse

Crea un progetto Code Engine in tre regioni differenti. È possibile utilizzare un modello di denominazione comune e un tag condiviso.

Ad esempio, crea un progetto denominato global-app-project nelle regioni au-syd, eu-de e br-sao con la CLI o dalla console.

Progetti in più regioni
Nome Condizione Tag Posizione Gruppo di risorse Creato
global-app-project Pronto global-app Sydney (au-syd) predefinito
global-app-project Pronto global-app Francoforte (eu-de) predefinito 2 min
global-app-project Pronto global-app Sao Paulo (br-sao) predefinito 3 min

Per ulteriori informazioni, consultare Gestione dei progetti.

Distribuisci le tue applicazioni in più regioni

Ora che i progetti sono creati in più regioni, distribuisci la tua applicazione in ciascun progetto.

Ad esempio, distribuisci l'applicazione codeengine/helloworld.

  1. Dalla pagina Code Engine projects projects, fai clic su uno dei progetti che hai creato.

  2. Fare clic su Applicazioni e fare clic su Crea per creare una nuova applicazione.

  3. Configura la tua app con le seguenti impostazioni.

    1. Assegna alla tua applicazione il nome “ global-app ”.
    2. Seleziona " Usa un'immagine container esistente " per fare riferimento a un'immagine container per la tua app.
    3. Immettere icr.io/codeengine/helloworld come riferimento dell'immagine.
    4. Nella sezione Risorse & scalabilità, imposta il numero minimo di istanze su 1. Impostando il numero minimo di istanze su 1, puoi abilitare i controlli di integrità dalla tua istanza CIS per monitorare la disponibilità dei pool in modo che il traffico possa essere instradato a quelli integri.
    5. Lasciare il resto delle opzioni sulle impostazioni predefinite e fare clic su Crea.
  4. Ripetere questi passi per creare l'applicazione in ogni progetto.

Per ulteriori informazioni sulla distribuzione della tua applicazione, vedi Distribuzione delle applicazioni.

Genera un certificato per il tuo dominio personalizzato

In un ambiente aziendale, collaborare con l'amministratore del dominio aziendale per ottenere i certificati necessari. Tuttavia, se il dominio personalizzato è sotto il tuo controllo e vuoi creare rapidamente un certificato che non sia autocertificato, puoi facoltativamente utilizzare il servizio Let' s Encrypt e Certbot per ottenere un certificato.

  1. Installare Certbot. Certbot è un client per il protocollo ACME(Automatic Certificate Management Environment) per automatizzare le interazioni tra una CA e un server. Il servizio Let' s Encrypt utilizza questo client per verificare la proprietà del dominio ed emettere i certificati. Dalla pagina Istruzioni Certbot, seleziona Other come software e seleziona il sistema operativo per la tua workstation per ottenere le informazioni applicabili per installare la riga di comando Certbot.

  2. Esegui il seguente comando per creare il tuo certificato. Questo comando di esempio crea un certificato per i domini example.com e www.example.com personalizzati. Assicurati di aggiornare il comando per il tuo dominio personalizzato.

    certbot certonly --manual --preferred-challenges dns --email webmaster@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --domain example.com --domain www.example.com
    
  3. Per verificare di essere il proprietario del dominio, imposta un record TXT con il tuo registrar del dominio per i domini che hai richiesto nel passo precedente con i valori forniti con l'output dello strumento Certbot; ad esempio, _acme_challenge.example.com e _acme_challenge.ww.example.com. Dopo aver impostato il record TXT, continuare con il comando Certbot.

  4. Certbot recupera il certificato firmato da Let' s Encrypt. L'ubicazione in cui è memorizzato il certificato viene fornita dall'output Certbot. Individuare i file fullchain.pem e privkey.pem.

Crea un segreto " TLS "

Crea un segreto " TLS " per archiviare il tuo certificato su Code Engine.

  1. Dalla pagina Code Engine projects projects, fai clic su uno dei progetti che hai creato.
  2. Selezionare Segreti e mappe di configurazione.
  3. Fai clic su Crea.
  4. Clicca su " TLS secret ".
  5. Inserisci “ global-tls ” come nome.
  6. Copiare il contenuto del file di fullchain.pem nel campo Catena di certificati.
  7. Copiare il contenuto del file privkey.pem nel campo Chiave privata.
  8. Fai clic su Crea.
  9. Ripeti questi passaggi per creare un segreto " TLS " in ciascuno dei progetti che hai creato in precedenza.

Per ulteriori informazioni, vedi Gestione dei segreti.

Configurare le associazioni di dominio personalizzate

Dopo che le tue applicazioni sono state distribuite, configura un'associazione dominio personalizzata per esse.

  1. Dalla pagina Code Engine projects projects, fai clic su uno dei progetti che hai creato.
  2. Seleziona " Applicazioni ".
  3. Seleziona la tua applicazione " global-app ".
  4. Selezionare Associazioni dominio.
  5. Seleziona Pubblica per la tua visibilità.
  6. Fare clic su Crea per creare un'associazione dominio personalizzata.
  7. Fare clic su “Seleziona” per scegliere un segreto esistente di “ TLS ” e selezionare “ global-tls ”.
  8. Immettere il nome dominio completo, ad esempio www.example.com.
  9. Notare il CNAME valore di destinazione. Hai bisogno di questo valore per configurare l'instradamento per il tuo dominio in CIS.
  10. Verificare che il nome dell'app sia global-app.
  11. Fai clic su Crea.
  12. Ripetere questi passi per creare un'associazione dominio personalizzata per ciascuna applicazione creata.

Configura un controllo di integrità

Quando hai creato le tue applicazioni, imposti il Numero minimo di istanze su 1. Poiché c'è sempre un'istanza della tua applicazione in esecuzione in ogni regione, puoi configurare un controllo di integrità dalla tua istanza CIS per monitorare la disponibilità dei pool. Configurando un controllo di integrità, il traffico viene sempre instradato a un'istanza in esecuzione, rendendo la tua applicazione altamente disponibile.

  1. Dalla tua istanza CIS, passa a Reliability> Global load balancer> Health checks.
  2. Fai clic su Crea.
  3. Denominare il controllo di integrità come il nome dell'applicazione: global-app.
  4. Impostare il Tipo di controllo su HTTPS e la Porta su 443.
  5. Accettare i valori predefiniti per il resto delle opzioni. Tieni presente che se stai utilizzando un'applicazione diversa da codeengine/helloworld, regola le eventuali opzioni richieste dalla tua applicazione.
  6. Fai clic su Crea.

Per ulteriori informazioni, vedi Impostazione dei controlli di integrità.

Configura il programma di bilanciamento del carico Cloud Internet Services (CIS)

Dopo che le tue associazioni dominio personalizzate sono in uno stato Ready, configura il programma di bilanciamento del carico Cloud Internet Services (CIS) per il tuo endpoint globale dell'applicazione. Per ulteriori informazioni, vedi Configurazione di un programma di bilanciamento del carico globale.

  1. Accedi alla pagina "Affidabilità" nella console di Cloud Internet Services (CIS).

  2. Seleziona Origin pools e fai clic su Create.

    1. Denominare il pool global-app-au-syd.
    2. Imposta l'indirizzo di origine sulla destinazione CNAME della tua associazione del nome dominio.
    3. Impostare l'intestazione Host sul nome dominio.
    4. Da Controllo di integrità, selezionare Controllo di integrità esistente e selezionare global-app.
    5. Fare clic su Salva.
    6. Ripeti questi passaggi per ogni regione che contiene la tua applicazione distribuita. Modifica il nome per riflettere la regione di destinazione. Ad esempio, global-app-de-eu e global-app-br-sao.
  3. Seleziona Load Balancers e fai clic su Create.

    1. Denominare il programma di bilanciamento del carico. Si noti che questo nome appare nel dominio personalizzato URL. Ad esempio, se il dominio personalizzato è global-app.example.com e si chiama il bilanciatore di carico global-app, il dominio URL è global-app.example.com.
    2. Impostare Traffic steering su Geo.
    3. Aggiungi le tue rotte Geo. Puoi scegliere di creare una rotta per tutte le regioni CIS o solo per alcune regioni.
      • Se crei una rotta per tutte le regioni CIS, in ogni rotta che crei, aggiungi tutti i pool di origine che hai creato in precedenza. Ordinali in modo che una regione che contenga la tua applicazione in esecuzione e sia più vicina alla rotta della regione che stai configurando. Ad esempio, se hai creato delle app in au-syd, eu-de e br-sao, per Oceana, inserisci prima au-syd. Per l'Europa orientale e occidentale, metti de-eu al primo posto. E per il Nord e il Sud America, metti br-sao al primo posto.
      • Se crei una rotta solo per alcune regioni CIS, aggiungi una rotta per la regione Default. Questo instradamento è il fallback da utilizzare quando una regione specificata non è disponibile.
    4. Fai clic su Crea per creare il programma di bilanciamento del carico.

Verifica che la tua applicazione sia disponibile

Apri un browser e immetti il tuo nome del programma di bilanciamento del carico più il nome del tuo dominio personalizzato; ad esempio www.global-app.example.com

Ora le applicazioni sono altamente disponibili.

Ripulitura dell'esercitazione

  1. Elimina i programmi di bilanciamento del carico globali e i pool di origine da CIS.
  2. Elimina i tuoi record DNS da CIS. Per ulteriori informazioni, vedi Eliminazione di record DNS.
  3. Eliminare ogni progetto creato. Quando si elimina un progetto, vengono eliminati anche tutti i componenti contenuti in tale progetto. Per ulteriori informazioni, consultare Eliminare un progetto.

Nota che il tuo dominio personalizzato non viene eliminato, ma non è più associato all'applicazione che hai creato.