Java 如何使用不同EC2实例上的服务器制作下拖ELB
我想制作一个海底ELB,我知道如何编写,但不知道如何在不同的实例之间连接它 例如,在两个实例上,我有一个servlet(receive-get-messages)和一个undertowserver类 计划 servlet.java undertowServer.java 在服务器部分,程序从特定路径(“/project”)接收消息,其余代码如下Java 如何使用不同EC2实例上的服务器制作下拖ELB,java,amazon-ec2,load,load-balancing,undertow,Java,Amazon Ec2,Load,Load Balancing,Undertow,我想制作一个海底ELB,我知道如何编写,但不知道如何在不同的实例之间连接它 例如,在两个实例上,我有一个servlet(receive-get-messages)和一个undertowserver类 计划 servlet.java undertowServer.java 在服务器部分,程序从特定路径(“/project”)接收消息,其余代码如下 public static void main(String[] args) throws Exception{ try { D
public static void main(String[] args) throws Exception{
try {
DeploymentInfo servletBuilder = deployment()
.setClassLoader(Controller.class.getClassLoader())
.setContextPath(PATH)
.setDeploymentName("handler.war")
.addServlets(
servlet("Servlet", Servlet.class)
.addMapping("/")
);
DeploymentManager manager = defaultContainer().addDeployment(servletBuilder);
manager.deploy();
HttpHandler servletHandler = manager.start();
PathHandler path = Handlers.path(Handlers.redirect(PATH))
.addPrefixPath(PATH, servletHandler);
Undertow server = Undertow.builder()
.addHttpListener(9001, "localhost")
.setHandler(path)
.build();
server.start();
} catch (ServletException e) {
throw new RuntimeException(e);
}
}
一个实例听9001,另一个听9002
此外,我在第三个实例上有一个ELB,代码是
LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient()
.addHost(new URI("http://localhost:9001"))
.addHost(new URI("http://localhost:9002"))
.setConnectionsPerThread(20);
Undertow reverseProxy = Undertow.builder()
.addHttpListener(80, "localhost")
.setIoThreads(4)
.setHandler(new ProxyHandler(loadBalancer, 30000, ResponseCodeHandler.HANDLE_404))
.build();
reverseProxy.start();
如果我写这样的代码,它将无法工作。它给了我未找到的“URL/project”错误。但是,当我直接向实例发送请求(使用端口9001或9002)时,它可以工作。我有什么误解吗
顺便说一下,我不确定是应该使用localhost,还是EC2实例的DNS这里的“undertow”是什么意思?对于我来说,这是一个服务器名称非常不清楚的问题。如果可能的话,试着从java中抽象出来,缩小问题的范围。