Nginx的負載均衡入門_第1頁
Nginx的負載均衡入門_第2頁
Nginx的負載均衡入門_第3頁
Nginx的負載均衡入門_第4頁
Nginx的負載均衡入門_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、使用使用NginxNginx輕松實現開源負載均衡輕松實現開源負載均衡2008.9.20 北京什么是什么是NginxNginx? Nginx (“engine x”) Nginx (“engine x”) 是俄羅斯人是俄羅斯人Igor Sysoev(Igor Sysoev(塞塞索耶夫索耶夫) )編寫的一款高性能的編寫的一款高性能的 HTTP HTTP 和反向代理服務和反向代理服務器。器。 Nginx Nginx 已經在俄羅斯最大的門戶網站已經在俄羅斯最大的門戶網站 Rambler Rambler MediaMedia(www.rambler.ruwww.rambler.ru)上運行了)上運行了3

2、 3年時間,同時年時間,同時俄羅斯超過俄羅斯超過20%20%的虛擬主機平臺采用的虛擬主機平臺采用NginxNginx作為反向作為反向代理服務器。代理服務器。 在國內,已經有在國內,已經有 新浪博客、新浪播客、網易新聞、新浪博客、新浪播客、網易新聞、六間房、六間房、Discuz!Discuz!、水木社區、豆瓣、水木社區、豆瓣、YUPOOYUPOO、海內、迅雷在線、海內、迅雷在線 等多家網站使用等多家網站使用 Nginx Nginx 作作為為WebWeb服務器或反向代理服務器。服務器或反向代理服務器。使用使用NginxNginx做七層負載均衡的理由做七層負載均衡的理由 1 1、高并發連接:、高并發

3、連接:官方測試能夠支撐官方測試能夠支撐5 5萬并發連萬并發連接,在實際生產環境中跑到接,在實際生產環境中跑到2 23 3萬并發連接數。萬并發連接數。 2 2、內存消耗少:、內存消耗少:在在3 3萬并發連接下,開啟的萬并發連接下,開啟的1010個個Nginx Nginx 進程才消耗進程才消耗150M150M內存內存(15M15M* *10=150M10=150M)。)。 3 3、配置文件非常簡單:、配置文件非常簡單:風格跟程序一樣通俗風格跟程序一樣通俗易懂。易懂。 4 4、成本低廉:、成本低廉:NginxNginx為開源軟件,可以免費使為開源軟件,可以免費使用。而購買用。而購買F5 BIG-IP

4、F5 BIG-IP、NetScalerNetScaler等硬件負載等硬件負載均衡交換機則需要十多萬至幾十萬人民幣。均衡交換機則需要十多萬至幾十萬人民幣。使用使用NginxNginx做七層負載均衡的理由做七層負載均衡的理由 5 5、支持、支持RewriteRewrite重寫規則:重寫規則:能夠根據域名、能夠根據域名、URLURL的不同,將的不同,將 HTTP HTTP 請求分到不同的后端請求分到不同的后端服務器群組。服務器群組。 6 6、內置的健康檢查功能:、內置的健康檢查功能:如果如果 Nginx Nginx Proxy Proxy 后端的某臺后端的某臺 Web Web 服務器宕機了,不服務器

5、宕機了,不會影響前端訪問。會影響前端訪問。 7 7、節省帶寬:、節省帶寬:支持支持 GZIP GZIP 壓縮,可以添加壓縮,可以添加瀏覽器本地緩存的瀏覽器本地緩存的 Header Header 頭。頭。 8 8、穩定性高:、穩定性高:用于反向代理,宕機的概率用于反向代理,宕機的概率微乎其微。微乎其微。Nginx Nginx 負載均衡的典型應用負載均衡的典型應用 硬件、軟件七層負載均衡對比:NetScaler與Nginx硬件、軟件七層負載均衡對比:NetScaler與Nginx五分鐘搞定 Nginx 負載均衡編譯安裝編譯安裝NginxNginx1、創建供Nginx使用的組和帳號:/usr/sbi

6、n/groupadd www -g 48/usr/sbin/useradd -u 48 -g www www2、編譯安裝rewrite模塊支持包wget ftp:/ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gztar zxvf pcre-7.7.tar.gzcd pcre-7.7/./configuremake & make installcd ./編譯安裝編譯安裝NginxNginx3、編譯安裝Nginxwget http:/sysoev.ru/nginx/nginx-0.7.17.tar.gztar z

7、xvf nginx-0.7.17.tar.gzcd nginx-0.7.17/./configure -user=www -group=www -prefix=/usr/local/nginx -with-http_stub_status_module -with-http_ssl_modulemake & make installcd ./4、備份默認nginx.conf配置文件mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.old創建創建nginx.confnginx.conf配置文件配置文件(1)(1

8、) 1、創建Nginx配置文件vi /usr/local/nginx/conf/nginx.conf 2、輸入配置文件內容user www www;worker_processes 8;error_log /usr/local/nginx/logs/nginx_error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;events use epoll; worker_connections 51200;創建創建nginx.confnginx.conf配置文件配置文件(2)(2) http incl

9、ude mime.types; default_type application/octet-stream; #charset gb2312; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on;創建創建nginx.confnginx.conf配置文件配置文件(3)(3) #gzip on; #gzip_min_len

10、gth 1k; #gzip_buffers 4 16k; #gzip_http_version 1.0; #gzip_comp_level 2; #gzip_types text/plain application/x-javascript text/css application/xml; #gzip_vary on;創建創建nginx.confnginx.conf配置文件配置文件(4)(4) upstream server 0:80; server 1:80; server 2:80; server 3

11、:81; upstream server 0:80 weight=3; server 1:80; server 2:80; 創建創建nginx.confnginx.conf配置文件配置文件(5)(5) server listen 80; server_name *; proxy_redirect off; #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP proxy_set_header X-Forwarded-For $remote_addr; if ($request_uri * .*.(js|cs

12、s|gif|jpg|jpeg|png|bmp|swf)$) proxy_pass http:/; if ($request_uri * /view/(.*)$) proxy_pass http:/; proxy_pass http:/;創建創建nginx.confnginx.conf配置文件配置文件(6)(6) #定義日志格式 log_format access $remote_addr - $remote_user $time_local $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forw

13、arded_for; #打日志 access_log /usr/local/nginx/logs/access.log access;創建創建nginx.confnginx.conf配置文件配置文件(7)(7) #允許客戶端請求的最大的單個文件字節數 client_max_body_size 10m; #緩沖區代理緩沖用戶端請求的最大字節數 可以理解為先保存到本地再傳給用戶 client_body_buffer_size 128k; #跟后端服務器連接的超時時間_發起握手等候響應超時時間 proxy_connect_timeout 600; #連接成功后_等候后端服務器響應時間_其實已經進入后

14、端的排隊之中等候處理 proxy_read_timeout 600; #后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據 proxy_send_timeout 600;創建創建nginx.confnginx.conf配置文件配置文件(8)(8) #代理請求緩存區_這個緩存區間會保存用戶的頭信息以供Nginx進行規則處理_一般只要能保存下頭信息即可 proxy_buffer_size 8k; #同上 告訴Nginx保存單個用的幾個Buffer 最大用多大空間 proxy_buffers 4 32k; #如果系統很忙的時候可以申請更大的proxy_buffers 官方推薦*2

15、 proxy_busy_buffers_size 64k; #proxy緩存臨時文件的大小 proxy_temp_file_write_size 64k; 配置文件編寫完畢啟動啟動NginxNginx/usr/local/nginx/sbin/nginx t如果屏幕顯示以下兩行信息,說明配置文件正確:the configuration file /usr/local/nginx/conf/nginx.conf syntax is okthe configuration file /usr/local/nginx/conf/nginx.conf was tested successfully那么

16、,則可以啟動Nginx服務:ulimit -SHn 51200/usr/local/nginx/sbin/nginx不中斷服務平滑修改不中斷服務平滑修改NginxNginx配置配置、修改/usr/local/nginx/conf/nginx.conf配置文件后,請執行以下命令檢查配置文件是否正確:/usr/local/nginx/sbin/nginx -t如果屏幕顯示以下兩行信息,說明配置文件正確:the configuration file /usr/local/nginx/conf/nginx.conf syntax is okthe configuration file /usr/loc

17、al/nginx/conf/nginx.conf was tested successfully、這時,輸入以下命令查看Nginx主進程號:ps -ef | grep nginx: master process | grep -v grep | awk -F print $2屏幕顯示的即為Nginx主進程號,例如:6302這時,執行以下命令即可使修改過的Nginx配置文件生效:kill -HUP 6302或者用更簡便的方法:kill -HUP cat /usr/local/nginx/logs/nginx.pid編寫每天定時切割編寫每天定時切割NginxNginx日志的腳本日志的腳本1、創建腳

18、本/usr/local/nginx/sbin/cut_nginx_log.sh,輸入以下內容:#!/bin/bash# This script run at 00:00# The Nginx logs pathlogs_path=/usr/local/nginx/logs/mkdir -p $logs_path$(date -d yesterday +%Y)/$(date -d yesterday +%m)/mv $logs_pathaccess.log $logs_path$(date -d yesterday +%Y)/$(date -d yesterday +%m)/access_$(date -d yesterday +%Y%m%d).logkill -USR1 cat /usr/local/nginx/logs/nginx.pid2、設置crontab,每天凌晨00:00切割nginx訪問日志crontab -e輸入以下內容:00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh總結總結1、對于中、小型企業,如果沒有資金去購買昂貴的四/七

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論