簡體   English   中英

啟動時AWS EC2實例未運行Java程序

[英]AWS EC2 instance not running Java program when launching

我的EC2實例中有兩個Java程序,它們是在公共子網中啟動的。 程序以名為response_server.jar和server.jar的jar文件存儲在/ home / ec2-user / 559文件夾下。 server.jar文件在端口5000上偵聽以與客戶端通信,response_server.jar在端口6000上偵聽。 ELB配置為對端口6000上的EC2實例執行ping操作以進行運行狀況檢查,因此,在端口6000上進行ping操作時,response_server.jar用於返回隨機響應(主要用於ELB)

我有兩個問題:

第一個問題:當我進入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運行jar文件以檢查端口6000的運行狀況,否則我的ELB將此EC2實例顯示為不正常。

我無法弄清楚為什么使用啟動腳本重新啟動EC2實例時無法啟動Java程序。 我檢查了啟動實例后端口是否打開,並發現端口未處於偵聽狀態。

任何幫助將是極大的幫助!

您不必將jar文件放在用戶日期中。 首先,您必須創建一個腳本。 您可以為每個jar文件創建一個腳本。 對於response_server.jar,您可以創建腳本java_response_server_launch.sh,如下所示:

#! /usr/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
JAVA=/usr/bin/java
MY_SERVER=/home/ec2-user/559/response_server.jar & 
USER=your_username
/bin/su - $USER -c "$JAVA -jar $MY_SERVER &"

將您的腳本放在/etc/init.d目錄下,然后使用以下命令:

update-rc.d java_response_server_launch.sh defaults

同樣不要忘記使用chmod + x腳本。

對此您可以參考更多

在Linux上創建Java守護程序服務的工具

啟動時在Linux實例上運行命令

讓AWS Elastic Beanstalk使用Java SE平台為您做到這一點: https : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-platform.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM