2
0

【Rails】デプロイ時にロードバランサーのタイムアウト値をカスタムするのだ

Last updated at Posted at 2024-01-20

どうもこんにちは。

今回はRailsアプリケーションのデプロイ時にロードバランサーのタイムアウト値を自動で更新できるようにしました。

経緯

私の会社では、新しいバージョンをデプロイするときに、以下の流れで作業を行います。

  1. RDSのデータをバックアップ
  2. ElasticBeanstalkの環境をクローン(複製)する
  3. EC2の画面から、ロードバランサーのアイドルタイムアウトの値を60秒→1200秒に変更する
  4. ソースコードをデプロイする

60秒→1200秒へ変更する理由は、「動画ファイルなどの容量の大きなファイルをサーバーへアップロードするときに60秒以上が経過してしまうと504ステータスエラーが発生してしまう」からです。

つまり、動画ファイルをアップロードしている途中にサーバーが通信をストップしてしまうということです。

ebextensionsを使用する

今回はebextensionsを使用してカスタムを行いました。

ebextensionsとは、Elastic Beanstalkでの環境構築時に環境をカスタマイズする設定ファイルを配置するディレクトリです。

これを使用することで、AWSコンソール上でポチポチ設定を変更する必要がなくなります。

手順

1. .ebextensionsというディレクトリを作成

プロジェクトのルートディレクトリに移動して、以下のコマンドを叩いてください。

mkdir .ebextensions

2. 任意の名前でconfigファイルを作成

touch load_balancer.config

3. 設定値を記述

YAML形式で設定値を記述します。

option_settings:
    aws:elb:policies:
        ConnectionSettingIdleTimeout: "1200"
    aws:elbv2:loadbalancer:
        IdleTimeout: "1200"

これでgit commitしてeb deployを叩けばデプロイできます!

補足

aws:elb:policiesとaws:elbv2:loadbalancerの違い

aws:elb:policies

Elastic Beanstalkの環境設定の一部として使用されます。
Elastic Beanstalkが管理するロードバランサーの設定に影響を与えます。

aws:elbv2:loadbalancer

Amazon Elastic Load Balancing (ELB) の設定の一部として使用されます。
ELBが管理するロードバランサーの設定に影響を与えます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0