読者です 読者をやめる 読者になる 読者になる

sorta kinda...

主にAWS関連ですが、これに限らずいろいろ勉強したことや思ったことを書いていきます。

du よりいい感じの結果を PowerShell で [cloudpack OSAKA blog]

ナスです。

昨年の夏に、Windows の du についての記事を書きました。(なぜか今まで書いた記事の中で一番アクセスが多いです。意外。)

nasrinjp1.hatenablog.com

PowerShell でちょっとしたスクリプトを書いてるパターンと、sysinternals のツールを使うパターンの 2 種類だと思ってましたが、日経 NETWORK 2017.01 号の p15 にワンライナーで du 相当のコマンドが紹介されていたので、実際にやってみました。しかも指定したサイズ以上のファイルをファイルサイズ順に並べ替えて表示できるのでいいですね。

AWS に、Windows Server 2016 を起動して、特に何も設定せずに試しています。

PS C:\Users\Administrator> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  576

C:\User 配下にテスト用のでかいファイルを作って、dir をかけた結果です。 f:id:nasrinjp1:20170115231254p:plain

Where-Object で 500 バイト以上のファイルだけを表示させてみました。

f:id:nasrinjp1:20170115231303p:plain

PS C:\Users\Administrator> Get-ChildItem -Path C:\Users -Recurse | Where-Object Length -ge 500 | Select-Object FullName,  Length | Sort-Object Length -Descending

FullName                                                                Length
--------                                                                ------
C:\Users\Administrator\testfile                                    10737418240
C:\Users\Administrator\Links\Downloads.lnk                                 978
C:\Users\Administrator\Desktop\EC2 Microsoft Windows Guide.website         554
C:\Users\Administrator\Desktop\EC2 Feedback.website                        527
C:\Users\Administrator\Links\Desktop.lnk                                   525

これだけできれば、この記事の最初に紹介した du ツールはいらないですね。時々、フリーのツールをインストールすることが禁止されている環境がありますが、PowerShell ならさすがにつかってもいいと思いますので、いろいろ試してみてください。

Auto Scaling で EC2 インスタンスをメンテナンスする時の注意点2 [cloudpack OSAKA blog]

ナスです。

先日、こんな記事を書きました。

nasrinjp1.hatenablog.com

結論から書くと、私が間違ってました。AWSのバグとか疑ってごめんなさい…

 

で、結局なんだったの?

Auto Scaling の設定の中に、スケーリングポリシーというものがあります。これは、例えば Auto Scaling グループ内の EC2 インスタンスの CPU 負荷が xx% 超えたら EC2 インスタンスを追加するとか、逆に xx% 以下になったら EC2 インスタンスを削除するとかするものです。負荷によって、動的に EC2 インスタンスの数を増減できるのが特徴です。

こんなのです。
f:id:nasrinjp1:20170112233303p:plain

で、私、このポリシーの動きを理解していませんでした。

スケーリングポリシーを設定していると、

  1. 最小値を -1 する
  2. スケーリングポリシーに設定した CloudWatch アラームを見て条件に合致している、と判断する
  3. 希望値が -1 される
  4. EC2 インスタンスが 1 台削除される

ということが起こっていました。しかも最小値を変更した瞬間に。1 を実施した後にアクティビティ履歴をみると、こうなってました。
f:id:nasrinjp1:20170112233354p:plain

 

こういう状況でもデタッチしたい時はある!

メンテナンスせざるを得ない時もあると思いますので、下記のように対処すれば大丈夫です。

最小値を減らす時に、「停止したプロセス」に AlarmNotification を追加します。これで、最小値を減らしても、CloudWatch からのアラームを受け取ることをやめます。
f:id:nasrinjp1:20170112233459p:plain

上の画像でも、実際に希望値は最小値と同じになっていません。これで安心してデタッチなりスタンバイ設定なりできますね。

Auto Scaling で EC2 インスタンスをメンテナンスする時の注意点 [cloudpack OSAKA blog]

明けましておめでとうございます!ナスです。
今年も適度に頑張って記事を書いていきます。

今日は Auto Scaling でヒヤリとしたことを書きます。

 

事の発端

とある作業で、Auto Scaling グループ内の EC2 インスタンスを再起動しないといけなくなりました。Auto Scaling とは関係なければ普通に再起動して終わりですが、Auto Scaling グループに入っている EC2 インスタンスを再起動すると、タイミングによっては ELB のヘルスチェックに引っかかって Terminate されてしまう可能性があります。

 

私がやったこと

手順は前もって調べて作業に着手したので問題はない、はずでした…
やった作業は以下の通り。

Auto Scaling グループのコンソールのインスタンスタブから、対象の EC2 インスタンスを「スタンバイに設定」にする。(もう存在しない EC2 インスタンス ID なのでモザイク無しで)
f:id:nasrinjp1:20170104231225p:plain:w500

スタンバイ状態になったことを確認して、EC2 インスタンスを再起動し、再び「実行中に設定」にする。
f:id:nasrinjp1:20170104231233p:plain:w500

たったこれだけです。

 

何が起こったのか?

作業完了してしばらく Auto Scaling グループの EC2 インスタンスの1つが Terminate されました。もうちょっとしたパニック状態です。こう言うのをテンパるというのでしょうか。

 

原因は何だったのか?

よくよく Auto Scaling グループの設定を見ると、希望インスタンス数が1つ減ったままになっていました。
スタンバイに設定すると、希望インスタンス数が1つ減らされます。下図はもともとの設定です。(もう存在しないサブネット ID なのでモザイク無しで)
f:id:nasrinjp1:20170104231213p:plain:w500

スタンバイにするとこうなります。
f:id:nasrinjp1:20170104231230p:plain:w500

また実行中に戻すと3に戻るんですが、作業した AWS アカウントでは2のままになっていました。
そうすると、スタンバイから実行中になってインスタンスは3台になったのに、希望インスタンス数が2のままなので、Auto Scaling が1台多いなって思って余分な EC2 インスタンスを削除した、というわけです。

 

どうすればいいのか?

私の検証用 AWS アカウントでは同じ事象は発生しないので、何か気づいてない条件があるのか、AWS アカウント固有の問題なのか、Auto Scaling のバグなのかはわかりません。が、とりあえず暫定策として、停止したプロセスに Terminate を追加することにしました。
f:id:nasrinjp1:20170104231237p:plain:w500

これで希望インスタンス数が戻らなくても、突然 Terminate されるなんてことは起こりません。

 

AWS のサービスがいろいろやってくれるとはいえ、過信しちゃダメなんだなと思いました。というか、同じ作業して 2つの AWS アカウントで結果が違うってなかなかキツイ…

 

2017.01.12 追記
続編書きました。
nasrinjp1.hatenablog.com