Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Ridimensiona automaticamente un pool di istanze di Oracle Cloud Infrastructure in base alle richieste HTTP del load balancer OCI
Introduzione
In questa esercitazione verrà descritto come ridimensionare automaticamente un pool di istanze Oracle Cloud Infrastructure (OCI) in base al numero di richieste HTTP ricevute dal load balancer OCI. Ci occuperemo di tre argomenti principali.
- Metriche degli allarmi di monitoraggio OCI: monitora il load balancer e imposta gli allarmi in base alle metriche delle richieste HTTP.
- Servizio Notifiche OCI: invia notifiche quando viene attivato un allarme.
- Funzioni OCI: crea e utilizza le funzioni per regolare la dimensione del pool di istanze in base alle notifiche ricevute.
Monitoraggio OCI: utilizzare il servizio di monitoraggio OCI per monitorare attivamente e passivamente le risorse cloud utilizzando le funzioni di metriche e allarmi. Il servizio di monitoraggio OCI utilizza le metriche per monitorare le risorse e gli allarmi e ricevere una notifica quando queste metriche soddisfano i trigger specificati dall'allarme.
Notifiche OCI: quando accade qualcosa con le tue risorse in OCI, puoi ottenere messaggi leggibili dall'utente tramite gli endpoint supportati, inclusi i messaggi di posta elettronica e di testo (SMS) utilizzando allarmi, regole di evento e connettori. Puoi anche automatizzare le attività tramite endpoint HTTPS personalizzati e OCI Functions.
OCI Functions: OCI Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, on-demand e Functions-as-a-Service. Si basa su OCI di livello aziendale e si basa sul motore open source Fn Project. Utilizza OCI Functions (a volte abbreviato in Functions e precedentemente noto come Oracle Functions) quando vuoi concentrarti sulla scrittura di codice per soddisfare le esigenze aziendali.
Architettura di alto livello
Nota:
Questo tutorial è progettato esclusivamente per scopi educativi e di studio. Fornisce un ambiente per gli studenti di sperimentare e acquisire esperienza pratica in un ambiente controllato. È fondamentale notare che le configurazioni e le pratiche di sicurezza utilizzate in questo tutorial potrebbero non essere adatte per scenari reali.
Le considerazioni sulla sicurezza per le applicazioni del mondo reale sono spesso molto più complesse e dinamiche. Pertanto, prima di implementare una delle tecniche o configurazioni qui dimostrate in un ambiente di produzione, è essenziale condurre una valutazione e un riesame completi della sicurezza. Questa revisione dovrebbe comprendere tutti gli aspetti della sicurezza, tra cui il controllo dell'accesso, la crittografia, il monitoraggio e la conformità, per garantire che il sistema sia allineato alle politiche e agli standard di sicurezza dell'organizzazione.
La sicurezza dovrebbe sempre essere una priorità assoluta quando si passa da un ambiente di laboratorio a uno sviluppo reale.
Obiettivi
-
Impostare un meccanismo di ridimensionamento automatico per un pool di istanze OCI. Questo meccanismo di ridimensionamento automatico si baserà sul numero di richieste HTTP ricevute dal load balancer OCI. Imparerai a:
-
Monitorare le metriche delle richieste HTTP: impostare il monitoraggio OCI per tenere traccia delle metriche delle richieste HTTP dal load balancer.
-
Crea e configura allarmi: definisce e configura allarmi che si attivano in base a soglie di richiesta HTTP specifiche.
-
Impostare le notifiche degli eventi: stabilire le notifiche degli eventi per avvisare l'utente quando viene attivato un allarme.
-
Implementa le funzioni OCI: crea e distribuisci le funzioni per regolare automaticamente la dimensione del pool di istanze in risposta agli allarmi attivati.
-
Prerequisiti
-
Ambiente OCI
-
Account Oracle con autorizzazioni di amministratore.
-
Compartimento per creare le risorse.
Nota: prendere nota del nome e dell'ID compartimento del compartimento.
-
VCN con una subnet privata. Per ulteriori informazioni, vedere Creazione di una rete cloud virtuale.
-
Load balancer OCI collegato al pool di istanze con un backendSet che punta alle istanze nel pool. Per ulteriori informazioni, vedere Creazione di un load balancer.
-
Pool di istanze con almeno 1 istanza con una semplice applicazione HTTP in esecuzione sulla porta
80
. Per ulteriori informazioni, vedere Utilizzo delle configurazioni e dei pool di istanze.
-
-
Ambiente del computer locale
-
Un'istanza di computazione Oracle Linux nella subnet privata. Questa operazione è importante per accedere alle risorse nella subnet privata, ad esempio OCI Streaming e OCI Functions, che verranno distribuite durante questa esercitazione.
-
Un host OCI Bastion per connettersi all'istanza di computazione Oracle Linux ed eseguire i task per l'esercitazione. Per ulteriori informazioni, vedere Panoramica di Bastion.
-
Impostare l'interfaccia della riga di comando locale di Oracle Cloud Infrastructure (OCI CLI). Per ulteriori informazioni, vedere Installazione dell'interfaccia CLI.
-
Docker locale per creare immagini, se utilizzi Oracle Linux, consulta Docker: Installa Docker su Oracle Linux 8 (OL8).
-
CLI FN locale per distribuire la funzione in OCI. Per ulteriori informazioni, vedere Installazione dell'interfaccia CLI di Fn Project.
-
Task 1: Impostazione dei gruppi dinamici
Andare al dominio, fare clic su Gruppi dinamici e creare i gruppi riportati di seguito.
Nome gruppo dinamico: MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Task 2: Creare criteri
Andare a Criteri e creare i criteri riportati di seguito.
Nome criterio: FunctionsPolicies
.
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage compute-management-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage load-balancers in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read metrics in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read alarms in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage instance-pools in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME
Task 3: Crea OCI Container Registry
-
Andare a Servizi sviluppatore, fare clic su Container di registro e creare un repository privato per l'immagine Fn.
Nome repository:
lab/fn-autoscale-instance-pool
. -
Controllare i repository e prendere nota dello spazio di nomi.
-
Aprire la shell del terminale in cui sono installate l'interfaccia CLI OCI e Docker e procedere con il login al registro. Controllare l'URL corretto per la propria area. In questa esercitazione viene utilizzata l'area Brasile orientale (San Paolo) in cui l'URL del registro è
gru.ocir.io
.docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
Task 4: creare le funzioni OCI Python per ridimensionare automaticamente il pool di istanze
Nota: assicurarsi di aver selezionato la subnet privata, la stessa subnet del pool di flussi.
-
Andare a OCI Console e fare clic su Servizi per sviluppatori. In Funzioni, fare clic su Applicazioni e su Crea applicazione.
-
Creare alcune configurazioni per impostare le dimensioni di scala.
Nota: queste variabili di configurazione vengono utilizzate per determinare i valori che la funzione utilizzerà per eseguire lo scale-in e lo scale-out del pool di istanze.
Nome segreto Valore INSTANCE_POOL_TARGET_SIZE Impostare il valore per la nuova dimensione del pool di istanze INSTANCE_POOL_DESIRED_SIZE Impostare la dimensione normale del pool di istanze Per questa esercitazione viene utilizzato un pool di istanze di 1 istanza e lo scale-out viene eseguito in
2
. -
Andare alla shell del terminale in cui sono installati Docker, CLI OCI, CLI Fn Project ed eseguire i comandi riportati di seguito per inizializzare la funzione.
Nota: se sono stati eseguiti i task, il comando di login Docker è già stato eseguito, in caso contrario, procedere con il task 3.3 di login Docker.
mkdir lab cd lab fn create context oci-cloud --provider oracle fn use context oci-cloud fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab fn init --runtime python fn-autoscale-instance-pool cd fn-autoscale-instance-pool ls -lrt
Nota: in questa esercitazione viene utilizzata l'area Est del Brasile (San Paolo). Se si utilizza un'area diversa, è necessario modificare le posizioni
api-url
eregistry
.Il comando
init
creerà una funzione Hello World sufunc.py
. Questo codice verrà sovrascritto. -
Ottenere il codice di esempio della funzione Python da qui: func.py e sovrascrivere il valore
func.py
locale creato durante il comando della funzioneinit
.# Copy the function code from this lab and save it on /tmp/func.py in your shell machine ls -lrt /tmp/func.py # Overwrite the func.py with tha lab's code cp /tmp/func.py func.py # Add the OCI package on the requirements.txt file, this will be needed to work with OCI. echo -e "\noci" >> requirements.txt # Check if requirements.txt has two lines cat requirements.txt
-
Creare il nuovo codice e distribuire la funzione.
ls -lrt fn deploy --app MyApp
Task 5: Creare le notifiche OCI
-
Andare a OCI Console e fare clic su Servizi per sviluppatori. In Integrazione applicazioni selezionare Notifiche e fare clic su Crea argomento.
Nome:
AutoScaleTopic
. -
Fare clic su Sottoscrizioni per creare una nuova sottoscrizione e selezionare la funzione creata nel task 4.
Task 6: creare la definizione di allarme per lo scale-out (adeguare la dimensione del pool di istanze al valore di destinazione)
-
Andare alla console OCI e fare clic su Osservabilità e gestione. In Monitoraggio, selezionare Definizioni allarme e fare clic su Crea allarme.
Nota: le soglie e l'intervallo di questo allarme sono definiti per l'esercitazione e possono essere personalizzati in base alle proprie esigenze a seconda dell'applicazione.
Nome allarme:
instance_pool_scale_OUT
. -
Immettere le seguenti informazioni per definire l'allarme.
-
Nella sezione Descrizione metrica, inserire le seguenti informazioni.
- Spazio di nomi metrica:
oci_lbaas
. - Nome metrica:
HttpRequests
. - Intervallo:
1 minute
. - Statistica:
Max
.
- Spazio di nomi metrica:
-
Nella sezione Dimensioni metrica, immettere le informazioni riportate di seguito.
-
Prima dimensione metrica:
- Nome dimensione:
resourceID
. - Valore dimensione: selezionare l'OCID del load balancer.
- Nome dimensione:
-
Seconda dimensione metrica:
- Nome dimensione:
backendSetName
. - Valore dimensione: selezionare il nome backendSet.
- Nome dimensione:
-
-
Nella sezione Regola trigger 1 immettere le informazioni riportate di seguito.
- Operatore:
greater than
. - Valore:
30
. - Corpo di allarme: il numero di connessioni è superiore al previsto. Avviare il processo di ridimensionamento.
- Operatore:
-
-
Immettere le informazioni riportate di seguito per definire le notifiche di allarme.
-
Nella sezione Destinazione, immettere le informazioni riportate di seguito.
- Servizio di destinazione: selezionare Notifiche.
- Compartimento: selezionare il compartimento.
- Argomento: selezionare l'argomento.
-
Nella sezione Formato messaggio selezionare Invia messaggi Pretty JSON (testo raw con interruzioni di riga) e, a scopo di test, selezionare Ripeti notifica? con 1 minuto di frequenza di notifica.
-
-
Fare clic su Opzioni avanzate e aggiungere una nuova tag.
Nota: si tratta di un'applicazione di tag obbligatoria per definire il tipo di scala, entrata o uscita.
Spazio di nomi tag: selezionare Nessuno (applicazione di una tag in formato libero).
Chiave tag:autoscaling_type
. Valore:out
.
Task 7: Creare la definizione di allarme per lo scale-in (Rettificare la dimensione del pool di istanze alla dimensione desiderata)
-
Andare alla console OCI e fare clic su Osservabilità e gestione. In Monitoraggio, selezionare Definizioni allarme e fare clic su Crea allarme.
Nota: le soglie e l'intervallo di questo allarme sono definiti per l'esercitazione e possono essere personalizzati in base alle proprie esigenze a seconda dell'applicazione.
Nome allarme:
instance_pool_scale_IN
. -
Immettere le seguenti informazioni per definire l'allarme.
-
Nella sezione Descrizione metrica, inserire le seguenti informazioni.
- Spazio di nomi metrica:
oci_lbaas
. - Nome metrica:
HttpRequests
. - Intervallo:
1 minute
. - Statistica:
Max
.
- Spazio di nomi metrica:
-
Nella sezione Dimensioni metrica, immettere le informazioni riportate di seguito.
-
Prima dimensione metrica:
- Nome dimensione:
resourceID
. - Valore dimensione: selezionare l'OCID del load balancer.
- Nome dimensione:
-
Seconda dimensione metrica:
- Nome dimensione:
backendSetName
. - Valore dimensione: selezionare il nome backendSet.
- Nome dimensione:
-
-
Nella sezione Regola trigger 1 immettere le informazioni riportate di seguito.
- Operatore:
less than
. - Valore:
30
. - Corpo di allarme: il conteggio delle connessioni torna al valore accettabile, richiamando lo scale-in per ridurre il numero di istanze al valore desiderato.
- Operatore:
-
-
Immettere le informazioni riportate di seguito per definire le notifiche di allarme.
-
Nella sezione Destinazione, immettere le informazioni riportate di seguito.
- Servizio di destinazione: selezionare Notifiche.
- Compartimento: selezionare il compartimento.
- Argomento: selezionare l'argomento.
-
Nella sezione Formato messaggio selezionare Invia messaggi Pretty JSON (testo RAW con interruzioni di riga).
-
-
Fare clic su Opzioni avanzate e aggiungere una nuova tag.
Nota: si tratta di un'applicazione di tag obbligatoria per definire il tipo di scala, entrata o uscita.
Spazio di nomi tag: selezionare Nessuno (applicazione di una tag in formato libero).
Chiave tag:autoscaling_type
. Valore:in
.
Task 8: Crea carico e controlla il funzionamento dell'allarme
-
Ottieni il tuo IP LoadBalancer ed esegui diverse chiamate alla tua applicazione sulla porta
80
. Aprire la console della shell ed eseguire il codice seguente per chiamare il load balancer.i=1 while true do echo "Request $i" curl http://your-ip-here ((i++)) echo "" # Prints a newline for better readability between requests done
Output del semplice caricamento dell'applicazione.
Nota: questo è un semplice server Web HTTP Apache per dimostrare lo scenario.
-
Controllare la dimensione e lo stato effettivi del pool di istanze. Per questa esercitazione è disponibile un pool di istanze con dimensione
1
. -
Aprire la definizione dell'allarme per visualizzare le metriche e verificare se l'allarme verrà attivato.
-
Dopo alcuni minuti a seconda dell'intervallo di metriche, la funzione di scale-out verrà attivata.
Aprire i pool di istanze e selezionare Stato, ovvero Scalatura e Conteggio istanze di destinazione
2
.Dopo il processo di ridimensionamento, è possibile vedere che la dimensione del pool di istanze è
2
. -
Arrestare lo script della shell e attendere che l'allarme dalla transizione di scale-out torni a OK, quindi osservare l'allarme per lo scale-in. Attendere alcuni minuti fino a quando entrambi gli allarmi sono aggiornati e osservare quando l'allarme per scale-in si accenderà.
Ora, l'allarme scale-in è in stato di incendio.
Si noti che HttpRequests è stato eliminato a un numero inferiore alla soglia di
30
.Scale-in del pool di istanze avviato.
Si noti che la dimensione del pool di istanze torna al valore desiderato di
1
.
Collegamenti correlati
Riconoscimenti
- Autore - Joao Tarla (Solution Engineer Oracle LAD A-Team)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Autoscale an Oracle Cloud Infrastructure Instance Pool based on OCI Load Balancer HTTP Requests
F99758-01
May 2024