質問: Ruby on Rails 5系(5.1.5)を使ってWebアプリケーションを開発しています。負荷対策のためオートスケーリングの設定を組んでALB(Application Load Balancer)でリクエストを振り分ける構成を組みました。 ALBにEC2インスタンスを2台以上紐付けて冗長化しようと思っています。 このような構成のときに、Railsで設定しなければならない項目等ありますでしょうか。 一例としてセッション情報をインスタンスのメモリやファイルに持ってしまうと、ALBによって接続先が変わったときにセッション情報が失われてしまい予期しない動作に繋がることがあると思っています。 DBはRDS、RedisはElastiCache、静的コンテンツはS3を使ってEC2から追い出すことはできています。 参考となるWebサイトURL等だけでも助かります。 よろしくお願いいたします。
回答: ti1050さんの言う通り、トラフィックがどのインスタンスに流れてもセッション情報を共有できるようデザインしておけば問題ありません。 以下、Railsの設定ではありませんが セッション情報を共有してもデザイン・実装上の問題によりアプリケーションが予期せぬ動きをする場合は、ELBでStiky Sessionの設定を有効にし、「ELBによって生成されたCookieの維持」を利用すれば大抵の場合は解消できます。 オートスケールを利用する場合、スケールインする場合にインスタンスが終了します。 そのタイミングでアプリケーションのログなどをS3に退避する仕組みを実装します。