Azure Load Balancer

Load Balancer

Un LoadBalancer (LB) est un endpoint unique pour les clients (consomamteurs du service). Il distribue les flux entrants arrivant sur l’ip frontal et repartie la charge à ses back-end.

Ces flux dépendent des règles d’équilibrage de charge et des sondes d’intégrité configurées. Les instances de pool de back-ends peuvent être des machines virtuelles Azure ou des instances d’un groupe de machines virtuelles identiques.

Chaque cloud provider propose des load balancer as a service. Ici nous allons nous intéréssé des Load Balancer d’Azure. il en existe plusieurs.

Load Balancer 4

Les Load Balancer Azure de niveau 4, couche 4 du modèle OSI (Open Systems Interconnection), sont disponibles sous deux format (SKU). L’un en basic sans SLA et l’autre en standart avec un SLA de 99.99%.

Le LB 4 prend la décision de routage en fonction des adresses IP et des ports TCP ou UDP. Il a une vue paquet du trafic échangé entre le client et un serveur, ce qui signifie qu’il prend des décisions paquet par paquet.

Load Balancer 7

Les load balancer de niveau 7 appellé Application gateway sont des load balancer avec affinité de session. Contrairement au niveau LB 4 les paquets sont réassemblés puis le LB peut prendre une décision de routage en fonction des informations qu’il peut trouver dans les requêtes ou les réponses de l’application. Bien que cela est plus complexe le temps de traitement est de l’ordre de la milliseconde

Superviser son LB4 PaaS

On pouvait déjà superviser ses AppsGW (Azure Application Gateway) en derversant ses logs dans Logs Analytics. Mais récement cette fonctionnalité est aussi disponible sur les Load Balancer SKU Standard.

Configuration via portail

On peut facilement activer la fonctionnalité en allant sur l’objet en question :

Puis en choisisant la destination de notre BD, ici on choisira LogsAnalytics

Configuration via Terraform

On peut aussi le faire avec Terrform. Ci dessous un exemple de code gracieusement fournit par Alexandre COMET :

Query Logs analytics

Ci-dessous un exemple de métrique :

AzureMetrics
| where $__timeFilter(TimeGenerated) and Resource == "My-LB" and MetricName == "VipAvailability"
| project TimeGenerated, Count
| order by TimeGenerated asc

Grafana et logs

Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome