Bonjour Zen Masters, cet article explique comment créer et configurer une batterie L4 (couche 4), quelques serveurs (serveurs Web) et le gardien de la batterie via notre API Zen Load Balancer (ZAPI).
Profil L4xNAT
Le profil de batterie de serveurs L4xNAT vous permet de créer une batterie de serveurs L4 offrant des performances très élevées et beaucoup plus de connexions simultanées que les cœurs d'équilibreur de charge de la couche 7 tels que les profils de batterie TCP, UDP ou HTTP. Cette amélioration des performances 4 de la couche contrecarre la gestion avancée du contenu que les profils 7 de la couche pourraient gérer.
De plus, les fermes L4xNAT pourraient lier une plage de ports, pas seulement un port virtuel comme il est utilisé avec d'autres profils de couche 7. Afin de pouvoir sélectionner une plage de ports virtuels ou un port virtuel spécifique dans les fermes L4xNAT, il est obligatoire de sélectionner un type de protocole. Dans les autres cas, la batterie écoutera sur tous les ports depuis l'IP virtuelle.
Initialiser ZAPI
Comme nous l'avons vu dans le dernier article, vous devez activer l'utilisateur zapi et définir une clé et un mot de passe pour commencer à utiliser notre ZAPI.
Pour les exemples suivants, ces paramètres seront utilisés:
Key: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5 Password: admin Zen Load Balancer IP: 192.168.101.25 Zen Web Port: 444
Une fois ZAPI configuré… commençons!
Comment créer une batterie de serveurs L4xNAT avec ZAPI
En premier lieu, vous devez créer une batterie de profils L4xNAT avec la commande correspondante:
curl --tlsv1 -k -X POST -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"interface":"eth0","vip":"192.168.101.25","profile":"L4xNAT"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM
Verbe HTTP: POST, utilisé pour créer des fermes, des backends, des services…
Paramètres JSON: interface, vip et profil (vport n'est pas nécessaire dans le profil L4xNAT).
Paramètres URI: farmname -> L4FARM, c'est le nom sélectionné pour la ferme.
Une fois cette commande lancée, la réponse suivante s'affichera:
{ "description" : "New farm L4FARM", "params" : [ { "interface" : "eth0", "name" : "L4FARM", "profile" : "L4xNAT", "vip" : "192.168.101.25", "vport" : 0 } ] }
Cette réponse montre les principaux paramètres de la batterie. Que signifie vport: 0? Lorsqu'une batterie L4xNAT est créée, elle écoute tous les ports de l'adresse IP virtuelle par défaut et s'affiche sous la forme 0 ou *.
Comment configurer une batterie L4xNAT avec ZAPI
Une fois la ferme L4xNAT créée, vous pourrez modifier les paramètres de la ferme. Il est possible de modifier tous les paramètres, quelques-uns ou un seul.
Tout d'abord, obtenons les paramètres de la ferme avec une requête GET:
curl --tlsv1 -k -X GET -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM
Verbe HTTP: GET, utilisé pour obtenir les paramètres des fermes, des backends, des services…
Paramètres JSON: Aucun.
Paramètres URI: nom de la ferme -> L4FARM.
Une fois cette commande lancée, la réponse suivante s'affichera:
{ "backends" : [], "description" : "List farm L4FARM", "params" : [ { "algorithm" : "weight", "fgenabled" : null, "fglog" : null, "fgscript" : null, "fgtimecheck" : 0, "nattype" : "dnat", "persistence" : "none", "protocol" : "all", "ttl" : 120, "vip" : "192.168.101.25", "vport" : 0 } ] }
Cette réponse montre les paramètres avancés de la batterie. Ces paramètres pourraient être modifiés avec ZAPI. Changeons quelques paramètres:
curl --tlsv1 -k -X PUT -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"protocol":"tcp","nattype":"nat" ,"port":"80"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM
Verbe HTTP: PUT, utilisé pour modifier les paramètres des fermes, des backends, des services…
Paramètres JSON: protocole, nattype et port.
Paramètres URI: nom de la ferme -> L4FARM.
Une fois cette commande lancée, la réponse suivante s'affichera:
{ "description" : "Modify farm L4FARM", "params" : [ { "protocol" : "tcp" }, { "port" : "80" }, { "nattype" : "nat" } ] }
Si nous lançons une autre requête GET, la réponse montrera tous les paramètres avec les nouvelles modifications:
{ "backends" : [], "description" : "List farm L4FARM", "params" : [ { "algorithm" : "weight", "fgenabled" : null, "fglog" : null, "fgscript" : null, "fgtimecheck" : 0, "nattype" : "nat", "persistence" : "none", "protocol" : "tcp", "ttl" : 120, "vip" : "192.168.101.25", "vport" : 80 } ] }
Les paramètres nattype, port et protocole ont bien été modifiés!
Comment créer et modifier un backend
Comment pouvons-nous créer et configurer un backend de la batterie L4xNAT via ZAPI? Vous devez simplement suivre les mêmes étapes ci-dessus en utilisant plusieurs commandes avec curl:
curl --tlsv1 -k -X POST -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"ip":"46.120.34.160","port":"80","priority":"1","weight":"1"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM/backends
Verbe HTTP: POST, utilisé pour créer des fermes, des backends, des services…
Paramètres JSON: ip, port, priorité et poids (tous les paramètres sont obligatoires).
Paramètres URI: farmname -> L4FARM, c'est le nom sélectionné pour la ferme.
Une fois cette commande lancée, la réponse suivante s'affichera:
{ "description" : "New backend 0", "params" : [ { "id" : 0, "ip" : "46.120.34.160", "port" : 80, "priority" : 1, "weight" : 1 } ] }
Cette réponse affiche les paramètres d’arrière-plan et son identifiant.
Comment pouvons-nous modifier un backend de la batterie de serveurs L4xNAT? Utiliser le verbe PUT HTTP avec curl:
curl --tlsv1 -k -X PUT -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"ip":"46.120.101.65","port":"25","priority":"2","weight":"3"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM/backends/0
Verbe HTTP: PUT, utilisé pour modifier les paramètres des fermes, des backends, des services…
Paramètres JSON: ip. port, priorité et poids.
Paramètres d'URI:
nom de la ferme -> L4FARM.
identifiant du backend -> 0.
Une fois cette commande lancée, la réponse suivante s'affichera:
{ "description" : "Modify backend 0 in farm L4FARM", "params" : [ { "ip" : "46.120.101.65" }, { "weight" : "3" }, { "priority" : "2" }, { "port" : "25" } ] }
Si nous lançons une autre requête GET, la réponse affichera tous les paramètres avec les nouvelles modifications:
{ "backends" : [ { "id" : 0, "ip" : "46.120.101.65", "port" : 25, "priority" : 2, "weight" : 3 } ], "description" : "List farm L4FARM", "params" : [ { "algorithm" : "weight", "fgenabled" : null, "fglog" : null, "fgscript" : null, "fgtimecheck" : 0, "nattype" : "nat", "persistence" : "none", "protocol" : "tcp", "ttl" : 120, "vip" : "192.168.101.25", "vport" : 80 } ] }
Les paramètres de poids, de priorité et de port ont bien été modifiés!
Comment configurer le Farm Guardian
Pour fermer, configurons le gardien de la ferme L4xNAT. Nous devons utiliser la requête suivante avec curl:
curl --tlsv1 -k -X PUT -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"fgenabled":"true","fgscript":"check_tcp -w 10 -c 10 -H HOST -p PORT","fgtimecheck":"15","fglog":"false"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM/fg
Verbe HTTP: PUT, utilisé pour modifier les paramètres des fermes, des backends, des services…
Paramètres JSON: fgenabled, fgscript, fgtimecheck et fglog.
Paramètres URI: nom de la ferme -> L4FARM.
Une fois cette commande lancée, la réponse suivante s'affichera:
{ "description" : "Modify farm L4FARM", "params" : [ { "fglog" : "false" }, { "fgenabled" : "true" }, { "fgscript" : "check_tcp -w 10 -c 10 -H HOST -p PORT" }, { "fgtimecheck" : "15" } ] }
Que font ces paramatres? Le paramètre «fgenabled» active le gardien de la ferme, le paramètre «fgtimecheck» est le temps entre les vérifications (en secondes), «fglog» active les journaux du gardien de la ferme et «fgscript» est la commande à vérifier.
Au nom de Zen Team, nous espérons vraiment que cet article vous a plu. On se voit dans la prochaine!