Nginx負載均衡案例

增加服務器數量,將請求分配到多個服務器

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
		
    # -------------------------------------------------------------------------------------
    
    # 配置負載均衡的SERVER IP地址
    upstream myserve {
        server 192.168.1.104:8001 weight=5;
        server 192.168.1.104:8000 weight=10;
    }

    server {
        listen       80;
        server_name  www.abc.com;
      
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://myserve;
            root   html;
            index  index.html index.htm;
        }
    }
   	# -------------------------------------------------------------------------------------
}
  1. 首先啓動兩個或多個服務器地址+端口,進行配置
  2. 配置成功之後,訪問的時候,默認會進行輪詢,刷新第一次訪問服務器A,刷新第二次訪問服務器B,依次刷新切換。

隨着互聯網信息的爆炸性增長,負載均衡(load balance)已經不再是一個很陌生的話題,顧名思義,負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應足夠快,給用戶很好的體驗。快速增長的訪問量和數據流量催生了各式各樣的負載均衡產品,很多專業的負載均衡硬件提供了很好的功能,但卻價格不菲,這使得負載均衡軟件大受歡迎,nginx 就是其中的一個,在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服務。

Nginx 提供了幾種分配方式(策略):

  1. 輪詢(默認)
    每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器 down 掉,能自動剔除。
  2. weight(權重)
    weight 代表權,重默認爲 1,權重越高被分配的客戶端越多指定輪詢機率,weight 和訪問比率成正比,用於後端服務器性能不均的情況。 例如:
upstream myserve {
    server 192.168.1.104:8001 weight=5;
    server 192.168.1.104:8000 weight=10;
}
  1. ip_hash
    每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決 session 的問題。
upstream myserve {
    ip_hash;
    server 192.168.1.104:8001;
    server 192.168.1.104:8000;
}
  1. fair (第三方)
    按後端服務器的響應時間來分配請求,響應時間短的優先分配。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章