【问题标题】:How to implement the code which redirect clients request to another node如何实现将客户端请求重定向到另一个节点的代码
【发布时间】:2015-12-29 00:47:22
【问题描述】:

我很好奇如何在后端服务器节点中实现重定向代码。 例如:客户端A请求web服务器C,A和C之间有负载均衡节点B。所以图为A=>B=>C=>A (not A=>B=>C=>B=>A)。实际上 C 从 B 获取请求,所以我想知道 C 如何创建一个套接字来连接到 A 并将数据发送到 A。如果您能分享一些关于此的代码 sn-p,我非常感谢,谢谢!

【问题讨论】:

  • 这是相当模糊的。你在发出网络请求吗? Web 请求可以使用 HTTP 代码重定向,这意味着 A 将能够使用特定 URL 直接联系 C。 TCP 不允许本地重定向,因此如果您使用原始 TCP,则必须执行以上操作。

标签: sockets redirect forward


【解决方案1】:

我认为这是您要问的问题:

“我在负载均衡器后面有多个 Web 服务器,那么如何才能从客户端创建到后端服务器的持久 http 套接字连接,而不会将其重定向到另一台服务器并因此中断连接?” em>

这个问题的答案是通过 cookie 注入。例如,使用 HAProxy,您可以根据请求首先路由到的服务器设置 cookie,然后负载均衡器将知道将来将该请求粘贴到指定的服务器。

HAProxy 后端配置示例:

backend socket-servers  
    timeout server  120s
    balance leastconn

    # based on cookie set in header
    # haproxy will add the cookies for us
    cookie SRVNAME insert
    server node-1 127.0.0.1:5000 cookie S1 check
    server node-2 127.0.0.1:5001 cookie S2 check

这个例子取自http://toon.io/configuring-haproxy-multiple-engine-io-servers/

在收到新请求时,它将看不到 cookie,并根据连接数最少的服务器路由到最佳服务器。当它这样做时,它会根据它所访问的服务器设置一个 cookie SRVNAME=node-1 或 SRVNAME=node-2。来自客户端的每个后续请求都会转到 cookie 中指定的节点。

【讨论】:

    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    相关资源
    最近更新 更多