Merci pour vos commentaires

Ce article a été traduit automatiquement. (Clause de non responsabilité)

Tutoriel : équilibrage de charge des messages Syslog à l’aide d’extensions de protocole

Le protocole Syslog disponible sur l’appliance NetScaler fonctionne uniquement pour les messages générés sur l’appliance NetScaler. Il n’équilibre pas la charge des messages provenant de nœuds externes. Pour équilibrer la charge de ces messages, vous devez utiliser la fonctionnalité d’extensions de protocole et écrire la logique d’analyse des messages Syslog à l’aide du langage de programmation Lua 5.2.

Code pour analyser un message Syslog

Seule la fonction de rappel des données du client TCP est définie dans le code, à savoir client.on_data (). Pour les données du serveur, il n’ajoute pas de fonction de rappel et le chemin natif rapide entre le serveur et le client emprunte le chemin natif rapide. Le code identifie la limite du message en fonction du caractère final. Si le paquet TCP contient plusieurs messages Syslog, nous divisons le paquet en fonction du caractère final et nous équilibrons la charge de chaque message.

--[[ Syslog event handler for TCP client data ctxt - TCP client side App processing context. data - TCP Data stream received. --]] function client.on_data(ctxt, payload) local message = nil local data_len local data = payload.data local trailing_character = "\n" ::split_message:: -- Get the offset of trailing character local new_line_character_offset = data:find(trailing_character) -- If trailing character is not found, then wait for more data. if (not new_line_character_offset) then goto need_more_data end -- Get the length of the current message data_len = data:len() -- Check whether we have more than one message -- by comparing trailing character offset and -- current data length if (data_len > new_line_character_offset) then -- If we have more than one message, then split -- the data into two parts such that first part -- will contain message upto trailing character -- offset and second part will contain -- remaining message. message, data = data:split(new_line_character_offset) else message = data data = nil end -- Send the data to the backend server. ns.send(ctxt.output, "EOM", {data = message}) goto done ::need_more_data:: -- Wait for more data ctxt:hold(data) data = nil goto done ::done:: -- If we have more data to parse, -- then do parsing again. if (data) then goto split_message end end
La version officielle de ce document est en anglais. Certains contenus de la documentation Cloud Software Group ont été traduits de façon automatique à des fins pratiques uniquement. Cloud Software Group n'exerce aucun contrôle sur le contenu traduit de façon automatique, qui peut contenir des erreurs, des imprécisions ou un langage inapproprié. Aucune garantie, explicite ou implicite, n'est fournie quant à l'exactitude, la fiabilité, la pertinence ou la justesse de toute traduction effectuée depuis l'anglais d'origine vers une autre langue, ou quant à la conformité de votre produit ou service Cloud Software Group à tout contenu traduit de façon automatique, et toute garantie fournie en vertu du contrat de licence de l'utilisateur final ou des conditions d'utilisation des services applicables, ou de tout autre accord avec Cloud Software Group, quant à la conformité du produit ou service à toute documentation ne s'applique pas dans la mesure où cette documentation a été traduite de façon automatique. Cloud Software Group ne pourra être tenu responsable de tout dommage ou problème dû à l'utilisation de contenu traduit de façon automatique.
Tutoriel : équilibrage de charge des messages Syslog à l’aide d’extensions de protocole