使用Nginx輕松實(shí)現(xiàn)開源負(fù)載均衡_第1頁
使用Nginx輕松實(shí)現(xiàn)開源負(fù)載均衡_第2頁
使用Nginx輕松實(shí)現(xiàn)開源負(fù)載均衡_第3頁
使用Nginx輕松實(shí)現(xiàn)開源負(fù)載均衡_第4頁
使用Nginx輕松實(shí)現(xiàn)開源負(fù)載均衡_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、使用Nginx輕松實(shí)現(xiàn)開源負(fù)載均衡個人簡介個人簡介 張宴,曾在新浪等公司任系統(tǒng)工程師、系統(tǒng)架構(gòu)張宴,曾在新浪等公司任系統(tǒng)工程師、系統(tǒng)架構(gòu)師。工作內(nèi)容主要涉及:服務(wù)器系統(tǒng)架構(gòu)設(shè)計(jì)與師。工作內(nèi)容主要涉及:服務(wù)器系統(tǒng)架構(gòu)設(shè)計(jì)與部署、系統(tǒng)運(yùn)維與調(diào)優(yōu)、網(wǎng)絡(luò)故障解決、網(wǎng)站后部署、系統(tǒng)運(yùn)維與調(diào)優(yōu)、網(wǎng)絡(luò)故障解決、網(wǎng)站后端以及接口類端以及接口類PHPPHP程序開發(fā)、程序開發(fā)、UnixUnix開源軟件二次開開源軟件二次開發(fā)、服務(wù)器監(jiān)控系統(tǒng)開發(fā)等。具有發(fā)、服務(wù)器監(jiān)控系統(tǒng)開發(fā)等。具有CDNCDN部署,跨部署,跨IDCIDC的數(shù)據(jù)傳輸,電信網(wǎng)通南北互通,以及門戶類的數(shù)據(jù)傳輸,電信網(wǎng)通南北互通,以及門戶類FLVFLV視頻

2、分享網(wǎng)站視頻分享網(wǎng)站新浪播客架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)。新浪播客架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)。什么是什么是NginxNginx? Nginx (“engine x”) Nginx (“engine x”) 是俄羅斯人是俄羅斯人Igor Sysoev(Igor Sysoev(塞塞索耶夫索耶夫) )編寫的一款高性能的編寫的一款高性能的 HTTP HTTP 和反向代理服務(wù)和反向代理服務(wù)器。器。 Nginx Nginx 已經(jīng)在俄羅斯最大的門戶網(wǎng)站已經(jīng)在俄羅斯最大的門戶網(wǎng)站 Rambler Rambler MediaMedia()上運(yùn)行了()上運(yùn)行了3 3年時間,同時俄羅斯超過年時間,同時俄羅斯超過20%20%的的虛擬主機(jī)平臺采用虛

3、擬主機(jī)平臺采用NginxNginx作為反向代理服務(wù)器。作為反向代理服務(wù)器。 在國內(nèi),已經(jīng)有在國內(nèi),已經(jīng)有 新浪博客、新浪播客、網(wǎng)易新聞、新浪博客、新浪播客、網(wǎng)易新聞、六間房、六間房、56 56 、Discuz!Discuz!、水木社區(qū)、豆瓣、水木社區(qū)、豆瓣、YUPOOYUPOO、海內(nèi)、迅雷在線、海內(nèi)、迅雷在線 等多家網(wǎng)站使用等多家網(wǎng)站使用 Nginx Nginx 作作為為WebWeb服務(wù)器或反向代理服務(wù)器。服務(wù)器或反向代理服務(wù)器。使用使用NginxNginx做七層負(fù)載均衡的理由做七層負(fù)載均衡的理由 1 1、高并發(fā)連接:官方測試能夠支撐、高并發(fā)連接:官方測試能夠支撐5 5萬并發(fā)連萬并發(fā)連接,在實(shí)

4、際生產(chǎn)環(huán)境中跑到接,在實(shí)際生產(chǎn)環(huán)境中跑到2 23 3萬并發(fā)連接數(shù)。萬并發(fā)連接數(shù)。 2 2、內(nèi)存消耗少:在、內(nèi)存消耗少:在3 3萬并發(fā)連接下,開啟的萬并發(fā)連接下,開啟的1010個個Nginx Nginx 進(jìn)程才消耗進(jìn)程才消耗150M150M內(nèi)存內(nèi)存(15M15M* *10=150M10=150M)。)。 3 3、配置文件非常簡單:風(fēng)格跟程序一樣通俗、配置文件非常簡單:風(fēng)格跟程序一樣通俗易懂。易懂。 4 4、成本低廉:、成本低廉:NginxNginx為開源軟件,可以免費(fèi)使為開源軟件,可以免費(fèi)使用。而購買用。而購買F5 BIG-IPF5 BIG-IP、NetScalerNetScaler等硬件負(fù)載等

5、硬件負(fù)載均衡交換機(jī)則需要十多萬至幾十萬人民幣。均衡交換機(jī)則需要十多萬至幾十萬人民幣。使用使用NginxNginx做七層負(fù)載均衡的理由做七層負(fù)載均衡的理由 5 5、支持、支持RewriteRewrite重寫規(guī)則:能夠根據(jù)域名、重寫規(guī)則:能夠根據(jù)域名、URLURL的不同,將的不同,將 HTTP HTTP 請求分到不同的后端請求分到不同的后端服務(wù)器群組。服務(wù)器群組。 6 6、內(nèi)置的健康檢查功能:如果、內(nèi)置的健康檢查功能:如果 Nginx Nginx Proxy Proxy 后端的某臺后端的某臺 Web Web 服務(wù)器宕機(jī)了,不服務(wù)器宕機(jī)了,不會影響前端訪問。會影響前端訪問。 7 7、節(jié)省帶寬:支持、

6、節(jié)省帶寬:支持 GZIP GZIP 壓縮,可以添加壓縮,可以添加瀏覽器本地緩存的瀏覽器本地緩存的 Header Header 頭。頭。 8 8、穩(wěn)定性高:用于反向代理,宕機(jī)的概率、穩(wěn)定性高:用于反向代理,宕機(jī)的概率微乎其微。微乎其微。Nginx Nginx 負(fù)載均衡的典型應(yīng)用負(fù)載均衡的典型應(yīng)用 硬件、軟件七層負(fù)載均衡對比:NetScaler與Nginx硬件、軟件七層負(fù)載均衡對比:NetScaler與Nginx五分鐘搞定 Nginx 負(fù)載均衡編譯安裝編譯安裝NginxNginx1、創(chuàng)建供Nginx使用的組和帳號:/usr/sbin/groupadd www -g 48/usr/sbin/user

7、add -u 48 -g www www2、編譯安裝rewrite模塊支持包c(diǎn)d pcre-7.7/./configuremake & make installcd ./編譯安裝編譯安裝NginxNginx3、編譯安裝Nginx./configure -user=www -group=www -prefix=/usr/local/nginx -with- _stub_status_module -with- _ssl_modulemake & make installcd ./4、備份默認(rèn)nginx.conf配置文件mv /usr/local/nginx/conf/nginx.

8、conf /usr/local/nginx/conf/nginx.old創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(1)(1)1、創(chuàng)建Nginx配置文件vi /usr/local/nginx/conf/nginx.conf 2、輸入配置文件內(nèi)容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; w

9、orker_connections 51200;創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(2)(2) include 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_nodela

10、y on;創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(3)(3) #gzip on; #gzip_min_length 1k; #gzip_buffers 4 16k; #gzip_ _version 1.0; #gzip_comp_level 2; #gzip_types text/plain application/x-javascript text/css application/xml; #gzip_vary on;創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(4)(4) upstream web.abc server 0

11、:80; server 1:80; server 2:80; server 3:81; upstream squid.abc server 0:80 weight=3; server 1:80; server 2:80; 創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(5)(5) server listen 80; server_name abc *.abc ; proxy_redirect off; #后端的Web服務(wù)器可以通過X-Forwar

12、ded-For獲取用戶真實(shí)IP proxy_set_header X-Forwarded-For $remote_addr; if ($request_uri * .*.(js|css|gif|jpg|jpeg|png|bmp|swf)$) proxy_pass :/squid.abc ; if ($request_uri * /view/(.*)$) proxy_pass :/squid.abc ; proxy_pass :/web.abc ;創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(6)(6) #定義日志格式 log_format access $remote_ad

13、dr - $remote_user $time_local $request $status $body_bytes_sent $ _referer $ _user_agent $ _x_forwarded_for; #打日志 access_log /usr/local/nginx/logs/access.log access;創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(7)(7) #允許客戶端請求的最大的單個文件字節(jié)數(shù) client_max_body_size 10m; #緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù) 可以理解為先保存到本地再傳給用戶 client_body_b

14、uffer_size 128k; #跟后端服務(wù)器連接的超時時間_發(fā)起握手等候響應(yīng)超時時間 proxy_connect_timeout 600; #連接成功后_等候后端服務(wù)器響應(yīng)時間_其實(shí)已經(jīng)進(jìn)入后端的排隊(duì)之中等候處理 proxy_read_timeout 600; #后端服務(wù)器數(shù)據(jù)回傳時間_就是在規(guī)定時間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù) proxy_send_timeout 600;創(chuàng)建創(chuàng)建nginx.confnginx.conf配置文件配置文件(8)(8) #代理請求緩存區(qū)_這個緩存區(qū)間會保存用戶的頭信息以供Nginx進(jìn)行規(guī)則處理_一般只要能保存下頭信息即可 proxy_buffer_siz

15、e 8k; #同上 告訴Nginx保存單個用的幾個Buffer 最大用多大空間 proxy_buffers 4 32k; #如果系統(tǒng)很忙的時候可以申請更大的proxy_buffers 官方推薦*2 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.

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

17、he configuration file /usr/local/nginx/conf/nginx.conf syntax is okthe configuration file /usr/local/nginx/conf/nginx.conf was tested successfully、這時,輸入以下命令查看Nginx主進(jìn)程號:ps -ef | grep nginx: master process | grep -v grep | awk -F print $2屏幕顯示的即為Nginx主進(jìn)程號,例如:6302這時,執(zhí)行以下命令即可使修改過的Nginx配置文件生效:kill -HUP 63

18、02或者用更簡便的方法:kill -HUP cat /usr/local/nginx/logs/nginx.pid編寫每天定時切割編寫每天定時切割NginxNginx日志的腳本日志的腳本1、創(chuàng)建腳本/usr/local/nginx/sbin/cut_nginx_log.sh,輸入以下內(nèi)容:#!/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、設(shè)置crontab,每天凌晨00:00切割nginx訪問日志crontab -e輸入以下內(nèi)容:00 00

溫馨提示

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

評論

0/150

提交評論