Nginx

當aws ec2主機名更改或增加時如何自動更新nginx上游伺服器列表?

  • October 25, 2020

我想在 AWS 中設置自動縮放。我不想使用彈性負載均衡器。

Amazon 中的 Autoscaling 在需求高峰期間無縫創建 EC2 實例以保持性能,並在需求平緩期間自動減少以最小化成本。

由於此 EC2 實例是自動創建的,因此 NGINX 不知道它們的主機名。

我知道並且已經在 nginx 中設置了 10 個 EC2 實例的上游。

當自動縮放添加/更新/刪除 EC2 實例時,我希望能夠將伺服器名稱自動添加/更新/刪除到我的上游 nginx 配置中。

這可以通過使用 Amazon SDK(我幾乎完成它,將其放在 github 上),利用 SNS、EC2 和 Autoscaling 服務來實現。

我已按照以下步驟實現此目的:

  1. 啟用 HTTP 通知並訂閱我的網路伺服器。
  2. 向我的自動縮放組添加了一個生命週期掛鉤,心跳為 1 分鐘(在終止前等待 1 分鐘)以終止伺服器
  3. 創建了一個索引文件來解析消息以檢測它是什麼類型的消息(即啟動或終止)
  4. 一旦確定了事件類型,我就查詢 EC2 以獲取實例的私有 ip
  5. 在啟動的情況下,等到收到標頭 200,然後將 ip 添加到 nginx 配置並重新載入
  6. 在終止的情況下從配置中刪除 IP 並重新載入 nginx

請在此處找到腳本https://github.com/singhupendra/aws-autoscale

引用自:https://serverfault.com/questions/523445