Creazione di un programma di bilanciamento del carico di rete pubblico o privato
È possibile creare un sito IBM Cloud® Network Load Balancer for VPC (NLB) con la console, la CLI o l'API.
Prima di iniziare
Per configurare un NLB pubblico o privato, assicurati di aver soddisfatto i seguenti prerequisiti:
- Se non hai un VPC, crea un VPC nella regione in cui vuoi creare il tuo NLB.
- Crea una sottorete nella zona preferita nel tuo VPC.
Il servizio NLB può aggiungere regole alle tabelle di instradamento personalizzate per garantire la disponibilità del servizio per alcune condizioni di errore. Di conseguenza, se il client è esterno alla zona e / o al VPC dell'NLB, devi aggiungere una tabella di instradamento personalizzata in ingresso al VPC in cui risiede l'NLB con l'origine del traffico corretta selezionata.
Per NLB privato, a seconda dell'ubicazione dei client, devi assicurarti che le tabelle di instradamento in ingresso esistano (come descritto nella Tabella 1).
| Ubicazione client | Tipo di tabella di instradamento | Origine traffico |
|---|---|---|
| On-prem | Ingress | Direct Link |
| Un'altra infrastruttura VPC o classica | Ingress | Transit Gateway |
| Un'altra zona di disponibilità dello stesso VPC | Ingress | Zona VPC |
Per ulteriori informazioni, consultare Informazioni sulle tabelle di instradamento e sugli instradamenti.
Creazione di un bilanciatore di carico di rete nella console
Per creare e configurare un programma di bilanciamento del carico di rete nella console IBM Cloud, attieniti alla seguente procedura:
-
Dal tuo browser, apri la console IBM Cloud ed effettua l'accesso al tuo account.
-
Selezionare l'
del menu di navigazione, quindi fare clic sull'icona Infrastruttura
> Rete > Bilanciatori di carico.
-
Fare clic su Crea + nella parte superiore destra della pagina.
-
Per il tipo di programma di bilanciamento del carico, seleziona il tile NLB (Network Load Balancer).
-
Per Posizione, modificare i seguenti campi, se necessario.
- Area geografica- Indica l'area geografica in cui si desidera creare il programma di bilanciamento del carico.
- Regione- Indica la regione in cui vuoi che venga creato il programma di bilanciamento del carico.
-
Per Dettagli, completare le seguenti informazioni:
-
Nome- Inserisci un nome per il bilanciatore di carico, ad esempio
my-load-balancer. -
Gruppo di risorse- Selezionare un gruppo di risorse per il bilanciatore di carico.
-
Tag- (Facoltativo) Aggiungi dei tag per organizzare e trovare più facilmente le tue risorse. Puoi aggiungere più tag in seguito. Per ulteriori informazioni, vedi Gestione delle tag.
-
Tag di gestione degli accessi- (facoltativo) Aggiungere tag di gestione degli accessi alle risorse per organizzare le relazioni di controllo degli accessi. L'unico formato supportato per le tag di gestione accessi è
key:value. Per ulteriori informazioni, vedi Controllo dell'accesso alle risorse utilizzando le tag. -
Cloud privato virtuale- Seleziona il tuo VPC.
-
Per il tipo. selezionare Pubblico o Privato.
Solo per tipo privato, è possibile abilitare la modalità di instradamento, che viene utilizzata per distribuire le VNFs (virtual network function) ad alta disponibilità. Per i casi di utilizzo e le istruzioni end-to-end, vedi Informazioni sulle distribuzioni di funzioni di rete virtuali HA.
-
Per il tipo DNS, seleziona Pubblico o Privato. Le zone DNS private sono risolvibili solo su IBM Cloud e solo da reti espressamente autorizzate all'interno di un account o con accesso tra account.
Solo per il tipo privato, fare clic su Bind + per immettere l'istanza DNS e le informazioni di zona, quindi fare clic su Bind.
-
Seleziona le sottoreti in cui creare il tuo bilanciatore di carico. Per massimizzare la disponibilità della tua applicazione, seleziona sottoreti in zone diverse.
-
-
Per i pool di back-end, fare clic su Crea pool e specificare le seguenti informazioni per creare un pool di back-end. Al termine, fai clic su Crea.
Puoi creare uno o più pool.
-
Digita un nome per il pool, ad esempio "
my-pool". -
Seleziona un protocollo per le tue istanze in questo pool. Il protocollo del pool deve corrispondere al protocollo del listener associato. Ad esempio, se l'ascoltatore è TCP, il protocollo del pool deve essere TCP. Oppure, se l'ascoltatore è UDP, anche il protocollo del pool deve essere UDP.
-
Scegliere la persistenza della sessione e selezionare Nessuno o IP di origine. Se si sceglie IP di origine, tutte le richieste durante la sessione vengono inviate alla stessa istanza.
-
Selezionare il metodo, che è l'algoritmo di bilanciamento del carico. Vengono visualizzate le seguenti opzioni:
- Round robin- Inoltra le richieste a ciascuna istanza a turno. Tutte le istanze ricevono approssimativamente un numero uguale di connessioni client.
- Round robin ponderato- Inoltra le richieste a ciascuna istanza in proporzione al peso assegnatole. Ad esempio, se si dispone delle istanze A, B e C e i relativi pesi sono impostati su 60, 60 e 30, le istanze A e B ricevono un uguale numero di connessioni e l'istanza C riceve la metà del numero di connessioni.
- Meno connessioni- Inoltra le richieste all'istanza che in quel momento ha il minor numero di connessioni.
-
Per il controllo di integrità, vengono visualizzate le seguenti opzioni:
- Percorso di controllo dello stato - Un percorso di controllo dello stato è applicabile solo se si seleziona " HTTP " come protocollo di controllo dello stato. Il percorso del controllo di integrità specifica l' URL utilizzato dal bilanciatore di carico per inviare le richieste di controllo di integrità HTTP alle istanze presenti nel pool. Per impostazione predefinita, i controlli di integrità vengono inviati al percorso principale (/).
- Protocollo di integrità- Il protocollo utilizzato dal bilanciatore di carico per inviare messaggi di controllo dello stato alle istanze presenti nel pool.
- Porta di integrità- La porta su cui il bilanciatore di carico invia le richieste di controllo dello stato. Per impostazione predefinita, i controlli di integrità vengono inviati sulla stessa porta su cui viene inviato il traffico all'istanza.
- Intervallo- L'intervallo in secondi tra due tentativi consecutivi di controllo dello stato. Per impostazione predefinita, i controlli di integrità vengono inviati ogni 5 secondi.
- Timeout (sec)- Il tempo massimo che il sistema attende per ricevere una risposta a una richiesta di controllo dello stato. Per impostazione predefinita, il programma di bilanciamento del carico attende 2 secondi per una risposta.
- Numero massimo di tentativi: il numero massimo di tentativi di controllo dello stato che il bilanciatore di carico effettua prima che un'istanza venga dichiarata non funzionante. Per impostazione predefinita, un'istanza non è più considerata integra dopo due controlli di integrità non riusciti.
È possibile collegare le istanze del server dopo aver creato un pool di back-end.
-
-
Opzionalmente, è possibile creare un backup per qualsiasi pool esistente. Ciò consente al pool di backup di gestire il traffico in caso di guasto di un membro. A tal fine, è necessario creare un criterio failsafe:
Il tuo bilanciatore di carico deve avere almeno un pool per poter assegnare un pool di backup.
- Dopo che lo stato del bilanciatore del carico cambia in Attivo, seleziona la scheda Pool back-end.
- Nella pagina dell'elenco delle piscine, fare clic su Modifica, quindi specificare le seguenti informazioni:
- Azione: selezionare avanti per creare un pool di backup. In questo modo la sezione Target diventa attiva.
- Target: selezionare un pool dall'elenco dei pool compatibili per creare il pool di backup.
Per i bilanciatori di carico di rete, non è possibile assegnare un pool come pool di backup se è già collegato a un listener. Inoltre, gli ascoltatori non possono essere collegati a un pool di backup.
Sebbene il programma di bilanciamento del carico interrompa l'invio di connessioni a istanze non integre, il programma di bilanciamento del carico continua a monitorare l'integrità di queste istanze e ne ripristina l'utilizzo se vengono rilevate nuovamente integre (ovvero, se superano correttamente due tentativi consecutivi di controllo di integrità).
Se le istanze nel pool non sono integre e ritieni che la tua applicazione funzioni correttamente, ricontrolla i valori del protocollo di integrità e del percorso di integrità. Inoltre, controlla tutti i gruppi di sicurezza collegati alle istanze per assicurati che le regole consentano il traffico tra il programma di bilanciamento del carico e le istanze.
-
Fare clic su " Crea listener " e specificare le seguenti informazioni:
- Pool di back-end predefinito- Il pool di back-end predefinito a cui questo listener inoltra il traffico.
- Protocollo- Il protocollo da utilizzare per ricevere le richieste in arrivo.
- Porta di ascolto- La porta su cui vengono ricevute le richieste. Le scelte sono:
- Porta listener singola- La porta a cui il programma di bilanciamento del carico riceve il traffico del cliente in entrata.
- Intervallo porta listener- L'intervallo di porte in cui il programma di bilanciamento del carico riceve il traffico del tuo cliente in entrata.
Quindi, fai clic su Create. Puoi creare uno o più listener.
-
Per i gruppi di sicurezza, seleziona i gruppi di sicurezza che vuoi collegare al tuo programma di bilanciamento del carico o fai clic su Crea per creare un nuovo gruppo di sicurezza da collegare alla tua NLB.
Accertarsi che il gruppo di sicurezza consenta il traffico di bilanciamento del carico (listener, destinazioni e porte di verifica integrità). Se non specifichi un gruppo di sicurezza, il gruppo di sicurezza predefinito dal tuo VPC si collega invece.
-
Fai clic su Aggiungi alla stima per esaminare i prezzi per il tuo programma di bilanciamento del carico e crearlo.
Creazione di un programma di bilanciamento del carico di rete dalla CLI
Il seguente esempio illustra l'utilizzo della CLI per creare un NLB ( Network Load Balancer for VPC ). In questo esempio, si trova di fronte a un'istanza di server virtuale VPC (ID 0716_6acdd058-4607-4463-af08-d4999d983945) che
esegue un server TCP in ascolto sulla porta 9090. Il bilanciatore di carico dispone di un ascoltatore front-end, che consente un accesso sicuro al server TCP.
Per creare un programma di bilanciamento del carico di rete con la CLI, attieniti alla seguente procedura:
-
Imposta il tuo ambiente CLI.
-
Accedi al tuo account dalla CLI. Dopo aver immesso la password, il sistema richiede l'account e la regione che si desidera utilizzare.
ibmcloud login --sso -
Crea un programma di bilanciamento del carico.
ibmcloud is load-balancer-create nlb-test public --subnet 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c --family networkOutput di esempio:
Creating load balancer nlb-test in resource group under account IBM Cloud Network Services as user test@ibm.com... ID r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 Name nlb-test CRN crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 Family Network Host name 99b5ab45-us-south.lb.test.appdomain.cloud Subnets ID Name 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c nlb Security Groups ID Name 0581-a1336811-39dc-5aff-a0e6-6489a43ca62v nlb1 Public IPs Private IPs Provision status create_pending Operating status offline Is public true Listeners Pools ID Name Resource group ID Name 3021f90279574ce287dd5fba82c08899 Default Created 2020-08-27T14:34:34.732-05:00Creare un bilanciatore di carico di rete privato.
ibmcloud is load-balancer-create nlb-test private --subnet 07a7-37b4dcfc-841e-4d4a-9f9f-9e45ffbd0285 --family networkOutput di esempio:
Creating load balancer nlb-test in resource group under account CNS Development Account - netsvs as user test@us.ibm.com... ID r018-8a994baa-21ba-428c-ac3f-e3fd91fa92c9 Name nlb-test CRN crn:v1:bluemix:public:is:eu-gb-3:a/123456::load-balancer:r018-8a994baa-21ba-428c-ac3f-e3fd91fa92c9 Family Network Host name 8a994baa-eu-gb.lb.appdomain.cloud Subnets ID Name 07a7-37b4dcfc-841e-4d4a-9f9f-9e45ffbd0285 nlb1 Security Groups ID Name 0581-a1336811-39dc-5aff-a0e6-6489a43ca626 Public IPs Private IPs Provision status create_pending Operating status offline Is public false Listeners Pools ID Name Resource group ID Name 42c4f51adc3147b4b4049ad9826c30a1 Default Created 2021-03-22T11:34:57.34-05:00 -
Creare un pool.
ibmcloud is load-balancer-pool-create nlb-pool r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 weighted_round_robin tcp 10 --failsafe-policy-action forward --failsafe-policy-target pool2Output di esempio:
Creating pool nlb-pool of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com... ID r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 Name nlb-pool Protocol tcp Algorithm weighted_round_robin Instance group ID Name - - Health monitor Type Port Health monitor URL Delay Retries Timeout http 8080 / 10 2 5 Failsafe policy Action Target ID Target name Healthy Member Threshold Count forward r006-815e16e7-8729-4d9e-9203-936a6b615ee1 pool2 0 Session persistence type source_ip Members Provision status active Created 2020-08-27T14:45:42.038-05:00 -
Creare un membro.
ibmcloud is load-balancer-pool-member-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 9090 0716_6acdd058-4607-4463-af08-d4999d983945 --weight 70Output di esempio:
Creating member of pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 under account IBM Cloud Network Services as user test@ibm.com... ID r006-61f8b000-a90d-4abe-909e-c507dffec565 Port 9090 Target 0716_6acdd058-4607-4463-af08-d4999d983945 Weight 70 Health unknown Created 2020-08-27T14:59:55.446-05:00 Provision status create_pending -
Creare un listener.
ibmcloud is load-balancer-listener-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 7070 tcp --default-pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0Output di esempio:
Creating listener of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com... ID r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba Certificate instance - Connection limit - Port 7070 Protocol tcp Default pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 Provision status create_pending Created 2020-08-27T15:16:08.643-05:00 -
Ottieni i dettagli sul tuo programma di bilanciamento del carico.
ibmcloud is load-balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776Output di esempio:
Getting load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com... ID r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 Name nlb-test CRN crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 Family Network Host name 99b5ab45-us-south.lb.test.appdomain.cloud Subnets ID Name 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c nlb Public IPs 150.238.50.78, 150.238.54.95 Private IPs 10.240.0.58, 10.240.0.59 Provision status active Operating status online Is public true Listeners r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba Pools ID Name r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 nlb-pool Resource group ID Name 3021f90279574ce287dd5fba82c08899 Default Created 2020-08-27T14:34:34.732-05:00
Creazione di un programma di bilanciamento del carico di rete con l'API
L'esempio seguente illustra come creare un bilanciatore di carico di rete a fronte di due istanze di server virtuali VPC (192.168.100.5 e 192.168.100.6) che eseguono un'applicazione web in ascolto sulla porta 80.
Il programma di bilanciamento del carico ha un listener front-end che consente un accesso protetto all'applicazione web utilizzando HTTPS.
L'esempio ignora i passi prerequisiti per l'uso dell'API per eseguire il provisioning di un VPC, delle sottoreti e delle istanze.
Per creare un programma di bilanciamento del carico di rete con l'API, attieniti alla seguente procedura:
-
Memorizzare i seguenti valori nelle variabili da utilizzare nel comando API.
ResourceGroupId- Per prima cosa, ottieni il gruppo di risorse e popola la variabile.
export ResourceGroupId=<your_resourcegroup_id> -
Crea un bilanciatore di carico con un listener, un pool e istanze di server associate (membri del pool).
curl -H "Authorization: Bearer $iam_token" -X POST "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \ -d '{ "name": "example-balancer", "is_public": true, "profile": { "name": "network-fixed" }, "listeners": [ { "certificate_instance": { "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/123456:b8877ea4-b8eg-467e-912a-da1eb7f031cg:certificate:43219c4c97d013fb2a95b21dddde1234" }, "port": 443, "protocol": "tcp", "default_pool": { "name": "example-pool" } } ], "pools": [ { "algorithm": "round_robin", "health_monitor": { "delay": 5, "max_retries": 2, "timeout": 2, "type": "tcp", "url_path": "/" }, "name": "example-pool", "protocol": "tcp", "session_persistence": { "cookie_name": "string", "type": "source_ip" }, "members": [ { "port": 80, "target": { "address": "192.168.100.5" }, "weight": 50 }, { "port": 80, "target": { "address": "192.168.100.6" }, "weight": 50 } ] } ], "subnets": [ { "id": "7ec87131-1c7e-4990-b4f0-a26f2e61f98e" } ] }'Output di esempio:
{ "created_at": "2018-07-12T23:17:07.5985381Z", "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "hostname": "ac34687d.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "is_public": true, "profile": { "name": "network-fixed", "family": "network" }, "listeners": [ { "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004" } ], "name": "example-balancer", "operating_status": "offline", "pools": [ { "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004", "name": "example-pool" } ], "provisioning_status": "create_pending", "resource_group": { "id": "56969d60-43e9-465c-883c-b9f7363e78e8" }, "subnets": [ { "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "example-subnet" } ] }Salva l'ID del programma di bilanciamento del carico da utilizzare nei passi successivi. Ad esempio, puoi salvarlo nella variabile
lbid``.lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727 -
Ottieni informazioni dettagliate sul bilanciatore di carico.
curl -H "Authorization: Bearer $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"Attendi che venga eseguito il provisioning. Quando è pronto, il programma di bilanciamento del carico viene impostato sullo stato
onlineeactive, come mostrato nel seguente output di esempio:{ "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "name": "example-balancer", "created_at": "2018-07-13T22:22:24.489Z", "hostname": "dd754295-e9e0-4c9d-bf6c-58fbc59e5727.lb.appdomain.cloud", "is_public": true, "profile": { "name": "network-fixed", "family": "network" }, "listeners": [ { "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004" } ], "operating_status": "online", "pools": [ { "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004", "name": "example-pool" } ], "private_ips": [ { "address": "192.168.10.5" }, { "address": "192.168.10.6" } ], "provisioning_status": "active", "public_ips": [ { "address": "169.11.111.115" }, { "address": "169.11.111.116" } ], "resource_group": { "id": "0738-56969d60-43e9-465c-883c-b9f7363e78e8" }, "subnets": [ { "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "example-subnet" } ]