如何从 EB 获取我的 EC2 实例以停止重新安装 java 7?
Posted
技术标签:
【中文标题】如何从 EB 获取我的 EC2 实例以停止重新安装 java 7?【英文标题】:How do I get my EC2 instance from EB to stop re-installing java 7? 【发布时间】:2018-08-06 15:37:55 【问题描述】:所以,基本上我有一个由 Elastic Beanstalk 创建的 EC2 实例,大约每周我都会通过 SSH 连接到它以卸载 java 7 并安装 java 8。弹性 beanstalk 环境是为 Node.js 设置的,但我有一个需要实例化的单独的 java 程序。我尝试在 rc.local 中放置安装 java 8 的命令,但这根本不起作用。该文件现在恢复到其默认状态。有没有可以将实例设置为默认为 Java 8 的地方?有没有办法只保留我通过 SSH 安装的安装?请帮忙,我的网站因此一直在关闭,我不确定该怎么做,谷歌也没有太多帮助。
【问题讨论】:
【参考方案1】:.ebextensions 我会这样做:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
.ebextensions 在创建 ec2 实例时运行;所以编写卸载 java 7 并安装 java 8 的脚本,一切顺利。
更多信息...
听起来您明白,EB 不时会自动销毁您的 ec2 实例并替换它。通常每周进行一次;查看 EB 控制台 -> 配置 -> 托管更新。你可能会发现它说
Managed updates: enabled
Weekly update window: [some date/time here]
这是一件好事。 EB 会自动为您安装重要的安全和其他更新。当它这样做时,它可能会替换您的 ec2 实例。这意味着:您手动安装 java 8 的 ec2 实例被销毁,并创建了一个全新的机器。这台全新的机器上安装了默认的 java 7...现在您必须再次手动 SSH 到这个新实例并安装 8。
您需要的是一个脚本,该脚本将在 EB 决定为您创建的所有新 ec2 实例上运行;此脚本将遵循您每次手动 SSH 到您的 ec2 实例时所采取的步骤。请注意,即使您关闭了托管更新,ec2 实例仍有可能(甚至很可能)被破坏。这是良好基础设施设计的租户;如果 ec2 实例因任何原因出现问题,您的基础架构应自动在后台运行:
1.) 启动一个新的 ec2 实例
2.) 配置新的 ec2 实例
3.) 将您的网站流量重新路由到新实例
4.) 停用旧的 ec2 实例
因此,在一个 .ebextensions 文件中,创建一个脚本来卸载 java 7 并安装 java 8,然后一切就绪。
【讨论】:
这很有帮助!太感谢了!你认为这样的文件会奏效吗:.ebextensions/java.config
:commands: java_8_install: command: "yum -y install java-1.8.0" java_7_uninstall: command: "yum -y remove java-1.7.0-openjdk"
@WilliamPapsco 不幸的是我不使用java,但是看起来你在正确的轨道上。无论您在手动 SSH 时使用什么命令,请在 .config 文件中执行相同的操作(也以相同的顺序)以上是关于如何从 EB 获取我的 EC2 实例以停止重新安装 java 7?的主要内容,如果未能解决你的问题,请参考以下文章
当我停止并启动一个 ec2 cent os 实例时,我会丢失哪些数据