我有一个Rest,它接受用户的json输入,并与负载均衡器建立连接(TCP连接)。负载均衡器后面的服务器之一将处理请求并将响应发送回Rest。
Rest接受来自两个不同端点或URL的请求。目前,我有一个负载均衡器来处理来自两个端点的请求。我想再加一个负载均衡器。
在与负载均衡器建立连接的方法中,我希望检查URL并根据端点/URL将请求重定向到特定的负载均衡器。
例: URL1请求->重定向到负载平衡器1.
URL2请求->重定向到负载平衡器2.
发布于 2022-03-25 14:15:01
您可以根据请求的路径手动地将请求从客户端重定向到特定的LB,或者可以使用像这样的api网关。
手动重定向exmaple:
@RequestMapping(value = { "/", " * " })
public ResponseEntity<?> redirectRequest(HttpServletRequest httpServletRequest) {
String bodyRequest = "";
String baseURL = "";
if ("POST".equalsIgnoreCase(httpServletRequest.getMethod())
|| "PUT".equalsIgnoreCase(httpServletRequest.getMethod())) {
try {
bodyRequest = httpServletRequest.getReader().lines()
.collect(Collectors.joining(System.lineSeparator()));
} catch (IOException e) {
}
}
HttpEntity<?> request = new HttpEntity<>(bodyRequest);
Enumeration<String> headerNames = httpServletRequest.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
request.getHeaders().add(headerName, httpServletRequest.getHeader(headerName));
}
}
if (httpServletRequest.getContextPath().contains("api/lb1"))
baseURL = "lb ur1";
else
baseURL = "lb url 2";
return restTemplate.exchange(baseURL + httpServletRequest.getContextPath(),
HttpMethod.resolve(httpServletRequest.getMethod()), request, ResponseEntity.class,
httpServletRequest.getRequestURI());
}
https://stackoverflow.com/questions/71617934
复制相似问题