centos 7安裝nginx以及用途

Nginx-負載均衡

  • Nginx簡介
    nginx(讀作“engine x”)是一個由俄羅斯軟件工程師Igor Sysoev編寫的免費開源web服務器。自2004年發佈以來,nginx一直專注於高性能、高併發性和低內存使用。在web服務器功能之上的附加功能,如負載平衡、緩存、訪問和帶寬控制,以及與各種應用程序有效集成的能力,幫助nginx成爲現代網站架構的良好選擇。目前,nginx是互聯網上第二流行的開源web服務器。

想深入學習研究nginx可以到官網學習,官網地址:http://nginx.org/en/


  • Nginx安裝(以centos 7操作系統爲例)
  1. 安裝依賴環境
官網獲取cenots 7版本的nginx鏡像源,地址:http://nginx.org/en/linux_packages.html#RHEL-CentOS
引入鏡像源
vi /etc/yum.repos.d/nginx.repo --創建編輯nginx.repo
添加以下內容:
nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安裝時默認選擇stable包,如想使用mainline包,執行一下這個命令:
sudo yum-config-manager --enable nginx-mainline
  1. 安裝
yum install nginx --安裝
systemctl status nginx --查看運行狀態
systemctl start nginx --啓動
systemctl restart nginx --重啓
systemctl stop nginx --關閉
systemctl enable nginx --設置開機自啓動
nginx -v --查看安裝版本
yum list|grep nginx --查看可用版本 
ps -ef|grep nginx --查看nginx進程
  • Nginx配置
nginx.conf --配置文件

1. 配置主體結構
user nobody; # 在“主”上下文中的指令
events {
    # 連接處理配置
}

http {
    # 特定於HTTP的配置並影響所有虛擬服務器 
    server {
        # 配置HTTP虛擬服務器1       
        location /one {
            # 處理以'/one'開頭的uri的配置
        }
        location /two {
            # 處理以'/two'開頭的uri的配置
        }
    } 
    server {
        # 配置HTTP虛擬服務器2
    }
}

stream {
    # 特定於TCP/UDP的配置並影響所有虛擬服務器
    server {
        # 配置TCP虛擬服務器1
    }
}

2. load balancer(負載均衡)
要開始使用NGINX Plus或NGINX開源來平衡一組服務器的HTTP流量,首先需要使用upstream指令來定義這個組。指令放在http上下文中
http {
    upstream backend {
        server backend1.example.com weight=5;
        server backend2.example.com;
        server 192.0.0.1 backup;
    }
}
組中的服務器使用server指令配置(不要與定義在NGINX上運行的虛擬服務器的服務器塊混淆)
server {
    location / {
        proxy_pass http://backend;
    }
}
下面的示例組合了上面的兩個片段,並展示瞭如何將HTTP請求代理到後端服務器組。這個組由三個服務器組成,其中兩個運行同一應用程序的實例,而第三個是備份服務器。因爲上游塊中沒有指定負載平衡算法,NGINX使用默認的循環算法:
http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server 192.0.0.1 backup;
    }
    
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}
3. 選擇負載平衡方法
I. NGINX開源支持四種負載平衡方法,NGINX Plus增加了兩種方法:
a. 輪循:請求均勻地分佈在服務器上,同時考慮了服務器的權重。這個方法是默認使用的(沒有啓用它的指令)
upstream backend {
   server backend1.example.com;
   server backend2.example.com;
}

b. 最少的連接:一個請求被髮送到服務器的活動連接數最少,同樣考慮到服務器的權重
upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}
c. IP Hash:發送請求的服務器由客戶機IP地址決定。在這種情況下,使用IPv4地址的前三個字節或整個IPv6地址來計算散列值。該方法保證來自相同地址的請求到達相同的服務器,除非該服務器不可用
upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}
如果一個服務器需要暫時從負載平衡循環中移除,可以使用down參數來標記它,以保持當前客戶端IP地址的散列。本服務器處理的請求被自動發送到組中的下一個服務器
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
}
d. 通用散列——請求發送到的服務器由用戶定義的鍵決定,鍵可以是文本字符串、變量或組合。例如,密鑰可以是一個成對的源IP地址和端口,或者是一個URI,如下例所示
upstream backend {
    hash $request_uri consistent;
    server backend1.example.com;
    server backend2.example.com;
}
哈希指令的可選一致性參數支持ketama一致性哈希負載平衡。根據用戶定義的散列鍵值,請求均勻地分佈在所有上游服務器上。如果向上遊組添加或從上游組刪除一個上游服務器,則只會重新映射幾個鍵,這在負載平衡緩存服務器或其他累積狀態的應用程序中最小化了緩存丟失。
e. 最少時間(NGINX Plus only)——對於每個請求,NNGINX Plus選擇平均延遲最低和活動連接最少的服務器,其中最低平均延遲是根據least_time指令的以下參數計算的:
header - 從服務器接收第一個字節的時間
last_byte - 從服務器接收完整響應的時間
last_byte inflight - 考慮到不完整的請求,從服務器接收完整響應的時間
upstream backend {
    least_time header;
    server backend1.example.com;
    server backend2.example.com;
}
f. 隨機:每個請求將被傳遞到一個隨機選擇的服務器。如果指定了兩個參數,首先NGINX根據server權值隨機選擇兩臺服務器,然後使用指定的方法選擇其中一臺
least_conn - 活動連接的最少數量
least_time=header (NGINX Plus) - 從服務器接收響應報頭的最小平均時間($upstream_header_time)
least_time=last_byte (NGINX Plus) - 從服務器接收完整響應的最小平均時間($upstream_response_time)
upstream backend {
    random two least_time=last_byte;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
    server backend4.example.com;
}
II. 服務器的權重
默認情況下,NGINX使用輪詢方法在組中的服務器之間根據它們的權重分配請求。服務器指令的權值參數設置服務器的權值;默認值是1
upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com;
    server 192.0.0.1 backup;
}
例如,backend1.example.com的權值爲5;其他兩個服務器具有默認的權值(1),但是IP地址爲192.0.0.1的服務器被標記爲備份服務器,除非其他兩個服務器都不可用,否則不會接收請求。使用這種權重配置,每6個請求中有5個發送到backend1.example.com, 1個發送到backend2.example.com

III. 服務器慢啓動
服務器慢啓動特性可以防止最近恢復的服務器被連接壓得喘不過氣來,因爲連接可能會超時並導致服務器再次被標記爲失敗。

在NGINX Plus中,slow - start允許上游服務器在恢復或可用之後逐漸將其權重從0恢復到其標稱值。這可以通過服務器指令的slow_start參數完成:
upstream backend {
    server backend1.example.com slow_start=30s;
    server backend2.example.com;
    server 192.0.0.1 backup;
}
時間值(這裏是30秒)設置NGINX Plus將服務器連接數量增加到最大的時間。
注意,如果在一個組中只有一個服務器,那麼服務器指令的max_failed、fail_timeout和slow_start參數將被忽略,服務器永遠不會被認爲不可用。

ok,希望對有需要的同學有所幫助~.~。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章