Nginx負載均衡的實現(高階篇)

2021-10-25 07:39:14 字數 3372 閱讀 6308

時隔一周再次更新文章,同樣的風格不同的味道

nginx 和 apache 的優缺點

1.nginx 相對於 apache 的優點:

輕量級,同樣是 web 服務,比 apache 占用更少的記憶體及資源高併發, nginx 處理請求是非同步非阻塞(如前端 ajax)的,而 apache 則是阻塞型的,在高併發下 nginx 能保持低資源,低消耗,高效能,高度模組化的設計。

2.apache 相對於 nginx 的優點:

rewrite 重寫 ,比 nginx 的 rewrite 模組多,基本想到的都可以找到並且少 bug ,nginx 的 bug 相對較多,apache(出身好起步高)。

3.nginx 配置簡潔, apache 複雜

幾種常用web伺服器對比

對比項\伺服器apachenginxlighttpd

proxy**

非常好非常好

一般rewriter

好非常好

一般fcgi不好好

非常好熱部署

不支援支援

不支援系統壓力

很大很小

比較小穩定性

好非常好

不好安全性好一般

一般靜態檔案處理

一般非常好

好反向**

一般非常好

一般@author:lanyy699

[root@lanyy ~]

#yum install gcc-c++ -y

# nginx依賴包如下

[root@lanyy ~]

#gcc openssl-devel pcre-devel zlib-devel

# 安裝

[root@lanyy ~]

#yum -y install gcc openssl-devel pcre-devel zlib-devel

[root@lanyy ~]

#tar -zxf nginx-1.8.1.tar.gz -c /opt/software/

進入解壓後的原始碼目錄,然後執行 configure 命令進行編譯配置到指定目錄下

# 先建立目錄

[root@lanyy ~]

#mkdir -p /usr/soft/nginx

[root@lanyy ~]

#./configure --prefix=/usr/soft/nginx

make && make install

安裝好後,會在 /usr/soft 下生成 nginx 目錄(這是我編譯前指定的),這個目錄就是 nginx 的軟體。

啟動後,訪問虛擬機器的 80 埠,可檢視到nginx初始介面,一旦 nginx 啟動,就可以通過呼叫帶有-s 引數的可執行檔案來控制它。

使用語法:nginx -s 訊號

訊號可以是下列之一:

stop - 快速關機

quit - 優雅的關機

reopen - 重新開啟日誌檔案

例如,要停止 nginx 程序並等待工作程序完成當前請求的服務,可以執行以下命令:./nginx -s quit

@author:lanyy699

# 程序數,建議設定和 cpu 個數一樣或 2 倍

worker_processes 2;

# 日誌級別

error_log logs/error.log warning;(預設 error 級別)

# nginx 啟動後的 pid 存放位置(nginx預設程序18621)

# 重定向去錯誤服務頁面

error_page 500 502 503 504 /50x.html;

location = /50x.html

}

nginx 支援以下負載均衡機制(或方法):

6-2-0、預設負載平衡配置

使用 nginx 進行負載平衡的最簡單配置可能如下所示:

}}在上面的示例中,在 srv1-srv3 上執行相同應用程式的 3 個例項。

如果沒有專門配置負載均衡方法,則預設為迴圈法。所有請求都被**到伺服器組 shsxt,並且 nginx 應用 http 負載平衡來分發請求。

6-2-1、輪詢負載平衡

輪詢【round robin】:請求在伺服器上平均分配,與伺服器權重有關,預設權重為1,即平均分配

upstream backend
6-2-2、加權負載平衡

通過使用伺服器權重,還可以進一步影響 nginx 負載均衡演算法,誰的權重越大,分發到的請求就越多。(如下所示srv1佔60%的權重,保證5次訪問中3次出現srv1,並不是按照順序出現)

upstream lanyy
6-2-3、最小連線負載平衡

在連線負載最少的情況下,nginx會盡量避免將過多的請求分發給繁忙的應用程式伺服器,而是將新請求分發給不太繁忙的伺服器,避免伺服器過載。

upstream lanyy
6-2-4、會話永續性

上述的迴圈是最少連線數的負載平衡方法,每個後續客戶端的請求都可能被分發到不同的伺服器。不能保證相同的客戶端總是定向到相同的伺服器。

如果需要將客戶端繫結到特定的應用程式伺服器,換句話說,就是始終選擇相同的伺服器而言,就要使客戶端的會話「粘滯」或「持久」,ip-hash 負載平衡機制就是有這種特性。使用 ip-hash,客戶端的 ip 位址將用作雜湊鍵,以確定應該為客戶端的請求選擇伺服器組中的哪台服器,此方法可確保來自同一客戶端的請求將始終定向到同一臺伺服器,除非此伺服器不可用。

upstream lanyy
nginx 還可以對 ip 的訪問進行控制,allow 代表允許,deny 代表禁止.

location /
從上到下的順序,匹配到了便跳出。如上的例子先禁止了 192.168.78.1,接下來允許了 3 個網段,其中包含了乙個 ipv6,最後未匹配的 ip 全部禁止訪問。

@author:lanyy699

負載均衡 實現配置篇(Nginx)

負載均衡 實現配置篇 nginx 客串 屌絲的坑人表單神器 資料庫那點事兒 物件導向昇華 物件導向的認識 新生的初識 物件導向的番外 思想的夢遊篇 1 物件導向的認識 如何找出類 同類文章 負載均衡 概念認識篇 華麗的分割線 正文開始 首先我們來回顧下上篇的概念 負載均衡 分身的能力。既然要有分身的...

負載均衡 實現配置篇(Nginx)

客串 屌絲的坑人表單神器 資料庫那點事兒 物件導向昇華 物件導向的認識 新生的初識 物件導向的番外 思想的夢遊篇 1 物件導向的認識 如何找出類 同類文章 負載均衡 概念認識篇 還不了解負載均衡的,推薦你閱讀 負載均衡 概念認識篇 華麗的分割線 正文開始 首先我們來回顧下上篇的概念 負載均衡 分身的...

nginx負載均衡篇(二)

需要模組 ngx http upstream module ngx http proxy module 或者 ngx http upstream module ngx http fastcgi module 小知識 upstream 只能應用於http上下文,而proxy pass可以應用於loca...