3 votes

Paramètres de Nginx, HAproxy, Unicorn, Rails et Node

Notre site application n'est actuellement qu'une application web "normale", sans aucune fantaisie comme le streaming HTTP ou les websockets. Il s'agit principalement d'une Rails application, servie par quelques uns (20 sur 2 machines) Licorne les travailleurs, représentés par un vénérable nginx qui s'occupe de l'équilibrage des charges.

Cela fonctionne très bien depuis l'année dernière et l'application sert maintenant entre 400 et 800 demandes par seconde à tout moment de la journée.

Nous allons bientôt publier deux nouvelles API, qui sont toutes deux servies par un service de type Nœud application : a websocket ainsi qu'un long sondage HTTP un . (le truc sophistiqué comme l'API de streaming de Twitter où les connexions HTTP ne se terminent jamais). Ils utilisent tous deux le même port sur le nœud et comme l'application du nœud est sans état, nous pouvons certainement en déployer plusieurs pour gérer le trafic.

L'application (nœud) est maintenant déployée dans 5 instances qui écoutent maintenant sur 5 ports "privés" différents sur le même hôte. Nous avons besoin de mettre quelque chose en face d'eux pour équilibrer la charge, mais aussi quelque chose qui est capable de traiter les sockets (soit websocket ou HTTP streaming) qui sont destinés à rester "up" pendant des jours.

La question est donc : quoi ? J'ai lu quelque part que HAProxy fait un meilleur travail que Nginx dans ce domaine. Que recommandez-vous ?

0 votes

S'il vous plaît, quelqu'un d'assez réputé, ajoutez websocket comme balise !

1voto

pat Points 10326

Nginx ne prend pas du tout en charge les WebSockets. Vous devrez donc opter pour un autre équilibreur de charge. J'ai eu de bonnes expériences avec HAProxy. Consultez ce fil de discussion StackOverflow pour un exemple de configuration : https://stackoverflow.com/questions/2419346/can-nginx-be-used-as-a-reverse-proxy-for-a-backend-websocket-server

2 votes

Nginx prend en charge les Websockets à partir de la version 1.3.13

0voto

progrium Points 101

Mieux encore, ne mettez rien en face d'elle. Équilibre de la charge DNS + redirections. Vous sera veulent une affinité intelligente avec les nœuds à terme de toute façon, et vous pouvez obtenir cela à partir de redirections. L'équilibrage de charge DNS n'est pas génial à court terme, mais il est viable à long terme en tant que bonne graine pour équilibrer les connexions entrantes.

Ou, Julien, tu pourrais travailler avec quelqu'un comme moi qui résout ce problème pour des gens comme toi en tant que service ;)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X