Création d'un équilibreur de charge de réseau privé en mode routage
Les dispositifs VNF (Virtual Network Function) sont des services réseau virtualisés (tels que des routeurs et des pare-feux) s'exécutant sur des machines virtuelles. Avec IBM Cloud VPC, vous pouvez mettre à disposition des dispositifs VNF afin d'obtenir une meilleure évolutivité et plus abordable que si vous achetiez des dispositifs de réseau physique.
Le trafic destiné aux serveurs de IBM Cloud VPC doit être acheminé vers des dispositifs VNF sains, faute de quoi le trafic est perturbé. Vous pouvez utiliser des équilibreurs de charge réseau avec le mode de routage pour effectuer des vérifications d'intégrité et pour s'assurer que les charges de travail ne transitent que par des unités VNF saines. De ce fait, les équilibreurs de charge réseau avec le mode de routage ne prennent en charge que les unités VNF comme cibles back-end.
Pour obtenir des exemples détaillés des différentes manières dont vous pouvez déployer votre équilibreur de charge de réseau avec le mode de routage, voir Déploiements VNF à haute disponibilité.
Avant de commencer
Pour configurer un équilibreur de charge réseau avec le mode routage activé, assurez-vous que vous avez rempli les conditions préalables suivantes :
-
Si vous n'avez pas de VPC, créez un VPC dans la région où vous souhaitez créer votre NLB.
-
Créez un sous-réseau dans votre zone préférée de votre VPC.
-
Pour prendre en charge le mode de routage, vous devez d'abord créer une règle d'authentification de service à service pour votre NLB. Pour ce faire, procédez comme suit :
- A partir de votre navigateur, connectez-vous à IBM Access Management.
- Cliquez sur Autorisations, puis sur Créer.
- Pour le service source, sélectionnez Services d'infrastructure VPC. Pour l'accès à la portée, sélectionnez Ressources basées sur les attributs sélectionnés > Type de ressource > Equilibreur de charge pour VPC.
- Pour le service cible, sélectionnez Services d'infrastructure VPC. Pour l'accès à la portée, sélectionnez Ressources basées sur les attributs sélectionnés > Type de ressource > Cloud privé virtuel (VPC).
- Sélectionnez la case à cocher Editeur pour vous donner accès à l'éditeur, puis cliquez sur Autoriser.
La liste suivante détaille certaines remarques importantes relatives à l'équilibreur de charge de réseau avec le mode de routage activé:
- Le mode de route NLB possède deux adresses IP (active / de secours).
- Le mode de route NLB est conçu pour être transparent. Lorsqu'une reprise en ligne se produit, le mode route met à jour toutes les règles de routage créées sous le même VPC avec le
next_hop
de l'adresse IP du dispositif de secours. Par conséquent, les deux adresses IP peuvent être utilisées pendant la durée de vie de votre équilibreur de charge de réseau avec le mode route. - Dans le cas d'une configuration Transit VPC, vous pouvez déployer l'équilibreur de charge de réseau dans
vpc-hub
et configurer la route de sortie dansvpc-spoke
. Les données seront retransmises à l'équilibreur de charge de réseau avec le mode de route dansvpc-hub
. Veillez à ajouter également les règles d'entrée équivalentes aux règles de sortie de l'vpc-spoke
àvpc-hub
afin que les règles de sortie n'aient pas besoin d'être modifiées. Une fois que le trafic atteintvpc-hub
, la règle de routage d'entrée écrase l'next_hop
, et l'envoie à l'appliance principale.
Création d'un équilibreur de charge réseau avec le mode de routage à l'aide de l'interface utilisateur
Pour créer et configurer Network Load Balancer for VPC en mode routage avec la console IBM Cloud, procédez comme suit :
-
Depuis votre navigateur, ouvrez la console IBM Cloud et connectez-vous à votre compte.
-
Sélectionnez l'
du menu Navigation, puis cliquez sur l'icône Infrastructure
> Réseau > Équilibreurs de charge.
-
Cliquez sur Nouvel équilibreur de charge + dans le coin supérieur droit de la page.
-
Dans le formulaire de commande, remplissez les informations suivantes :
- Entrez un nom unique pour votre équilibreur de charge et sélectionnez un VPC.
- Sélectionnez un groupe de ressources. Utilisez le groupe par défaut ou sélectionnez un groupe dans la liste (s'il est défini pour votre compte). Vous ne pouvez pas modifier le groupe de ressources après avoir créé l'équilibreur de charge.
- Sélectionnez la vignette Equilibreur de charge de réseau et le sous-réseau dans lequel vous souhaitez déployer l'équilibreur de charge.
- Sélectionnez le type Privé.
- Ajoutez éventuellement des balises.
-
Consultez les instructions de la liste de contrôle dans la fenêtre du mode de routage, puis cliquez sur le bouton pour l'activer.
Vous ne pouvez pas modifier la configuration d'un mode de routage NLB après avoir terminé l'application des accès.
-
Cliquez sur Nouveau pool et spécifiez les informations ci-dessous pour créer un pool de back-end.
-
Entrez un nom pour le pool (par exemple,
my-pool
). -
Entrez un protocole pour vos instances dans ce pool. Le protocole du pool doit correspondre au protocole de son écouteur associé. Par exemple, si l'écouteur est TCP, le protocole du pool doit être TCP.
-
Sélectionnez la méthode : algorithme d'équilibrage de charge. Les options suivantes sont affichées :
- Permutation circulaire : réacheminez les demandes vers chaque instance, à tour de rôle. Toutes les instances reçoivent approximativement un nombre égal de connexions client.
- Permutation circulaire pondérée : réacheminez les demandes vers chaque instance proportionnellement au poids qui lui est affecté. Par exemple, si vous avez des instances A, B et C, et que leurs poids sont fixés à 60, 60 et 30, les instances A et B reçoivent un nombre égal de connexions, et l'instance C reçoit la moitié de ces connexions.
- Nombre minimal de connexions : réacheminez les demandes vers l'instance dont le nombre de connexions est le plus faible.
-
Choisissez le maintien de la session et sélectionnez Aucun.
-
Dans le cadre des diagnostics d'intégrité, les options ci-après sont affichées.
- Chemin du bilan de santé- Le chemin du bilan de santé n'est applicable que si vous sélectionnez HTTP comme protocole de contrôle de santé. Le chemin du diagnostic d'intégrité indique l'URL utilisée par l'équilibreur de charge pour envoyer des demandes de diagnostic d'intégrité HTTP aux instances du pool. Par défaut, les contrôles d'intégrité sont envoyés au chemin racine (/).
- Protocole de santé : protocole utilisé par l'équilibreur de charge pour envoyer des messages de contrôle d'intégrité aux instances du pool.
- Port de santé- Port sur lequel l'équilibreur de charge envoie les demandes de contrôle de santé. Par défaut, les contrôles d'intégrité sont envoyés sur le même port que celui sur lequel le trafic est envoyé à l'instance.
- Intervalle : intervalle en secondes entre deux tentatives de contrôle d'intégrité consécutives. Par défaut, les contrôles d'intégrité sont envoyés toutes les cinq secondes.
- Timeout (sec)- Délai maximum pendant lequel le système attend une réponse à une demande de bilan de santé. Par défaut, l'équilibreur de charge attend une réponse pendant 2 secondes.
- Max retries- Nombre maximal de tentatives de contrôle de santé que l'équilibreur de charge effectue avant qu'une instance ne soit déclarée malsaine. Par défaut, une instance n'est plus considérée comme étant en bonne santé après deux échecs de contrôle d'intégrité.
Bien qu'un équilibreur de charge cesse d'envoyer des connexions aux instances en mauvaise santé, il continue de surveiller la santé de ces instances et reprend leur utilisation si elles sont à nouveau jugées saines (c'est-à-dire si elles passent avec succès deux tentatives consécutives de contrôle de la santé).
Si les instances du pool ne sont pas en bonne santé et que vous pensez que votre application fonctionne correctement, vérifiez à nouveau les valeurs du protocole et du chemin de santé. Vérifiez également tout groupe de sécurité associé aux instances pour vous assurer que les règles autorisent le trafic entre l'équilibreur de charge et ces instances.
-
-
Cliquez sur Nouvel écouteur et spécifiez le pool de back-end vers lequel cet écouteur réachemine le trafic.
Le protocole de réception des demandes entrantes, ainsi que le port d'écoute sur lequel les demandes sont reçues, sont déjà sélectionnés pour vous.
-
Un récapitulatif de la commande affiche l'estimation du prix. Passez en revue les dispositions des services cloud. Cliquez ensuite sur Créer pour terminer la commande.
Création d'un équilibreur de charge réseau avec le mode routage à l'aide de l'interface de ligne de commande
Pour créer un équilibreur de charge réseau à l'aide de l'interface de programmation, procédez comme suit :
-
Configurez votre environnement d'interface de ligne de commande.
-
Connectez-vous à votre compte. Une fois que vous avez saisi le mot de passe, le système vous invite à indiquer le compte et la région à utiliser :
ibmcloud login --sso
-
Créez un équilibreur de charge :
ibmcloud is load-balancer-create nlb-test public --subnet 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c --family network --route-mode true
Exemple de sortie :
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
-
Attendez que le NLB soit actif, puis exécutez la commande suivante :
ibmcloud is load-balancer r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512
Exemple de sortie :
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 false
Notez la première adresse IP répertoriée dans Private IPs (Adresses IP privées). Vous en avez besoin pour définir des itinéraires personnalisés.
-
Ajoutez un pool.
ibmcloud is load-balancer-pool-create example-pool r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 round_robin tcp 20 2 5 tcp
Exemple de sortie :
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
-
Ajoutez un membre.
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-0aeb66074edf
Exemple de sortie :
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
Création d'un équilibreur de charge réseau en mode routage avec l'API
Pour créer un équilibreur de charge de réseau avec le mode de routage avec l'API, procédez comme suit:
-
Configurez votre environnement d'API.
-
Créez le contenu de votre demande d'API à l'aide du modèle suivant. Remplacez le nom et le sous-réseau par vos valeurs.
{ "name": "nlb-vnf", "is_public": false, "profile": { "name": "network-fixed" }, "route_mode": true, "subnets": [ { "id": "0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024" } ] }
Enregistrez ce contenu dans un fichier JSON. Dans les exemples suivants, le fichier est nommé
create.json
. -
Faites la demande de création de votre NLB à l'aide de la commande suivante. Les propriétés suivantes doivent d'abord être définies dans la charge utile :
route_mode
esttrue
is_public
estfalse
- Le nom de profil est
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" | jq
L'exemple utilise
jq
comme analyseur, un outil tiers sous licence MIT.jq
peut ne pas être préinstallé sur toutes les images VPC disponibles lorsque vous créez une instance. Il se peut que vous deviez installerjq
avant de l'utiliser ou utiliser un autre analyseur de votre choix.Exemple de sortie :
{ "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 }
-
Une fois que le NLB est à l'état actif, effectuez un appel
GET
pour récupérer son statut.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" | jq
Exemple de sortie :
{ "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 }
Notez la première adresse IP répertoriée dans
Private IPs
(Adresses IP privées). Vous en avez besoin pour définir des itinéraires personnalisés. -
Ajoutez un pool.
Créez d'abord le contenu de votre demande d'API à l'aide du modèle suivant.
{ "algorithm": "round_robin", "protocol": "tcp", "health_monitor": { "delay": 10, "max_retries": 2, "timeout": 5, "type": "tcp" } }
Exécutez ensuite la commande suivante :
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" | jq
Exemple de sortie :
{ "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" }
-
Attendez que le NLB soit à l'état actif, puis ajoutez un écouteur.
La plage de ports pour cet écouteur doit être définie comme suit :
port_min
est1
port_max
est65535
Créez un contenu de demande d'API à l'aide du modèle suivant :
{ "default_pool": { "id": "r014-0b8f4cde-4684-484b-bd3c-64f55a917328" }, "port_min": 1, "port_max": 65535, "protocol": "tcp" }
Exécutez la commande suivante :
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" | jq
Exemple de sortie :
{ "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 }
-
Ajoutez le membre de pool.
Créez d'abord un contenu de demande d'API à l'aide du modèle suivant :
{ "port": 90, "target": { "id": "0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf" } }
Exécutez ensuite la commande suivante :
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" | jq
Exemple de sortie :
{ "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" }
Etapes suivantes
Une fois que le NLB en mode routage est actif, suivez les étapes suivantes pour finaliser votre configuration NLB :
-
Rassemblez les informations suivantes :
-
Les CIDR de vos sous-réseaux (sous-réseaux où résident vos VSI de charge de travail, qui seront les IP à utiliser comme IP de destination).
-
Dans la réponse de l'équilibreur de charge, vous trouverez deux listes d'adresses IP privées. Prenez note de la première.
Vous pouvez générer cette réponse en exécutant l'étape 4 des procédures CLI ou API.
La première IP répertoriée est l'IP principale, et la seconde est l'IP secondaire, à des fins de sauvegarde. Les deux sont répertoriés de manière à ce qu'à l'avenir, en cas de basculement, vous connaissiez les adresses IP actives et passives.
-
Le CIDR de votre sous-réseau de charge de travail de back-end.
-
-
Configurez vos routes personnalisées comme suit :
- Pour tout le trafic destiné au sous-réseau de charge de travail du client back-end, définissez le tronçon suivant de l'adresse IP privée NLB.
- Pour tout le trafic destiné au sous-réseau du client, définissez le prochain tronçon vers l'adresse IP privée du NLB.
-
Les instances VNF (VNI) doivent résider sur le même sous-réseau que le NLB et doivent être ajoutées en tant que membres à votre pool.