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