web-dev-qa-db-ja.com

AWS ec2ホスト名が変更または増加したときに、nginxアップストリームサーバーリストを自動的に更新する方法

AWSで自動スケーリングを設定したい。 Elastic Load Balancerを使用したくありません。

Amazonでの自動呼び出しは、パフォーマンスの維持のために需要の急上昇時にEC2インスタンスをシームレスに作成し、コストが最小になるように需要が落ち着くまで自動的に減少します。

このEC2インスタンスは自動的に作成されるため、それらのホスト名はNGINXには認識されません。

私は知っていて、すでにnginxに10個のEC2インスタンスへのアップストリームセットアップがあります。

自動スケーリングがEC2インスタンスを追加/更新/削除するときに、上流のnginx構成にサーバー名を追加/更新/削除自動できるようにしたいのですが。

16

これは、SNS、EC2、およびAutoscalingサービスを利用して、Amazon SDKを使用することで達成できます(ほとんど完了しました。githubに配置します)。

私はこれを達成するために以下の手順に従いました:

  1. HTTP通知を有効にし、Webサーバーをサブスクライブします。
  2. サーバーを終了するための自動スケーリンググループに、ハートビートが1分のライフサイクルフック(終了前に1分間待機する)を追加しました
  3. インデックスファイルを作成してメッセージを解析し、メッセージの種類を検出しました(起動または終了)。
  4. イベントのタイプが決定したら、インスタンスのプライベートIPを取得するためにEC2を照会しました
  5. 起動の場合、ヘッダー200が受信されるまで待機してから、IPをnginx設定に追加して再ロードします
  6. Terminateの場合、構成からIPを削除し、nginxをリロードします

ここでスクリプトを見つけてください https://github.com/singhupendra/aws-autoscale

7
Upendra