ngnix 負載均衡

2022-06-21 03:42:09 字數 3481 閱讀 3461

反向**:客戶端請求過來後,代替客戶端去後端服務請求,把後端返回內容反饋給客戶端

負載均衡:**客戶端的請求,再把後端服務返回**到客戶端

upstream  配置

1、熱備:有2臺伺服器,當一台伺服器發生事故時,才啟用第二台伺服器給提供服務。伺服器處理請求的一直是a,如果a 故障那麼請求就轉向b

upstream mysvr

2、輪詢:nginx預設就是輪詢其權重都預設為1,伺服器處理請求的順序:abab...

upstream mysvr

3、加權輪詢:跟據配置的權重的大小而分發給不同伺服器不同數量的請求。如果不設定,則預設為1。下面伺服器的請求順序為:abbabbabbabbabb....

upstream mysvr

4、ip_hash:nginx會讓相同的客戶端ip請求相同的伺服器。

upstream mysvr

注:ip_hash 保證同乙個客戶端訪問後端同乙個服務端,解決了session不共享問題,避免出現客戶登入後再次要求登入問題,但是此方式有弊端,就是造成負載不均衡。

替代的解決方式就是在後端web服務後搭建memcached/redis 把那些session 相關資訊放在快取中這樣不採用ip_hash 也可以保證session共享。

5、關於nginx負載均衡配置的幾個狀態引數講解。

upstream mysvr

include                       mime.types;                   #副檔名與檔案型別對映表

#access_log off; #取消服務日誌

log_format myformat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式

access_log log/access.log myformat; #combined為日誌格式的預設值

sendfile on; #允許sendfile方式傳輸檔案,預設為off,可以在http塊,server塊,location塊。

sendfile_max_chunk 100k; #每個程序每次呼叫傳輸數量不能大於設定的值,預設為0,即不設上限。

keepalive_timeout 65; #連線超時時間,預設為75s,可以在http,server,location塊。

proxy_connect_timeout 1; #nginx伺服器與被**的伺服器建立連線的超時時間,預設60秒

proxy_read_timeout 1; #nginx伺服器想被**伺服器組發出read請求後,等待響應的超時間,預設為60秒。

proxy_send_timeout 1; #nginx伺服器想被**伺服器組發出write請求後,等待響應的超時間,預設為60秒。

proxy_http_version 1.0 ; #nginx伺服器提供**服務的http協議版本1.0,1.1,預設設定為1.0版本。

#proxy_method get; #支援客戶端的請求方法。post/get;

proxy_ignore_client_abort on; #客戶端斷網時,nginx伺服器是否終端對被**伺服器的請求。預設為off。

proxy_ignore_headers "expires" "set-cookie"; #nginx伺服器不處理設定的http相應投中的頭域,這裡空格隔開可以設定多個。

proxy_intercept_errors on; #如果被**伺服器返回的狀態碼為400或者大於400,設定的error_page配置起作用。預設為off。

proxy_headers_hash_max_size 1024; #存放http報文頭的雜湊表容量上限,預設為512個字元。

proxy_headers_hash_bucket_size 128;   #nginx伺服器申請存放http報文頭的雜湊表容量大小。預設為64個字元。

proxy_next_upstream timeout; #反向**upstream中設定的伺服器組,出現故障時,被**伺服器返回的狀態值。error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

#proxy_ssl_session_reuse on;  #預設為on,如果我們在錯誤日誌中發現「ssl3_get_finshed:digest check failed」的情況時,可以將該指令設定為off。

採用nginx+keepalived,兩個nginx 上部署keepalived 通過vip 來訪問nginx負載

為了同時讓兩台nginx **都對外提供訪問,既保證高可用又分擔了負載。可以採用方式如下:

兩台lb配置兩個vip針對不同的位址解析都分別兩個vip上,兩個lb上的keepalived 針對兩個vip 互為主備,這樣就實現了客戶端訪問負載的均衡訪問,而不是訪問一台,另一台只是主掛了在接管。

兩台lb安裝keepalived 配置兩套vrrp_instance_id 即可。

keepalived 腦裂問題

產生原因:物理網線斷鏈,防火牆策略,虛擬路由例項組不在乙個組,配置有問題。

防範:防火牆策略注意

心跳線監控如果vip 跳轉報警

關於一台**伺服器nginx 針對兩個vip監聽同乙個80埠衝突問題

解決:echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind (臨時解決)

vi /etc/sysctl.conf (永久解決)

sysctl -p

Ngnix 負載均衡策略

提供 5種負載均衡策略 l輪詢 每個請求按時間順序輪流分配到不同的後端伺服器,如果後端伺服器 down 掉,能自動剔除。l權重 指定輪詢機率,weight 和訪問比率成正比,用於後端伺服器效能不均的情況。lip hash 每個請求按訪問ip的 hash 結果分配,這樣每個訪客固定訪問乙個後端伺服器,...

ngnix配置負載均衡

在現實中通常乙個應用要部署到多個節點,從而減輕伺服器壓力。同時保證部分系統因部分伺服器宕機的情況下還能繼續執行,接下來我們將配置ngnix實現乙個網域名稱對應多台伺服器。一 nginx負載均衡策略 輪詢 預設 最基本的配置方法,它是upstream的預設策略,每個請求會按時間順序逐一分配到不同的後端...

Ngnix負載均衡安裝及配置

nginx是一款高效能的http 伺服器 反向 伺服器及電子郵件 imap pop3 伺服器。由俄羅斯的程式設計師igor sysoev所開發,官方測試nginx能夠支支撐5萬併發鏈結,並且cpu 記憶體等資源消耗卻非常低,執行非常穩定。http伺服器。nginx是乙個http服務可以獨立提供htt...