如何实现将客户端请求重定向到另一个节点的代码

时间:2015-12-29 00:47:22

标签: sockets redirect forward

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

1 个答案:

答案 0 :(得分:0)

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

"我在负载均衡器后面有多个Web服务器,因此如何从客户端创建到后端服务器的持久性http套接字连接,而不将其重定向到另一个服务器,从而断开连接? "

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

HAProxy后端配置中的一个示例:

import java.util.Scanner;

    public class InsertionSort {
        public static Scanner console = new Scanner(System.in);

        public static void main(String[] args) {
            System.out.print("How long do you want your array to be? ");
            int arraySize = console.nextInt();
            String a[] = arrayOfStrings(arraySize);
            System.out.println("Here is the sorted data: ");
            **insert(a, arraySize);**


        }

        public static String[] arrayOfStrings(int size) {
            String a[] = new String[size];
            int i = 0;

            do {
                System.out.print("Input a string: ");
                String input = console.next();

                input = a[i];
                i++;

            } while(i < size);

            return a;
        }

        public static void insert(String[] a, int size) {
            **String temp = a[size];**
            int j = size - 1;

            while (j >= 0 && a[j].compareToIgnoreCase(temp) > 0) {
                a[j + 1] = a[j];
                j--;
            }
            a[j + 1] = temp;
        }
    }

此示例取自http://toon.io/configuring-haproxy-multiple-engine-io-servers/

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