質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Auto Scaling

Auto Scalingは、AmazonEC2のインスタンスを自動で調整することで スケーリングを行うサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

1534閲覧

AWS AutoScale でインスタンスが減る場合、一時ファイルを生かす方法について

uemon

総合スコア37

Auto Scaling

Auto Scalingは、AmazonEC2のインスタンスを自動で調整することで スケーリングを行うサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/05/30 04:04

AWSで、EC2インスタンス1台+ロードバランサー(+RDS+S3)でWEBサイトを運営しています。
一時的なアクセス増が見込まれるため、Auto Scalingで、動的にEC2インスタンスを増やしたいと考えております。

EC2のインスタンスは、完全なステートレスではなく、アップロードファイルなど、一時的なファイルが一部EC2のEBSに含まれています。セッションが切れても必要な永続的なファイルはありません。

Auto Scalingで、インスタンスが増える場合は問題ないと思うのですが、
Auto Scalingで、インスタンスが減る場合、減らされるインスタンスにアクセスしていたユーザーの一時ファイルは消えてしまうと思います。

例えば、消えるインスタンスの一時ファイルを、残るインスタンスにコピーするとか、何か方法はあるのでしょうか?

それとも、アップロードファイルなど、一時ファイルが少しでもあると、Auto Scalingは使えないのでしょうか?

どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

それとも、アップロードファイルなど、一時ファイルが少しでもあると、Auto Scalingは使えないのでしょうか?

使えない訳ではないですが、無くなって困るデータはインスタンスに持たせない設計にするのが最も楽です。
EFSやS3、DBやKVSに逃がすとかですね。
あとはRsyncで同期するとか(AutoScalingとはあんまり相性は良くないですが、実装は楽です)

例えば、消えるインスタンスの一時ファイルを、残るインスタンスにコピーするとか、何か方法はあるのでしょうか?

残ってるインスタンスをaws cliでAPIを叩いて探す→scpなり何なりでコピーする
みたいなスクリプトを書いて、シャットダウンスクリプトとして動かせば可能です。
が、前述の通り、そもそもインスタンス固有のデータを持たない様にする方が楽です。

投稿2020/05/30 05:39

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uemon

2020/05/30 06:37

回答ありがとうございます。 画像加工系のサイトでして、画像加工をS3上で行うと時間がかかったため、EBS上にファイルをアップロードして作業をするようにしております。EBS上で作業中、急にAutoScaleで、スケールインされてしまうと困ることになりまして。シャットダウンスクリプトで違うインスタンスにコピーは方法の1つなのですが、そもそもそのインスタンスにセッションが残っている間は、スケールイン対象から外したいのですが、難しいのでしょうか?
tanat

2020/05/30 06:46 編集

> そもそもそのインスタンスにセッションが残っている間は、スケールイン対象から外したいのですが、難しいのでしょうか? 無理です。 そういう挙動をさせたいならaws cliを駆使して自力でオートスケーリングを実装するしか無いです。
tanat

2020/05/30 06:44

自力で実装するのはおすすめ出来ませんが。
uemon

2020/05/30 06:52

回答ありがとうございます。 やはり難しそうですね。 完全なステートレスじゃないと、スケールインは問題がありますね。 また別のやり方を検討してみます。 ありがとうございました。
tanat

2020/05/30 06:57

素直に考えると、EFSでパフォーマンス上問題なければEFSで実装する 問題があれば 普段はEBS→シャットダウン時にS3やEFSに逃がす&次にセッションを貼られたインスタンスで存在チェックして無ければ逃し先から取得 とかですかね。
uemon

2020/05/30 07:27

EFSとか使ったことがないのですが、EFSが使えればこれが一番良さそうですね。 これを使えば、EC2を完全ステートレスに出来そうです。 色々とご教授いただき、ありがとうございました。
guest

0

Auto Scalingで、インスタンスが増える場合は問題ないと思うのですが、

いえ、問題があります。セッションをEC2へローカルに保存していると、次のタイミングで別なサーバーへ接続された際に、セッションが切れてしまいます。

投稿2020/05/30 05:42

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2020/05/30 05:55

(AutoScalingのメリットは薄れ、スケールアウト時のみ有効ですが) スティッキーセッションを有効にすれば回避は出来ますね
maisumakun

2020/05/30 05:57

「同じ接続は同じサーバーに振る」という対策法もなくはないですが、台数が少ない状況ではきれいに負荷分散されなくなりますので、あまりおすすめはできません。
tanat

2020/05/30 06:09

はい、おすすめ出来ないのは同意です。
uemon

2020/05/30 06:33

回答ありがとうございます。 スケールアウト時は、tanatさんご指摘のスティッキーセッションを有効にすればいいかと考えておりました。 スケールイン時に、一時ファイルとしてEBSに保存していたものが消えてしまうので、どうしたものかと悩んでおります。 そのインスタンスにセッションが残っている間は、そのインスタンスはスケールインしない、などの設定が出来ればいいのですが・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問