nginx 做負載平衡如何實現高可用
天蓬老师
天蓬老师 2017-06-10 09:49:33
0
2
724

用nginx實現簡單的負載平衡,配置如下


...

http{
    ...
    
    upstream mytomcatscluster{
        #ip_hash 在同一台服务器部署了2个tomcat,使用不同的端口
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:8180 weight=1;
    }
    
    ...
    
    server{
        ...
        
        # 将所有后端请求分发到我定义的集群服务器上
        location /service/fen/{
            proxy_pass http://mytomcatscluster;
        }
        
        ...
    }
}

...

現在的問題是:如果2個tomcat都正常,則nginx能正常分發請求到指定的伺服器上,使用輪詢的方式,權重也可以起作用,但是如果我把其中一個tomcat給關掉,那麼請求就會卡死,因為會有請求被nginx分發到掛掉的伺服器上, 這種情況怎麼處理,ngxin有對應的解決策略嗎? nginx能有辦法監控叢集伺服器的運作狀態嗎?怎麼配置?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(2)
仅有的幸福

upstream 有兩個參數 max_fails和fail_timeout,如果某台server在fail_timeout時間內出現了max_fails次連線失敗,那麼Nginx會認為其已經掛掉了,從而在fail_timeout時間內不再去請求它。
fail_timeout預設為10s,max_fails預設為1。

另外 有個第三方模組 nginx_upstream_check_module 專門用來偵測後端server的健康狀況

yaoweibin/nginx_upstream_check_module: Health checks upstreams for nginx

https://github.com/yaoweibin/...

过去多啦不再A梦

不用ip_hash的方式,把session存在redis裡面

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!