寶寶忘記reload nginx了

介紹

        nginx-upsync-module是由王曉開用C開發的nginx模塊,用於從consul或其它同步upstream模塊配置,動態修改後端服務屬性(weight、max_fails等等)。修改這些信息後,不像未使用該模塊的nginx同樣須要reload下nginx。
        nginx在做爲負載均衡角色時,對於單臺nginx,增長、刪除後端服務,對於進行單臺的nginx,修改nginx配置文件後,要想配置文件生效,必須reload下nginx,這是很方便的。可是對於一個十幾臺或者幾十臺的nginx集羣,要實現這是一個很大的一個工做量。而且reload nginx會增長系統負載也會暫時下降性能。
        nginx-upsync-module能夠很容易解決上面所提到的問題,而且也不會影響性能。         該模塊如今仍處於開發,不過已經準備用於生產環境。建議和後端健康檢測模塊nginx_upstream_check_module配合使用。nginx

兼容性

        master分支兼容1.9版本及以上的nginx。nginx-upsync-1.8.x兼容1.8版本的nginx。後端

優點

        該模塊提供了發現後端的方法。支持經過consul動態添加和刪除後端服務和調整後端服務的weightfail_timeoutmax_fails等屬性。也會從consul獲取新的後端服務並同步到nginx的IP路由表。該模塊具備如下優點: api

  • 及時性
            會發送給consul帶有索引的key,consul會將該索引和consul的索引進行對比,若是索引沒有改變,連接會掛起5分鐘,在這期間,對該key-value的任何操做,都會立馬獲得反饋。服務器

  • 幾乎無性能損失
            從consul獲取後端服務器列表,對於nginx來講就至關於一個請求。更新nginx的IP路由表,不須要reload nginx,所以只會對nginx的性能有一點影響。微信

  • 穩定
            若是此次獲取服務器失敗,在下一個同步間隔仍會獲取服務器列表。這樣就保證了後端服務提供服務的穩定性。同時,支持將最近的配置文件備份到本地,即便consul故障宕機了,nginx仍能夠隨時能夠reload配置。
    負載均衡

  • 健康檢測
            該模塊支持對後端服務的健康檢測,不過須要nginx_upstream_check_module。所以建議nginx-upsync-modulenginx_upstream_check_module配合使用。ide

配置參數

  • upsync性能

    語法:upsync $consul.api.com:$port/v1/kv/upstreams/$upstream_name [upsync_type=consul] [upsync_interval=seconds/minutes] [upsync_timeout=seconds/minutes] [strong_dependency=off/on];
    默認:upsync_interval=5s upsync_timeout=6m strong_dependency=off
    位置:upstream
    功能:從consul或etcd獲取服務列表

    參數解釋
    upsync_interval:
            從consul獲取服務列表的間隔時間
    upsync_timeout
            從consul獲取服務列表的請求超時時間
    upsync_type
            指定從什麼類型的服務(consul或etcd)獲取服務列表。
    strong_dependency
            nginx啓動是否強制依賴upsync_type指定的服務的開關。若是upsync_type指定的是consul,在nginx啓動是,consul並未運行,那麼nginx啓動會失敗。 spa

  • upsync_dump_pathcode

    語法: upsync_dump_path $path;
    默認:/tem/servers_$host.conf
    位置:upstream
    功能:備份upstream配置的後端服務器到指定的路徑下
  • upsync_lb

    語法:upsync_lb round_robin/ip_hash/hash
    默認:round_robin
    位置:upstream
    功能:指定使用的調度方法
  • upstream_show

    語法:upstream_show;
    默認:None
    位置:location
    功能:列出指定的upstream配置的全部後端服務器


       更多精彩請關注微信公衆號:

wKioL1j4LFKwGONUAABpjNZ1qXo499.jpg

相關文章
相關標籤/搜索