回覆列表
  • 1 # IT搬磚人

    nginx負載均衡用於從“upstream”模組定義的後端伺服器列表中選取一臺伺服器接受使用者的請求。一個最基本的upstream模組是這樣的,模組內的server是伺服器列表:

    #動態伺服器組

    upstream dynamic_zuoyu {

    server localhost:8080; #tomcat 7.0

    server localhost:8081; #tomcat 8.0

    server localhost:8082; #tomcat 8.5

    server localhost:8083; #tomcat 9.0

    }

    upstream 支援4種負載均衡排程演算法:

    A):每個請求按時間順序逐一分配到不同的後端伺服器;

    B):每個請求按訪問IP的hash結果分配,同一個IP客戶端固定訪問一個後端伺服器。可以保證來自同一ip的請求被打到固定的機器上,可以解決session問題。

    C):按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器。後臺伺服器為快取的時候效率。

    D):這是比上面兩個更加智慧的負載均衡演算法。此種演算法可以依據頁面大小和載入時間長短智慧地進行負載均衡,也就是根據後端伺服器的響應時間來分配請求,響應時間短的優先分配。本身是不支援 的,如果需要使用這種排程演算法,必須下載Nginx的 模組。

    輪詢:

    開啟 nginx 配置檔案

    [root@master ~]# vi /etc/nginx/conf.d/default.conf

    寫輪訓配置

    #設定負載均衡伺服器列表upstream roundrobin { #後端伺服器訪問規則 server 192.168.1.115:8080 weight=1; #server1 server 192.168.1.131:8081 weight=1; #server1 server 192.168.1.94:8090 weight=1; #server3}server { listen 80; server_name 192.168.1.131; location / { proxy_pass http://roundrobin; } }

    配置完成後

    //檢查 nginx 配置是否正確nginx -t //重新載入 nginx 配置service nginx reload

    當訪問 的時候,會把這個請求負載到 的 埠、 的 埠、 的 埠。負載的權重由 weight 來決定,預設為 1 ,weight 越大,權重就越大。

    IP_hash:

    #設定負載均衡伺服器列表upstream roundrobin { #後端伺服器訪問規則 ip_hash; #新增引數支援雜湊 server 192.168.1.115:8080 weight=1; #server1 server 192.168.1.131:8080 weight=1; #server1 server 192.168.1.94:8090 weight=1; #server3 } server { listen 80; server_name 192.168.1.131; location / { proxy_pass http://roundrobin; } }

    down,表示當前的server暫時不參與負載均衡。backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因 此這臺機器的壓力最輕。

    #設定負載均衡伺服器列表upstream roundrobin { #後端伺服器訪問規則 server 192.168.1.115:8080 weight=1; #server1 server 192.168.1.131:8080 down; #server2 不參與負載 server 192.168.1.94:8090 backup; #server3 備份機 }server { listen 80; server_name 192.168.1.131; location / { proxy_pass http://roundrobin; } }

  • 2 # 那年那些事er

    nginx的負載均衡有4種模式:

    1)、輪詢(預設)

    每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

    2)、weight

    指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。

    2)、ip_hash

    每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。

    3)、fair(第三方)

    按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

    4)、url_hash(第三方)

    配置方法:

    開啟nginx.cnf檔案

    在http節點下新增upstream節點:

    upstream webname {

    server 192.168.0.1:8080;

    server 192.168.0.2:8080;

    }

    其中webname是自己取的名字,最後會透過這個名字在url裡訪問的,像上面這個例子一樣什麼都不加就是預設的輪詢,第一個請求過來訪問第一個server,第二個請求來訪問第二個server。依次輪著來。

    upstream webname {

    server 192.168.0.1:8080 weight 2;

    server 192.168.0.2:8080 weight 1;

    }

    這個weight也很好理解,權重大的被訪問的機率就大,上面這個例子的話,訪問2次server1,訪問一次server2

    upstream webname {

    ip_hash;

    server 192.168.0.1:8080;

    server 192.168.0.2:8080;

    }

    ip_hash的配置也很簡單,直接加一行就可以了,這樣只要是同一個ip過來的都會到同一臺server上

    然後在server節點下進行配置:

    location /name {

    proxy_pass http://webname/name/;

    proxy_http_version 1.1;

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Connection "upgrade";

    }

    proxy_pass裡面用上面配的webname代替了原來的ip地址。

    這樣就基本完成了負載均衡的配置。

    下面是主備的配置:

    還是在upstream裡面

    upstream webname {

    server 192.168.0.1:8080;

    server 192.168.0.2:8080 backup;

    }

    設定某一個節點為backup,那麼一般情況下所有請求都訪問server1,當server1掛掉或者忙的的時候才會訪問server2

    upstream webname {

    server 192.168.0.1:8080;

    server 192.168.0.2:8080 down;

    }

    設定某個節點為down,那麼這個server不參與負載。

  • 中秋節和大豐收的關聯?
  • 吳川蘇李的來歷?