nginx自動加載配置文件方案
一、nginx+consul+consul-template
實現過程:consul作為服務發現軟件,consul-template作為nginx配置文件的模板,consul-template通過監測consul里數據的變化,動態的修改nginx配置文件的模板,然后執行nginx -s reload 命令進行路由更新,達到動態負載均衡的目的。
優點:動態加載配置文件,實時修改配置文件
缺點:使用reload來加載配置文件,如果是websocket長連接服務,流量大的應用,會對用戶使用產生影響,也會損失一定的qps。對consul產生依賴,consul服務掛掉或者超時會對nginx產生影響,需采用consul集群模式保障consul服務的穩定
二、nginx+ nginx-upsync-module+consul
實現過程:nginx-upsync-module它的功能是拉取 consul 的后端 server 的列表,並更新 Nginx 的路由信息,不需要reload,對consul單點也有很好的可用性
單獨模塊功能:
ngx_http_dyups_module:修改upstream信息之后不需要reload 而是直接修改upstream的內存
nginx-upsync-module:基於Nginx實現動態配置的三方模塊,可以拉取consul中的服務信息,並動態更新nginx的路由信息
nginx_upstream_check_module:是專門提供負載均衡器內節點的健康檢查的第三方模塊,通過它可以用來檢測后端 realserver 的健康狀態。如果后端 realserver 不可用,則后面的請求就不會轉發到該節點上,並持續檢查節點的狀態,缺點是持續一定時間之后請求才不會轉發到該節點,consul自帶的健康檢查可以解決該問題