Haute disponibilité ThingWorx > Equilibreurs de charge pour ThingWorx haute disponibilité
Equilibreurs de charge pour ThingWorx haute disponibilité
Un ou deux équilibreurs de charge sont requis pour une configuration de ThingWorx en mode HA.
Un équilibreur de charge pour diriger le trafic vers les serveurs de connexion ThingWorx. Cela n'est nécessaire que si les serveurs de connexion ThingWorx font partie du déploiement.
Un équilibreur de charge pour diriger le trafic vers le serveur ThingWorx qui est le leader actuel. Cet équilibreur de charge est requis dans toutes les configurations ThingWorx en mode HA.
Exigences générales de l'équilibreur de charge
L'équilibreur de charge doit fonctionner dans sa propre configuration haute disponibilité.
Il peut router le trafic de sockets Web.
Il peut gérer des sessions statiques (ou permanentes).
(facultatif) Il peut gérer l'arrêt SSL.
Equilibreur de charge pour les serveurs de connexion ThingWorx
Si un équilibreur de charge pour les serveurs de connexion est nécessaire, il doit recevoir tout le trafic ThingWorx et le distribuer en fonction des règles suivantes :
L'équilibreur de charge doit uniquement diriger le trafic de sockets Web vers les serveurs de connexion. Le trafic utilisateur et le trafic autre que sockets Web doivent être dirigés vers l'autre équilibreur de charge qui route le trafic vers le serveur leader ThingWorx.
Pour optimiser les performances, le trafic de sockets Web d'un actif doit toujours être dirigé vers le même serveur de connexion à l'aide de sessions permanentes.
Si ce serveur de connexion se déconnecte, le trafic de cet actif doit être dirigé vers un autre serveur de connexion.
Si la session entre l'actif et le serveur de connexion devient inactive, une nouvelle session peut être établie avec n'importe quel serveur de connexion disponible.
Equilibreur de charge pour les serveurs ThingWorx
L'ensemble du trafic vers le serveur ThingWorx (utilisateur, actif, serveurs de connexion, etc.) doit être routé via cet équilibreur de charge pour s'assurer qu'il est dirigé vers le serveur leader ThingWorx actuel.
L'équilibreur de charge appelle régulièrement un service sur chaque serveur ThingWorx. Ce service répond avec son statut de leader. Le serveur ThingWorx qui renvoie le code de leader à l'équilibreur de charge reçoit le trafic des utilisateurs et des actifs. Les serveurs ThingWorx qui renvoient le code de secours ne doivent pas recevoir de trafic.
Vous pouvez utiliser tout équilibreur de charge répondant aux critères suivants :
L'équilibreur de charge peut envoyer périodiquement l'instruction GET suivante au serveur leader ThingWorx et agir sur la réponse.
GET /Thingworx/Admin/HA/LeaderCheck
HTTP/1.0\r\nAuthorization:\ Basic\ <base64-encoded-string>
où <base64-encoded-string> est une chaîne utilisateur:mot de passe codée en base64 qui correspond à la valeur des paramètres LoadBalancerBase64EncodedCredentials dans le fichier platform-settings.json.
L'équilibreur de charge doit envoyer cet appel à chaque serveur leader ThingWorx toutes les 15 à 20 secondes.
Le code de réponse 200 constitue une réponse saine du serveur leader ThingWorx.
Tandis que le serveur leader envoie le code de réponse 200, les serveurs de secours doivent renvoyer les codes de réponse 400, 401 ou 503.
Si le serveur leader envoie trois codes de réponse, mais pas le code de réponse 200 :
L'équilibreur de charge doit déterminer le serveur de secours ThingWorx qui renvoie le code de réponse 200.
Le serveur de secours qui envoie à présent le code de réponse 200 doit être considéré comme le nouveau serveur leader ThingWorx.
Tout le trafic doit être dirigé vers le nouveau serveur leader ThingWorx.
Tout équilibreur de charge pouvant répondre aux exigences ci-dessus peut être utilisé dans un déploiement de ThingWorx en mode HA. Un exemple de configuration d'un équilibreur de charge est fourni dans la rubrique Exemple HAProxy. L'exemple est basé sur HAProxy ( http://www.haproxy.org).