Creazione di un programma di bilanciamento del carico di rete privato con modalità di instradamento
I dispositivi VNF (Virtual Network Function) sono servizi di rete virtualizzati (come router e firewall) in esecuzione sulle macchine virtuali. Con IBM Cloud VPC, puoi eseguire il provisioning dei dispositivi VNF per ottenere una scalabilità migliore e più conveniente di quanto faresti acquistando i dispositivi di rete fisici.
Il traffico destinato ai server in IBM Cloud VPC deve essere consegnato a dispositivi VNF integri; altrimenti, si verifica un'interruzione del traffico. Puoi utilizzare i programmi di bilanciamento del carico di rete con la modalità di instradamento per eseguire i controlli di integrità e per garantire che i carichi di lavoro viaggiano solo attraverso dispositivi VNF integri. Per questo motivo, i programmi di bilanciamento del carico di rete con modalità di instradamento supportano solo i dispositivi VNF come destinazioni di backend.
Per esempi dettagliati di vari modi in cui puoi distribuire il tuo NLB con la modalità di instradamento, fai riferimento a Distribuzioni VNF HA.
Prima di iniziare
Per configurare un programma di bilanciamento del carico di rete con la modalità di instradamento abilitata, assicurarsi di aver soddisfatto i seguenti prerequisiti:
-
Se non disponi di un VPC, crea un VPC nella regione in cui vuoi creare il tuo NLB.
-
Crea una sottorete nella tua zona preferita nel tuo VPC.
-
Per supportare la modalità di instradamento, devi prima creare una politica di autenticazione service - to - service per il tuo NLB. Per procedere, segui questi passaggi:
- Dal tuo browser, accedi a IBM Access Management.
- Fai clic su Autorizzazioni, quindi su Crea.
- Per il servizio di origine, seleziona VPC Infrastructure Services. Per l'accesso all'ambito, selezionare Risorse basate sugli attributi selezionati > Tipo di risorsa > Load Balancer per VPC.
- Per il servizio di destinazione, seleziona VPC Infrastructure Services. Per l'accesso all'ambito, selezionare Risorse basate sugli attributi selezionati > Tipo di risorsa > Virtual Private Cloud.
- Selezionare la casella di spunta Editor per fornire a se stessi l'accesso Editor, quindi fare clic su Autorizza.
Il seguente elenco mostra in dettaglio alcune importanti considerazioni sul programma di bilanciamento del carico di rete con la modalità di instradamento abilitata:
- La modalità di instradamento NLB ha due indirizzi IP (Attivo / Standby).
- La modalità di instradamento NLB è progettata per essere trasparente. Quando si verifica un failover, la modalità di instradamento aggiorna tutte le regole di instradamento create nello stesso VPC con
next_hopdell'IP del dispositivo di standby. Di conseguenza, entrambi gli IP possono essere utilizzati durante la durata del tuo NLB con la modalità di instradamento. - Nel caso di una configurazione Transit VPC, potresti voler distribuire l'NLB in
vpc-hube configurare la rotta in uscita invpc-spoke. Ciò forzerà il ritorno dei dati all'NLB con modalità di instradamento invpc-hub. Assicurati di aggiungere anche le regole di ingresso equivalenti alle regole di uscita dell'vpc-spokee avpc-hubin modo che le regole di uscita non debbano essere modificate. Dopo che il traffico raggiunge l'vpc-hub, la regola di instradamento dell'ingresso sovrascrive l'next_hope e lo invia all'appliance primaria.
Creazione di un programma di bilanciamento del carico di rete con modalità di instradamento utilizzando l'IU
Per creare e configurare Network Load Balancer for VPC con la modalità di instradamento con la console IBM Cloud, attieniti alla seguente procedura:
-
Dal 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.
-
Fai clic su New load balancer + in alto a destra della pagina.
-
Nel modulo d'ordine, inserisci le seguenti informazioni:
- Immettere un nome univoco per il programma di bilanciamento del carico e selezionare un VPC.
- Seleziona un gruppo di risorse. Utilizzare il gruppo predefinito o selezionarlo dall'elenco (se definito per il proprio account). Non è possibile modificare il gruppo di risorse dopo aver creato il bilanciatore di carico.
- Seleziona il tile Network Load Balancer (NLB) e la sottorete in cui vuoi distribuire il programma di bilanciamento del carico.
- Seleziona il tipo " Privato ".
- Facoltativamente, aggiungere tag.
-
Rivedere le istruzioni dell'elenco di controllo nella finestra della modalità di instradamento, quindi fare clic sul pulsante per abilitarlo.
Non puoi modificare la configurazione di un NLB in modalità di instradamento una volta terminato il provisioning.
-
Fai clic su New pool e specifica le seguenti informazioni per creare un pool di back-end.
-
Digita un nome per il pool, ad esempio "
my-pool". -
Immettere un protocollo per le istanze in questo pool. Il protocollo del pool deve corrispondere al protocollo del listener associato. Ad esempio, se il listener è TCP, il protocollo del pool deve essere TCP.
-
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 presenta il minor numero di connessioni.
- Inoltro ponderato- Inoltro delle richieste tramite un algoritmo di hash IP per distribuire i pacchetti tra le destinazioni in base ai pesi assegnati. Ogni pacchetto viene inoltrato in base alle proprie intestazioni, supportando sia il traffico simmetrico che quello asimmetrico.
-
Scegliere la permanenza della sessione e selezionare Nessuno.
-
Sotto i controlli di integrità, vengono visualizzate le seguenti opzioni.
- Percorso di controllo dello stato di integrità- Il percorso di controllo dello stato di integrità è applicabile solo se si seleziona HTTP come protocollo di controllo dello stato di salute. 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 radice (/).
- Protocollo di integrità- Il protocollo utilizzato dal bilanciatore di carico per inviare messaggi di controllo dell'integrità alle istanze presenti nel pool.
- Porta di integrità- La porta su cui il bilanciatore di carico invia le richieste di controllo di integrità. Per impostazione predefinita, i controlli di integrità vengono inviati sulla stessa porta su cui viene inviato il traffico all'istanza.
- Intervallo- L'intervallo, espresso in secondi, tra due tentativi consecutivi di controllo dello stato di salute. 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 di integrità. 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.
Sebbene un bilanciatore di carico smetta di inviare connessioni alle istanze non funzionanti, continua comunque a monitorarne lo stato di salute e ne riprende l'utilizzo se vengono nuovamente ritenute funzionanti (ovvero, se superano con successo due tentativi consecutivi di controllo dello stato di salute).
Se le istanze nel pool non sono in buono stato 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 Nuovo listener e specificare il pool di backend a cui questo listener inoltra il traffico.
Il protocollo per la ricezione delle richieste in entrata e la porta di ascolto su cui vengono ricevute le richieste sono già selezionati.
-
Un riepilogo dell'ordine mostra le stime dei prezzi. Leggi i termini e le condizioni dei servizi cloud. Quindi, fai clic su Crea per completare il tuo ordine.
Creazione di un programma di bilanciamento del carico di rete con la modalità di instradamento utilizzando la CLI
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. 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 network --route-mode trueOutput di esempio:
Creating load balancer vnf under account CNS Development Account - netsvs as user ibm@us.ibm.com... ID r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Name vnf CRN crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Family Network Routing Mode Enabled true Host name c7cadd8e-us-east.lb.appdomain.cloud Subnets ID Name 0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024 nlb-subnet 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-09-14T17:54:24.584-05:00 Security groups supported false -
Attendere che l'NLB sia in stato attivo, quindi eseguire il seguente comando:
ibmcloud is load-balancer r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512Output di esempio:
Getting load balancer r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 under account CNS Development Account - netsvs as user ibm@us.ibm.com... ID r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Name vnf CRN crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Family Network Routing Mode Enabled true Host name c7cadd8e-us-east.lb.appdomain.cloud Subnets ID Name 0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024 nlb-subnet Public IPs Private IPs 10.241.64.16, 10.241.64.17 Provision status active Operating status online Is public false Listeners Pools ID Name Resource group ID Name 42c4f51adc3147b4b4049ad9826c30a1 Default Created 2021-09-14T17:54:24.584-05:00 Security groups supported falsePrendi nota del primo indirizzo IP elencato in IP privati. Ne hai bisogno quando definisci percorsi personalizzati.
-
Aggiungere un pool.
ibmcloud is load-balancer-pool-create example-pool r006-df4c0e10-e882-4ade-a668-b2e518325d6a round_robin tcp 20 2 5 tcpOutput di esempio:
Creating pool example-pool of load balancer r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 under account CNS Development Account - netsvs as user ibm@us.ibm.com ID r014-474dca7d-aece-48a3-a636-fe8c3e654a3b Name example-pool Protocol tcp Algorithm round_robin Instance group ID Name - - Proxy protocol disabled Health monitor Type Port Health monitor URL Delay Retries Timeout tcp - 20 2 5 Session persistence Type Cookie name - - Members Provision status active Created 2021-09-14T18:03:56.274-05:00 -
Aggiungere un membro.
ibmcloud is load-balancer-pool-member-create r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 r014-474dca7d-aece-48a3-a636-fe8c3e654a3b 200 0767_5545cfb3-febc-4f09-b9ea-0aeb66074edfOutput di esempio:
Creating member of pool r014-474dca7d-aece-48a3-a636-fe8c3e654a3b under account CNS Development Account - netsvs as user ibm@us.ibm.com... ID r014-1fdb900f-81a4-4204-839a-fcdee6c28e8a Port 200 Target 0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf Weight 50 Health unknown Created 2021-09-14T19:27:11.077-05:00 Provision status create_pending
Creazione di un programma di bilanciamento del carico di rete con modalità di instradamento con l'API
Per creare un programma di bilanciamento del carico di rete con modalità di instradamento con l'API, attieniti alla seguente procedura:
-
Crea il tuo payload di richiesta API utilizzando il modello seguente. Modifica il nome e la sottorete con i tuoi valori.
{ "name": "nlb-vnf", "is_public": false, "profile": { "name": "network-fixed" }, "route_mode": true, "subnets": [ { "id": "0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024" } ] }Salva questo payload in un file JSON. Nei seguenti esempi, il file è denominato
create.json. -
Effettua la richiesta di creare il tuo NLB con i seguenti comandi. Le seguenti proprietà devono essere prima impostate nel payload:
route_modeètrueis_publicèfalse- Il nome del profilo è
network_fixed
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @create.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers?version=2021-07-30&generation=2" | jqL'esempio utilizza come parser
jq, uno strumento di terze parti con licenza MIT.jqpotrebbe non essere preinstallato su tutte le immagini VPC disponibili al momento della creazione di un'istanza. Potrebbe essere necessario installarejqprima dell'uso o utilizzare un altro parser di propria scelta.Output di esempio:
{ "id": "r014-020f4f34-bb49-4699-98a7-a53384cd649d", "name": "nlb-vnf", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-020f4f34-bb49-4699-98a7-a53384cd649d", "is_public": false, "created_at": "2021-09-14T21:45:06.377862525Z", "hostname": "020f4f34-us-east.lb.appdomain.cloud", "listeners": [], "operating_status": "offline", "pools": [], "private_ips": [], "provisioning_status": "create_pending", "public_ips": [], "subnets": [ { "id": "0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "href": "https://us-east.iaas.cloud.ibm.com/v1/subnets/0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::subnet:0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "name": "nlb-subnet" } ], "resource_group": { "id": "42c4f51adc3147b4b4049ad9826c30a1", "href": "https://resource-controller.cloud.ibm.com/v1/resource_groups/42c4f51adc3147b4b4049ad9826c30a1", "name": "Default" }, "resource_type": "load_balancer", "logging": { "datapath": { "active": false } }, "profile": { "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed", "family": "Network" }, "security_groups": [], "security_group_supported": false, "route_mode": true } -
Una volta che l'NLB è in stato attivo, eseguire una chiamata “
GET” per recuperare il suo stato.curl -s -H "Authorization: Bearer $IAM_TOKEN" -X GET "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d?version=2021-07-30&generation=2" | jqOutput di esempio:
{ "id": "r014-020f4f34-bb49-4699-98a7-a53384cd649d", "name": "nlb-vnf", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-020f4f34-bb49-4699-98a7-a53384cd649d", "is_public": false, "created_at": "2021-09-14T21:45:06.377863Z", "hostname": "020f4f34-us-east.lb.appdomain.cloud", "listeners": [], "operating_status": "online", "pools": [], "private_ips": [ { "address": "10.241.64.13" }, { "address": "10.241.64.14" } ], "provisioning_status": "active", "public_ips": [], "subnets": [ { "id": "0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "href": "https://us-east.iaas.cloud.ibm.com/v1/subnets/0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::subnet:0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "name": "nlb-subnet" } ], "resource_group": { "id": "42c4f51adc3147b4b4049ad9826c30a1", "href": "https://resource-controller.cloud.ibm.com/v1/resource_groups/42c4f51adc3147b4b4049ad9826c30a1", "name": "Default" }, "resource_type": "load_balancer", "logging": { "datapath": { "active": false } }, "profile": { "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed", "family": "Network" }, "security_groups": [], "security_group_supported": false, "route_mode": true }Nota il primo indirizzo IP elencato in
Private IPs. Ne hai bisogno quando definisci percorsi personalizzati. -
Aggiungere un pool.
Per prima cosa, crea il tuo payload della richiesta API utilizzando il modello seguente.
{ "algorithm": "round_robin", "protocol": "tcp", "health_monitor": { "delay": 10, "max_retries": 2, "timeout": 5, "type": "tcp" } }Quindi, esegui il seguente comando:
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @create.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools?version=2021-07-30&generation=2" | jqOutput di esempio:
{ "id": "r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "name": "flashbulb-marvelous-gainfully-skydiver", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "algorithm": "round_robin", "health_monitor": { "delay": 10, "max_retries": 2, "timeout": 5, "type": "tcp" }, "protocol": "tcp", "created_at": "2021-09-14T21:56:08.202217034Z", "provisioning_status": "active", "proxy_protocol": "disabled" } -
Attendere che l'NLB sia in uno stato attivo, quindi aggiungere un listener.
L'intervallo di porte per il listener deve essere definito come segue:
port_minè1port_maxè65535
Crea un payload di richiesta API utilizzando il seguente modello:
{ "default_pool": { "id": "r014-0b8f4cde-4684-484b-bd3c-64f55a917328" }, "port_min": 1, "port_max": 65535, "protocol": "tcp" }Esegui il seguente comando:
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @create_vnf.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/listeners?version=2021-07-30&generation=2" | jqOutput di esempio:
{ "id": "r014-0ce87b15-9530-4624-a574-92495631f75d", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/listeners/r014-0ce87b15-9530-4624-a574-92495631f75d", "protocol": "tcp", "port": 1, "port_min": 1, "port_max": 65535, "default_pool": { "id": "r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "name": "flashbulb-marvelous-gainfully-skydiver" }, "provisioning_status": "create_pending", "created_at": "2021-09-14T22:01:13.523172702Z", "accept_proxy_protocol": false, "https_redirect": null } -
Aggiungere il membro del pool.
Per prima cosa, crea un payload di richiesta API utilizzando il seguente template:
{ "port": 90, "target": { "id": "0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf" } }Quindi esegui il seguente comando:
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @add_member.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328/members?version=2021-07-30&generation=2" | jqOutput di esempio:
{ "id": "r014-c625efe0-6f69-4ae7-a2ef-9bf33c811a2c", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328/members/r014-c625efe0-6f69-4ae7-a2ef-9bf33c811a2c", "port": 90, "target": { "id": "0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf", "href": "https://us-east.iaas.cloud.ibm.com/v1/instances/0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::instance:0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf" }, "weight": 50, "health": "unknown", "created_at": "2021-09-14T22:07:46.898295306Z", "provisioning_status": "create_pending" }
Passi successivi
Dopo che l'NLB con modalità di routing è in uno stato attivo, seguire i seguenti passi per finalizzare la configurazione dell'NLB:
-
Raccogli le seguenti informazioni:
-
I CIDR delle sottoreti (sottoreti in cui risiedono i VSI del carico di lavoro, che saranno gli IP da usare come IP di destinazione).
-
Nella risposta del bilanciatore di carico sono elencati due IP privati. Prendi nota della prima.
Puoi generare questa risposta eseguendo il passo 4 della CLI o delle procedure API.
Il primo IP elencato è quello primario, mentre il secondo è quello secondario, a scopo di backup. Entrambi sono elencati in modo che in futuro, se si verifica un failover, si conoscano gli IP attivi e passivi.
-
Il CIDR della sottorete del carico di lavoro di back-end.
-
-
Configura i tuoi instradamenti personalizzati come segue:
- Per tutto il traffico destinato alla sottorete del carico di lavoro del cliente backend, imposta l'hop successivo sull'IP privato NLB.
- Per tutto il traffico destinato alla sottorete del client, imposta l'hop successivo sull'IP privato NLB.
-
Le istanze VNF (VNI) devono risiedere sulla stessa subnet dell'NLB e devono essere aggiunte come membri al pool.