【问题标题】:Configuring AWS Elastic Beanstalk Timezone for Auto Scaling为 Auto Scaling 配置 AWS Elastic Beanstalk 时区
【发布时间】: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 配置文件来完成所有这些操作

标签: amazon-web-services amazon-ec2 timezone amazon-elastic-beanstalk autoscaling


【解决方案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】:

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

      对于 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"
      

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

      【讨论】:

        猜你喜欢
        • 2016-12-08
        • 2011-07-10
        • 2015-05-04
        • 2012-01-17
        • 2014-04-05
        • 2023-04-05
        • 2012-12-16
        • 2018-05-10
        • 2017-02-28
        相关资源
        最近更新 更多