一、簡介
首先考慮到的是將網上的連線通過負載均衡的方式分散來減輕伺服器的壓力,這方面可以使用nginx**來實現;其次需要解決的問題是session,對比了幾種方案發現nginx內建的ip_hash策略可以解決該問題,最終網路的架構變成了下圖所示,在該方案中增加了4臺伺服器,其中一台nginx負載**,另外四台為新增的tomcat服務。
二、安裝nginx
nginx的安裝配置十分簡單,我這裡實際用的是tengine版本,具體的安裝方法可以參考」
nginx配置指南之一
」。這裡需要注意的是它的編譯引數,記得它的配置檔案和日誌檔案的存放位置。
三、優化系統資源
檔案限制
linux系統中檔案的開啟個數及單使用者最多擁有的程序數是有限制的,可以通過「ulimit -n」或「ulimit -u」來檢視,詳細的設定可以參考「oracle 11g在linux下的標準安裝方法(上)」。先修改/etc/security/limit.conf中的限制,如下圖所示。
核心優化
核心中涉及的tcp相關的選項在大併發連線的情況下也需要做相應的調整否則可以出「tcp: time wait bucket table overflow」 的錯誤提示。具體修改/etc/sysctl.conf檔案,如有特殊要求請結合實際情況修改。具體如下所示:
用於向外連線的埠範圍。
netdev_max_backlog
每個網路介面接收資料報的速率比核心處理這些包的速率快時,允許送到佇列的資料報的最大數目,對重負載伺服器而言,該值需要調高一點。
tcp_max_orphans
處理不屬於任何程序的套接字數量,不屬於任程程序的程序就是「孤兒(orphans)程序」,在快速、大量的連線中這種程序會很多因此要適當的設定該引數,也可以用來防禦簡單的dos***。
tcp_max_syn_backlog
用於記錄尚未收到客戶端確認資訊的連線請求的最大值。
四、優化nginx
epoll為linux下的必須模型,適用於2.6以後的核心版本,如下圖所示:
優化**配置
需要注意的是「proxy_max_temp_file_size」,它主要用來設定臨時檔案的最大值。當被請求的檔案內容大於**快取的大小時,該檔案會被儲存到這個臨時檔案,但是如果被請求檔案的內容大於這個值的時候,那麼將會從上游的伺服器(被**的伺服器)上直接同步傳遞,而不再使用**快取。該指令的預設值為1gb,如果設定為0,那麼意味著禁止使用臨時檔案。
五、配置nginx
nginx配置如下所示,其中upstreambackend配置的是後端的tomcat應用,ip_hash表示啟用該策略,使用者的目的是為了解決後端session不一致的問題(在nginx前端還有cdn或是區域網的環境中須慎用)。
server段配置的是**的路徑和埠,需要注意「proxy_set_header host $host:8162;」的寫法。如果該變數後沒有加8162埠則實際的**會導致頁面無法正常顯示。其後的兩條語句可以參考nginx日誌的記錄內容,主要用來記錄外網實際的訪問請求。($host 在使用80埠的時候ok,非80埠可以使用$http_host。感謝ontheway2015指點)
log_format欄位用來生成指定的日誌格式檔案,相應的變數對應日誌檔案中的訪問記錄,可以對照下圖來檢視。
六、nginx安全限制
隨著業務的增加,網路連線的流量越來越大,合理的控制訪問請求及連線數非常重要,否則仍會出現失去響應的情況。
七、增加ip限制功能
最簡單也最容易實現的的方式是nginx自帶的ip訪問控制,由模組ngx_http_limit_conn_module和來ngx_http_limit_req_module實現,通過它們可以實現對ip位址連線數及伺服器訪問請求數的控制。
要限制連線,必須先有乙個容器對連線進行計數,在http段加入如下**:"zone=" 給它乙個名字,可以隨便叫,這個名字要跟下面的limit_conn 一致,$binary_remote_addr = 用二進位制來儲存客戶端的位址,1m 可以儲存 32000 個併發會話。
限制請求數的方式和限制連線數類似,其中「rate=10r/s」表示一秒中處理的請求為10個,如果需要限制為每分鐘不超過30個則表示為「rate=30r/m」;乙個具體的設定如下所示:
http
在server段中加入以下內容,其中「burst=5」表示同時允許超過頻率限制的請求數不多於5個;「limit_conn two 15」表示對於同一ip的連線數限制為15個。
limit_req zone=one burst=5;
limit_conn two 15;
RAC環境下負載均衡配置
典型配置 oralocal description load balance yes failover on address list address protocol tcp host 192.168.1.1 port 1521 address protocol tcp host 192.168....
lnmp環境下nginx配置 負載均衡
1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。3 ip hash 每個請求按訪問ip的 hash 結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決 ...
生產環境使用nginx做負載均衡配置的五種策略
nginx的upstream目前支援5種方式的分配 1.輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2.weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。例如 upstream bakend 3.ip hash...