Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Configuration de l’équilibrage de charge en tant que service dans Contrail

Présentation : Équilibrage de charge en tant que service

Le Load Balancing as a Service (LBaaS) est une fonctionnalité disponible via OpenStack Neutron. Contrail version 1.20 et ultérieure permet l’utilisation de l’API Neutron pour LBaaS afin d’appliquer des technologies open source d’équilibrage de charge afin de provisionner un équilibreur de charge dans le système Contrail.

L’équilibreur de charge LBaaS permet de créer un pool de machines virtuelles au service d’applications, le tout front-end par une adresse IP virtuelle. L’implémentation LBaaS présente les fonctionnalités suivantes :

  • Équilibrage de charge du trafic des clients vers un pool de serveurs backend. L’équilibreur de charge effectue un proxy pour toutes les connexions à son adresse IP virtuelle.

  • Fournit un équilibrage de charge pour HTTP, TCP et HTTPS.

  • Fournit des fonctionnalités de surveillance de l’intégrité des applications, notamment HTTP, TCP et ping.

  • Active l’association d’adresses IP flottantes à virtual-ip pour un accès public au pool principal.

Dans la figure suivante, l’équilibreur de charge est lancé avec l’adresse IP virtuelle 20.1.1.1. Le pool principal d’applications de machine virtuelle (pool d’applications) se trouve sur le sous-réseau 30.1.1.0/24. Chacune des machines virtuelles de l’application reçoit une adresse IP (virtual-ip) du sous-réseau du pool. Lorsqu’un client se connecte au pour accéder à virtual-ip l’application, l’équilibreur de charge proxype la connexion TCP sur son virtual-ip, puis crée une nouvelle connexion TCP vers l’une des machines virtuelles du pool.

Le membre du pool est sélectionné à l’aide de l’une des méthodes suivantes :

  • Weighted Round Robin (WRR), basé sur l’attribution de la pondération

  • Connexion minimale, sélectionne le membre avec le moins de connexions

  • l’adresse IP source sélectionne en fonction du source-ip

En outre, l’équilibreur de charge surveille l’intégrité de chaque membre du pool à l’aide des méthodes suivantes :

  • Surveille TCP en créant une connexion TCP à intervalles réguliers.

  • Surveille le protocole HTTP en créant une connexion TCP et en émettant une requête HTTP à intervalles réguliers.

  • Surveille le ping en vérifiant si un membre peut être joint par ping.

Implémentation de Contrail LBaaS

Contrail prend en charge les API OpenStack LBaaS Neutron et crée des objets pertinents pour LBaaS, notamment virtual-ip, loadbalancer-pool, loadbalancer-member, et loadbalancer-healthmonitor. Contrail crée une instance de service lorsque a loadbalancer-pool est associé à un virtual-ip objet. Le planificateur de services lance ensuite un espace de noms sur un routeur virtuel sélectionné de manière aléatoire et génère HAProxy dans cet espace de noms. La configuration de HAProxy est récupérée à partir des objets de l’équilibreur de charge. Contrail prend en charge la haute disponibilité des espaces de noms et de HAProxy en générant des serveurs actifs et en veille sur deux routeurs virtuels différents.

Remarque sur l’installation

Pour utiliser la fonctionnalité LBaaS, HAProxy, version 1.5 ou supérieure et iproute2, version 3.10.0 ou supérieure doivent tous deux être installés sur les nœuds de calcul Contrail.

Si vous utilisez des commandes fab pour l’installation, les packages haproxy et iproute2 seront installés automatiquement avec LBaaS si vous définissez les éléments suivants :

Utilisez ce qui suit pour vérifier la version du iproute2 package sur votre système :

Limitations

Le LBaaS présente actuellement les limitations suivantes :

  • Un pool ne doit pas être supprimé avant de supprimer l’adresse IP virtuelle.

  • Il n’est pas possible d’associer plusieurs adresses IP virtuelles au même pool. Si le pool doit être réutilisé, créez un autre pool avec les mêmes membres et liez-le à la deuxième adresse IP virtuelle.

  • Les membres ne peuvent pas être déplacés d’un pool à un autre. Si nécessaire, supprimez d’abord les membres d’un pool, puis ajoutez-les à un autre.

  • En cas de basculement actif-veille, les espaces de noms peuvent ne pas être nettoyés au redémarrage de l’agent.

  • L’association floating-ip doit sélectionner le port VIP et non les ports de service.

Configuration du LBaaS à l’aide de la CLI

La fonction LBaaS est activée sur Contrail par le biais d’appels d’API Neutron. La procédure suivante montre comment créer un réseau de pool et un réseau VIP à l’aide de l’interface de ligne de commande. Le réseau VIP est créé dans le réseau public et les membres sont ajoutés dans le réseau du pool.

Création d’un équilibreur de charge

Procédez comme suit pour créer un équilibreur de charge dans Contrail.

  1. Créez un réseau VIP.

    neutron net-create vipnet

    neutron subnet-create –-name vipsubnet vipnet 20.1.1.0/24

  2. Créez un réseau de pools.

    neutron net-create poolnet

    neutron subnet-create --name poolsubnet poolnet 10.1.1.0/24

  3. Créez un pool pour HTTP.

    neutron lb-pool-create --lb-method ROUND_ROBIN --name mypool --protocol HTTP --subnet-id poolsubnet

  4. Ajoutez des membres au pool.

    neutron lb-member-create --address 10.1.1.2 --protocol-port 80 mypool

    neutron lb-member-create --address 10.1.1.3 --protocol-port 80 mypool

  5. Créez une adresse IP virtuelle pour HTTP et associez-la au pool.

    neutron lb-vip-create --name myvip --protocol-port 80 --protocol HTTP--subnet-id vipsubnet mypool

Suppression d’un équilibreur de charge

Procédez comme suit pour supprimer un équilibreur de charge dans Contrail.

  1. Supprimez l’adresse VIP.

    neutron lb-vip-delete <vip-uuid>

  2. Supprimez des membres du pool.

    neutron lb-member-delete <member-uuid>

  3. Supprimez le pool.

    neutron lb-pool-delete <pool-uuid>

Gestion de Healthmonitor pour Load Balancer

Utilisez les commandes suivantes pour créer un moniteur d’intégrité, associer un moniteur d’intégrité à un pool, dissocier un moniteur d’intégrité et supprimer un moniteur d’intégrité.

  1. Créez un moniteur d’intégrité.

    neutron lb-healthmonitor-create --delay 20 --timeout 10 --max-retries 3 --type HTTP

  2. Associez un moniteur d’intégrité à un pool.

    neutron lb-healthmonitor-associate <healthmonitor-uuid> mypool

  3. Dissocier un moniteur d’intégrité d’un pool.

    neutron lb-healthmonitor-disassociate <healthmonitor-uuid> mypool

Configuration d’une adresse IP virtuelle SSL avec un pool backend HTTP

Procédez comme suit pour configurer une adresse IP virtuelle SSL avec un pool principal HTTP.

  1. Copiez un certificat SSL sur tous les nœuds de calcul.

    scp ssl_certificate.pem <compute-node-ip> <certificate-path>

  2. Mettez à jour les informations dans /etc/contrail/contrail-vrouter-agent.conf.

    # SSL certificate path haproxy

    haproxy_ssl_cert_path=<certificate-path>

  3. Redémarrer contrail-vrouter-agent.

    service contrail-vrouter-agent restart

  4. Créez une adresse IP virtuelle pour le port 443 (SSL).

    neutron lb-vip-create --name myvip --protocol-port 443 --protocol HTTP --subnet-id vipsubnet mypool​