bikram-cloud / Kddi_work

some document
0 stars 0 forks source link

Nat Gatewayの設定 #16

Open bikram-cloud opened 4 years ago

bikram-cloud commented 4 years ago
bikram-cloud commented 4 years ago

Privateのsubnetはネットと接続する為にNATが必要です。

必要な設定:

商用リリースする前の設定: 未確定

bikram-cloud commented 4 years ago

外部と接続すれば、ネットワークACLが使用すれば、アクセスがコントロールできる

NATの専用なinstanceで作った方がいい???       「Source/Destination Checks」はDisableに変更することが必要??

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck

bikram-cloud commented 4 years ago

Keep active:

webapp_1a /webapp_1c

sudo mkdir shellscript

pwd: /home/ubuntu/shellscript

Shellscript:

sudo vi connecttest.sh

#!/bin/sh
for(int i = 0 ; i < 5; i++)
    ping -o "idx.ols.aws.kddi.com" >/dev/null 2>&1
    if [ "$?" = 0 ]
    then
      break
    else
      echo "Host not found"
    fi

Cronjob:

sudo crontab -e

* * * * * /home/ubuntu/shellscript/connecttest.sh
* * * * * (sleep 30 ; /home/ubuntu/shellscript/connecttest.sh)
bikram-cloud commented 4 years ago

NathanからSlack上でのコメント

Load Balancer: Two connections

60秒以内ターゲットはデータがおくれなかったらfrontendの接続を閉じる可能性がある

【Option 1】 ALBのtimeout設定は60秒から4000秒に更新する 「Load Balancer」→「Description」→「Edit attributes」 Idle timeout: 60 → 4000

【Option 2】 idletimeする前に1byteのデータを送ります。 (websocketのメッセージを送る?)

bikram-cloud commented 4 years ago

ALB側で、EC2にリクエストを分散しても、60秒以内にレスポンスがない場合、接続を閉じる可能性がある。 イメージとしては、Natgatewayに対してリクエストが定期的に飛んんでいないため、Natが寝ているようなもの。

Option1は、Timeoutを60秒から4000とか長い値にする、だが、これをやってしまうと、アプリケーション側でタイムアウトを設定していない場合、4000秒しないと解放されないため望ましくない。

Option2でNatGWを使って定期的に外部に通信することで、NatgWを寝させないようにするというもので、こちらを採用。

Nathanが前項で以下のようなpingシェルを書いている。

for(int i = 0 ; i < 5; i++)

なぜ最大5回なのか、成功するまでpingしないのか?については、 このshellは30秒に1回動作する。 もし、この際コネクションエラーがおていたとして、前回呼び出したping確認のprocessが残るようなことになると、どんどんping確認のprocessが並列実行してしまう可能性があるため、最大5回までと上限を設けて実行する、ということにした