Java 如何使用不同EC2实例上的服务器制作下拖ELB

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

我想制作一个海底ELB,我知道如何编写,但不知道如何在不同的实例之间连接它

例如,在两个实例上,我有一个servlet(receive-get-messages)和一个undertowserver类

计划 servlet.java undertowServer.java

在服务器部分,程序从特定路径(“/project”)接收消息,其余代码如下

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中抽象出来,缩小问题的范围。