【发布时间】:2018-03-24 14:00:45
【问题描述】:
我的 EC2 实例中有两个 Java 程序,它们在公共子网中启动。这些程序作为 jar 文件存储在 /home/ec2-user/559 文件夹下,名为 response_server.jar 和 server.jar。 server.jar 文件正在侦听端口 5000 以与客户端通信,并且 response_server.jar 正在侦听端口 6000 。 ELB 配置为在端口 6000 上 ping EC2 实例以进行健康检查,因此 response_server.jar 用于在端口 6000 上 ping 时返回随机响应(主要用于 ELB)
我有两个问题:
第一期: 当我 ssh 进入 EC2 实例并手动运行 jar 文件时 使用下面的命令,它们按预期工作,我的客户端程序在端口 5000 和 6000 上都收到响应。
cd /home/ec2-user/559/
java -jar response_server.jar & java -jar server.jar
但是,我希望这两个程序从 EC2 实例的启动开始。因此,我将它们添加为我的用户数据的一部分:
#! /bin/bash
java -jar /home/ec2-user/559/response_server.jar &
java -jar /home/ec2-user/559/server.jar &
现在,如果我连接客户端程序,我会收到连接被拒绝的错误消息。除非我在 ssh 会话中手动运行它们,否则它不会连接。
第二期: 与第一个问题有关,我的 ELB 将此 EC2 实例显示为不健康,除非我手动运行 ELB 的 jar 文件以检查端口 6000 上的健康状态。
我无法弄清楚为什么在使用启动脚本时重新启动 EC2 实例时 java 程序没有启动。启动实例后检查端口是否打开,发现端口未处于侦听状态。
任何帮助都会有很大帮助!
【问题讨论】:
标签: java amazon-web-services amazon-ec2 launch