title | excerpt | updated |
---|---|---|
Déployer un Load Balancer Public Cloud |
Découvrez comment configurer le Load Balander pour Public Cloud |
2024-05-30 |
Vous trouverez ici les configurations d'un Load Balancer:
- Déploiement d'un Load Balancer HTTP basique Privé → Privé
- Déploiement d'un Load Balancer HTTP basique Public → Privé
- Avoir un projet Public Cloud dans votre compte OVHcloud
- Avoir un réseau privé configuré dans votre projet
- Préparer l’environnement pour utiliser l’API OpenStack en installant python-swiftclient.
- Charger les variables d’environnement OpenStack.
- Avoir le client OpenStack Octavia installé
Lorsque vous créez un Load Balancer, il obtient par défaut une IP privée dans le réseau privé sélectionné lors sa création.
Nous voulons équilibrer la charge entre les deux backends : backend--1
et backend--2
.
(os_client) ~ openstack server list
+--------------------------------------+------------+--------+-----------------------------------------------------------------------+--------------+--------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+------------+--------+-----------------------------------------------------------------------+--------------+--------+
| 5b8c722b-57d0-460a-b2c0-b0a681bf4e52 | backend--2 | ACTIVE | priv-net=10.0.111.243 | Ubuntu 20.04 | d2-4 |
| 9a43ce4c-e0fe-4a54-81f5-aad3ac6f8e88 | backend--1 | ACTIVE | priv-net=10.0.112.172 | Ubuntu 20.04 | d2-4 |
| 67b9372e-bf08-4c57-9945-42b07dbfcd36 | bastion | ACTIVE | Ext-Net=2001:48f0:163:100::1662, 169.254.10.150; priv-net=10.0.109.243 | Ubuntu 20.04 | d2-8 |
+--------------------------------------+------------+--------+-----------------------------------------------------------------------+--------------+--------+
Etape 1. Créez le Load Balancer
openstack loadbalancer create --name loadbalancer_private_to_private --vip-subnet-id <private_subnet_id>
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone | None |
| created_at | 2022-06-29T12:24:35 |
| description | |
| flavor_id | 2d4bc92c-38fc-4b50-9484-8351ab0c4e69 |
| id | 4db76fce-f8f7-435f-8031-716f82a7f1dc |
| listeners | |
| name | loadbalancer_private_to_private |
| operating_status | OFFLINE |
| pools | |
| project_id | 96575fa614c14aa7b001c7e121d772f2 |
| provider | amphora |
| provisioning_status | PENDING_CREATE |
| updated_at | None |
| vip_address | 10.0.3.50 |
| vip_network_id | d20943ed-5159-4805-b48a-2375dd93e480 |
| vip_port_id | 631f240c-16f7-483f-b1c4-6eff7a8adcf4 |
| vip_qos_policy_id | None |
| vip_subnet_id | 4ecfca39-6e87-496a-8692-2e7f43bf7767 |
| tags | |
+---------------------+--------------------------------------+
Warning
Load Balancer Flavors
Notez que si vous ne fournissez pas le paramètre --flavor
pendant la création, le load balancer sera de taille small.
openstack loadbalancer flavor list
+--------------------------------------+--------+--------------------------------------+---------+
| id | name | flavor_profile_id | enabled |
+--------------------------------------+--------+--------------------------------------+---------+
| 2d4bc92c-38fc-4b50-9484-8351ab0c4e69 | small | e9970d43-695e-4947-8005-38be80bc966a | True |
| 4d6a92af-d4c8-4e81-8596-e3b14159e232 | medium | 24559467-a4dd-4712-9981-93276400fa17 | True |
| fd43698c-0a2f-4124-9695-478f9114a07c | large | 3ded4565-7bc7-40b3-9a2c-83077035b134 | True |
+--------------------------------------+--------+--------------------------------------+---------+
Warning
Status
La création du Load Balancer prendra un certain temps, essentiellement le temps de création de l'instance et la configuration du réseau.
Pour la configuration suivante, vous devrez attendre que le provisioning_status
devienne ACTIVE
.
Vous pouvez déjà voir que notre Load Balancer est associé à une adresse IP Virtuelle (VIP) lors de sa création.
Il s'agit de l'adresse IP du Load Balancer à l'intérieur de notre réseau privé.
Etape 2. Créez un listener
openstack loadbalancer listener create --protocol-port 80 --protocol HTTP --name listener <loadbalancer_id>
+-----------------------------+--------------------------------------+
| Field | Value |
+-----------------------------+--------------------------------------+
| admin_state_up | True |
| connection_limit | -1 |
| created_at | 2022-06-29T12:34:37 |
| default_pool_id | None |
| default_tls_container_ref | None |
| description | |
| id | e2e67b80-61e6-43bd-b1f1-703ab1abc7af |
| insert_headers | None |
| l7policies | |
| loadbalancers | 4db76fce-f8f7-435f-8031-716f82a7f1dc |
| name | listener |
| operating_status | OFFLINE |
| project_id | 96575fa614c14aa7b001c7e121d772f2 |
| protocol | HTTP |
| protocol_port | 80 |
| provisioning_status | PENDING_CREATE |
| sni_container_refs | [] |
| timeout_client_data | 50000 |
| timeout_member_connect | 5000 |
| timeout_member_data | 50000 |
| timeout_tcp_inspect | 0 |
| updated_at | None |
| client_ca_tls_container_ref | None |
| client_authentication | NONE |
| client_crl_container_ref | None |
| allowed_cidrs | None |
| tls_ciphers | None |
| tls_versions | None |
| alpn_protocols | None |
| tags | |
+-----------------------------+--------------------------------------+
Etape 3. Créez un pool
openstack loadbalancer pool create --name pool --lb-algorithm ROUND_ROBIN --listener <listener_id> --protocol HTTP
+----------------------+--------------------------------------+
| Field | Value |
+----------------------+--------------------------------------+
| admin_state_up | True |
| created_at | 2022-06-29T12:41:52 |
| description | |
| healthmonitor_id | |
| id | f0c833f7-53bb-46b7-8818-637d89a68089 |
| lb_algorithm | ROUND_ROBIN |
| listeners | e2e67b80-61e6-43bd-b1f1-703ab1abc7af |
| loadbalancers | 4db76fce-f8f7-435f-8031-716f82a7f1dc |
| members | |
| name | pool |
| operating_status | OFFLINE |
| project_id | 96575fa614c14aa7b001c7e121d772f2 |
| protocol | HTTP |
| provisioning_status | PENDING_CREATE |
| session_persistence | None |
| updated_at | None |
| tls_container_ref | None |
| ca_tls_container_ref | None |
| crl_container_ref | None |
| tls_enabled | False |
| tls_ciphers | None |
| tls_versions | None |
| tags | |
| alpn_protocols | None |
+----------------------+--------------------------------------+
Etape 4. Ajoutez les serveurs
openstack loadbalancer member create --subnet-id <private_subnet_id> --address <server_ip_address> --protocol-port 80 <pool_id>
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| address | 10.0.3.123 |
| admin_state_up | True |
| created_at | 2022-06-29T12:48:55 |
| id | fbe34622-2538-4896-bda3-d92ca66f7a30 |
| name | |
| operating_status | NO_MONITOR |
| project_id | 96575fa614c14aa7b001c7e121d772f2 |
| protocol_port | 80 |
| provisioning_status | PENDING_CREATE |
| subnet_id | 4ecfca39-6e87-496a-8692-2e7f43bf7767 |
| updated_at | None |
| weight | 1 |
| monitor_port | None |
| monitor_address | None |
| backup | False |
| tags | |
+---------------------+--------------------------------------+
Etape 5. Utilisez votre Load Balancer
root@bastion:~# curl http://10.0.3.50/backend.txt
Backend 1
root@bastion:~# curl http://10.0.3.50/backend.txt
Backend 2
Nous allons utiliser le Load Balancer préalablement déployé en réseau privé et utiliser une Floating IP OpenStack.
Nous devons créer une Floating IP sur le réseau public (Ext-Net) et associer cette IP au port VIP du Load Balancer.
Afin d'utiliser une Floating IP, nous devons créer un routeur L3 et configurer une external gateway sur celui-ci.
Quel est le rôle d'une Floating IP ?
Les adresses Floating IP sont utilisées dans l'univers OpenStack pour exposer des ressources (via le port Neutron) vers Internet. Vous pouvez associer une Floating IP à un port de réseau privé uniquement.
Vous pouvez exposer deux types de ressources :
- Une instance avec un port privé
- Avoir une adresse IP virtuelle (VIP) de Load Balancer.
Actuellement, les Floating IPs ne supportent pas les IPv6.
Vous pouvez en savoir plus sur notre page Concepts.
Etape 1. Créez le routeur
openstack router create <router_name>
Etape 2. Ajoutez une External Gateway sur votre routeur
openstack router set --external-gateway Ext-Net <router_name>
Etape 3. Connectez le routeur à votre réseau privé
openstack router add subnet <router_id> <subnet_id>
Etape 4. Maintenant vous pouvez créer une Floating IP sur le réseau public Ext-Net
openstack floating ip create Ext-Net
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| created_at | 2022-06-29T13:19:10Z |
| description | |
| dns_domain | None |
| dns_name | None |
| fixed_ip_address | None |
| floating_ip_address | 169.254.10.250 |
| floating_network_id | b2c02fdc-ffdf-40f6-9722-533bd7058c06 |
| id | 5f1ad04e-f341-457b-a174-a1204ee4feef |
| name | 169.254.10.250 |
| port_details | None |
| port_id | None |
| project_id | 96575fa614c14aa7b001c7e121d772f2 |
| qos_policy_id | None |
| revision_number | 0 |
| router_id | None |
| status | DOWN |
| subnet_id | None |
| tags | [] |
| updated_at | 2022-06-29T13:19:10Z |
+---------------------+--------------------------------------+
Etape 5 : Associez son ID à l'adresse VIP du Load Balancer
openstack floating ip set --port <load_balancer_vip_port_id> <floating_ip_id>
Etape 6 : Utilisez votre Load Balancer avec son IP publique.
❯ curl http://169.254.10.250/backend.txt
Backend 2
❯ curl http://169.254.10.250/backend.txt
Backend 1
❯ curl http://169.254.10.250/backend.txt
Backend 2
❯ curl http://169.254.10.250/backend.txt
Backend 1
❯ curl http://169.254.10.250/backend.txt
Backend 2
La passerelle publique est définie par un routeur L3 attaché à un réseau privé avec une passerelle externe.
openstack loadbalancer delete [--cascade] [--wait] <load_balancer>
Premiers pas avec le service Load Balancer pour Public Cloud.
Documentation officielle d'OpenStack Octavia.
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
Échangez avec notre communauté d'utilisateurs.
Rejoignez notre Discord pour discuter avec les membres de l'équipe OVHcloud et d'autre utilisateurs.