为 Auto Scaling 配置 AWS Elastic Beanstalk 时区

Posted

技术标签:

【中文标题】为 Auto Scaling 配置 AWS Elastic Beanstalk 时区【英文标题】:Configuring AWS Elastic Beanstalk Timezone for Auto Scaling 【发布时间】:2015-09-05 17:08:27 【问题描述】:

我在 AWS - Elastic Beanstalk 上部署了一个需要时区配置 的单实例服务器,我将时区更改为使用 ssh 登录 EC2 环境,然后更新使用下面列出的 linux 命令;

sudo rm /etc/localtime
sudo ln -sf /usr/share/zoneinfo/Europe/Istanbul /etc/localtime
sudo reboot

一切都很好,因为服务器作为单个实例运行。当我想使用 Auto Scaling、负载平衡功能时,问题就出现了。在单个实例上,在 linux AMI 上更新时区很好,但在 auto scaling 模式下,因为实例是根据阈值指标创建/销毁/重新创建的,所有配置都会丢失。

我的简单问题是,如何在 AWS Elastic Beanstalk 中更改/配置自动可扩展负载平衡模式的时区?

【问题讨论】:

让这件事变得困难的是sudo reboot 。我不认为你需要它。应该有办法重新启动时钟服务。假设可以,您可以使用 ebextension 配置文件来完成所有这些操作 【参考方案1】:

您可以使用ebextensions 配置新启动的服务器。 这是一个对我有用的例子。将以下命令添加到文件.ebextensions/timezone.config

commands:
    set_time_zone:
        command: ln -f -s /usr/share/zoneinfo/US/Pacific /etc/localtime 

【讨论】:

【参考方案2】:

你也可以在命令行中通过ssh进行配置:

当连接到您的 Elastic Beanstalk 实例时: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#change_time_zone

sudo ln -sf /usr/share/zoneinfo/America/Montreal /etc/localtime

您可以使用 eb 命令行工具连接到您的 EB 实例。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html

eb ssh

【讨论】:

这个解决方案的唯一问题是它不可持续。如果您的 Elastic Beanstalk 实例被重建(或您的应用程序自动扩展),新实例将不会自动配置,并且需要规定的手动 ssh 干预。来自@tal 的.ebextensions 答案是自动的,并且存在于您应用的配置中。【参考方案3】:

这里的答案只对我部分有用(我在使用上面的答案时部署错误)。经过一些修改,以下内容对我有用。我认为这与“cwd”和“权限”有关。

commands:
  0000_0remove_localtime:
    command: rm -rf /etc/localtime
  0000_1change_clock:
    command: sed -i 's/UTC/Asia\/Singapore/g' /etc/sysconfig/clock
    cwd: /etc/sysconfig
  0000_2link_singapore_timezone:
    command: ln -f -s /usr/share/zoneinfo/Asia/Singapore /etc/localtime
    cwd: /etc

【讨论】:

【参考方案4】:

对于我在 *** 上的第一个答案......我必须在一个出色的早期答案中添加新信息。

对于 AWS Linux 2,Elastic Beanstalk,有一种新的简单方法来设置时间。将以下命令添加到文件 .ebextensions/xxyyzz.config 中:

container_commands:
  01_set_bne:
    command: "sudo timedatectl set-timezone Australia/Brisbane"
    command: "sudo systemctl restart crond.service"

我不确定第二个命令是否绝对必要,但这些实例确实可以很好地使用它(尤其是对于即将发生的任务!)。

【讨论】:

以上是关于为 Auto Scaling 配置 AWS Elastic Beanstalk 时区的主要内容,如果未能解决你的问题,请参考以下文章

AWS - 错误 - 更新 Auto Scaling 组、Amazon CloudFormation、无法部署配置

AWS CDK 如何覆盖 Auto Scaling 组中的默认启动配置?

Auto Scaling AWS [关闭]

AWS Auto Scaling - 带有 2 个固定实例

AWS 和 Auto Scaling cassandra

Powershell AWS 自动化管理- ELB and Auto Scaling