Nginx
當aws ec2主機名更改或增加時如何自動更新nginx上游伺服器列表?
我想在 AWS 中設置自動縮放。我不想使用彈性負載均衡器。
Amazon 中的 Autoscaling 在需求高峰期間無縫創建 EC2 實例以保持性能,並在需求平緩期間自動減少以最小化成本。
由於此 EC2 實例是自動創建的,因此 NGINX 不知道它們的主機名。
我知道並且已經在 nginx 中設置了 10 個 EC2 實例的上游。
當自動縮放添加/更新/刪除 EC2 實例時,我希望能夠將伺服器名稱自動添加/更新/刪除到我的上游 nginx 配置中。
這可以通過使用 Amazon SDK(我幾乎完成它,將其放在 github 上),利用 SNS、EC2 和 Autoscaling 服務來實現。
我已按照以下步驟實現此目的:
- 啟用 HTTP 通知並訂閱我的網路伺服器。
- 向我的自動縮放組添加了一個生命週期掛鉤,心跳為 1 分鐘(在終止前等待 1 分鐘)以終止伺服器
- 創建了一個索引文件來解析消息以檢測它是什麼類型的消息(即啟動或終止)
- 一旦確定了事件類型,我就查詢 EC2 以獲取實例的私有 ip
- 在啟動的情況下,等到收到標頭 200,然後將 ip 添加到 nginx 配置並重新載入
- 在終止的情況下從配置中刪除 IP 並重新載入 nginx