應(yīng)用集群配置_第1頁
應(yīng)用集群配置_第2頁
應(yīng)用集群配置_第3頁
應(yīng)用集群配置_第4頁
應(yīng)用集群配置_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、應(yīng)用集群配置應(yīng)用集群配置一、一、 負(fù)載均衡名詞解釋負(fù)載均衡負(fù)載均衡(又稱為負(fù)載分擔(dān)),英文名稱為Load Balance,其意思就是將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)四層和七層負(fù)載均衡四層和七層負(fù)載均衡負(fù)載均衡設(shè)備也常被稱為負(fù)載均衡設(shè)備也常被稱為四到七層交換機(jī)四到七層交換機(jī)所謂四層就是基于所謂四層就是基于IP+端口的負(fù)載均衡;端口的負(fù)載均衡;四層的負(fù)載均衡,就是通過發(fā)布三層的四層的負(fù)載均衡,就是通過發(fā)布三層的IP地址(地址(VIP),然后加四),然后加四層的端口號,來決定哪些流

2、量需要做負(fù)載均衡,對需要處理的流量層的端口號,來決定哪些流量需要做負(fù)載均衡,對需要處理的流量進(jìn)行進(jìn)行NAT處理,轉(zhuǎn)發(fā)至后臺服務(wù)器,并記錄下這個處理,轉(zhuǎn)發(fā)至后臺服務(wù)器,并記錄下這個TCP或者或者UDP的的流量是由哪臺服務(wù)器處理的,后續(xù)這個連接的所有流量都同樣轉(zhuǎn)發(fā)流量是由哪臺服務(wù)器處理的,后續(xù)這個連接的所有流量都同樣轉(zhuǎn)發(fā)到同一臺服務(wù)器處理。到同一臺服務(wù)器處理。七層就是基于七層就是基于URL等應(yīng)用層信息的負(fù)載均衡;等應(yīng)用層信息的負(fù)載均衡;七層的負(fù)載均衡,就是在四層的基礎(chǔ)上,再考慮應(yīng)用層的特征,比七層的負(fù)載均衡,就是在四層的基礎(chǔ)上,再考慮應(yīng)用層的特征,比如同一個如同一個WEB服務(wù)器的負(fù)載均衡,除了根據(jù)

3、服務(wù)器的負(fù)載均衡,除了根據(jù)VIP加加80端口辨別是否端口辨別是否需要處理的流量,還可根據(jù)七層的需要處理的流量,還可根據(jù)七層的URL、瀏覽器類別、語言來決定、瀏覽器類別、語言來決定是否要進(jìn)行負(fù)載均衡。是否要進(jìn)行負(fù)載均衡。l 負(fù)載均衡策略l 負(fù)載均衡算法負(fù)載均衡策略l 基于DNS的負(fù)載均衡。 l 基于反向代理的負(fù)載均衡。 l 基于特定服務(wù)器軟件的負(fù)載均衡。 l 基于NAT的負(fù)載均衡。 l 基于CDN的負(fù)載均衡。 基于DNS的負(fù)載均衡 實(shí)現(xiàn)原理: 一個域名綁定多個IP,通過DNS服務(wù)中的隨機(jī)域名解析來實(shí)現(xiàn) ?;贒NS的負(fù)載均衡 優(yōu)點(diǎn): 實(shí)現(xiàn)簡單、實(shí)施容易、成本低、適用于大多數(shù)TCP/IP應(yīng)用 ?;?/p>

4、于DNS的負(fù)載均衡 問題: 一旦某個服務(wù)器出現(xiàn)故障,即使修改了DNS設(shè)置,還是要等待足夠的時間(刷新時間)才能發(fā)揮作用,在此期間保存了故障服務(wù)器地址的客戶計算機(jī)將不能正常訪問服務(wù)器。 缺陷: DNS負(fù)載均衡無法得知服務(wù)器之間的差異,它不能做到為性能較好的服務(wù)器多分配請求,也不能了解到服務(wù)器的當(dāng)前狀態(tài),甚至?xí)霈F(xiàn)客戶請求集中在某一臺服務(wù)器上的偶然情況。 基于反向代理的負(fù)載均衡 實(shí)現(xiàn)原理: 通過正則映射將請求重定向到內(nèi)容服務(wù)器?;诜聪虼淼呢?fù)載均衡 優(yōu)點(diǎn): 自帶高速緩沖,可減輕內(nèi)容服務(wù)器壓力,提速網(wǎng)絡(luò)訪問效率 ?;诜聪虼淼呢?fù)載均衡 問題: 針對每一次代理,代理服務(wù)器就必須打開兩個連接,一個對

5、外,一個對內(nèi),因此在并發(fā)連接請求數(shù)量非常大的時候,代理服務(wù)器的負(fù)載也就非常大了,在最后代理服務(wù)器本身可能會成為服務(wù)的瓶頸。 缺陷: 反向代理是處于OSI參考模型第七層應(yīng)用的,所以就必須為每一種應(yīng)用服務(wù)專門開發(fā)一個反向代理服務(wù)器,這樣就限制了反向代理負(fù)載均衡技術(shù)的應(yīng)用范圍,現(xiàn)在一般都用于對web服務(wù)器的負(fù)載均衡?;谔囟ǚ?wù)器軟件的負(fù)載均衡 實(shí)現(xiàn)原理: 利用網(wǎng)絡(luò)協(xié)議的重定向功能來實(shí)現(xiàn) 。基于特定服務(wù)器軟件的負(fù)載均衡 優(yōu)點(diǎn): 服務(wù)可定制,可依據(jù)底層服務(wù)器的性能及實(shí)況進(jìn)行負(fù)載調(diào)控?;谔囟ǚ?wù)器軟件的負(fù)載均衡 問題: 需要改動軟件,成本較高。基于NAT的負(fù)載均衡 實(shí)現(xiàn)原理: 將一個外部IP地址映射為

6、多個內(nèi)部IP地址?;贜AT的負(fù)載均衡 優(yōu)點(diǎn): 比較完善的負(fù)載均衡技術(shù),均衡算法也較靈活,如隨機(jī)選擇、最少連接數(shù)及響應(yīng)時間等來分配負(fù)載。 基于NAT的負(fù)載均衡 問題: 伸縮能力有限,當(dāng)服務(wù)器結(jié)點(diǎn)數(shù)目過多時,調(diào)度器本身有可能成為系統(tǒng)的新瓶頸 ?;贑DN的負(fù)載均衡 實(shí)現(xiàn)原理: 通過在現(xiàn)有的Internet中增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)“邊緣”,使用戶可以就近取得所需的內(nèi)容 ?;贑DN的負(fù)載均衡 優(yōu)點(diǎn): 用戶訪問就近服務(wù)器,提高訪問速度。負(fù)載均衡算法l 輪詢算法。 l Hash散列算法。 l 最少鏈接算法。 l 最快鏈接算法。 l 加權(quán)算法。 l 動態(tài)反饋算法。 輪詢

7、算法 實(shí)現(xiàn)原理: 每一次把來自用戶的請求輪流分配給內(nèi)部中的服務(wù)器,從1開始,直到N(內(nèi)部服務(wù)器個數(shù)),然后重新開始循環(huán)。輪詢算法 優(yōu)點(diǎn): 簡潔,無狀態(tài)調(diào)度 。 缺點(diǎn): 輪詢調(diào)度算法假設(shè)所有服務(wù)器的處理性能都相同,不關(guān)心每臺服務(wù)器的當(dāng)前連接數(shù)和響應(yīng)速度。當(dāng)請求服務(wù)間隔時間變化比較大時,輪詢調(diào)度算法容易導(dǎo)致服務(wù)器間的負(fù)載不平衡。 輪詢算法 適用: 服務(wù)器組中的所有服務(wù)器都有相同的軟硬件配置并且平均服務(wù)請求相對均衡的情況。 Hash散列算法l MD5。 l 一致性Hash算法。 l 各種經(jīng)典Hash算法。 l 自定義Hash算法。 最少鏈接算法 實(shí)現(xiàn)原理: 將請求分配至當(dāng)前鏈接數(shù)最少的服務(wù)器。二、二

8、、 web服務(wù)器的負(fù)載均衡web服務(wù)器負(fù)載均衡的兩個問題服務(wù)器負(fù)載均衡的兩個問題會話的同步會話的同步應(yīng)用的同步應(yīng)用的同步會話的同步會話的同步會話的同步會話的同步無需會話的同步的偽集群無需會話的同步的偽集群 該種方式下,當(dāng)用戶發(fā)出第一個該種方式下,當(dāng)用戶發(fā)出第一個request后,負(fù)載均衡器后,負(fù)載均衡器動態(tài)的把該用戶分配到某個節(jié)點(diǎn),并記錄該節(jié)點(diǎn)的動態(tài)的把該用戶分配到某個節(jié)點(diǎn),并記錄該節(jié)點(diǎn)的jvm路由,以后該用戶的所有路由,以后該用戶的所有request都會被綁定這個都會被綁定這個jvm路路由,用戶只會與該由,用戶只會與該server發(fā)生交互,這種策略被稱為粘發(fā)生交互,這種策略被稱為粘性性ses

9、sion(session sticky)。 該方法的優(yōu)點(diǎn)是響應(yīng)速度快,多個節(jié)點(diǎn)之間無須通信。該方法的優(yōu)點(diǎn)是響應(yīng)速度快,多個節(jié)點(diǎn)之間無須通信。缺點(diǎn)也很明顯,某個缺點(diǎn)也很明顯,某個node死掉以后,它負(fù)責(zé)的所有用戶死掉以后,它負(fù)責(zé)的所有用戶都會丟失都會丟失session應(yīng)用同步應(yīng)用同步采用共享文件系統(tǒng)采用共享文件系統(tǒng) NFS、SSHFSSSHFS安裝配置安裝配置安裝安裝:#如果是如果是ubuntu apt-get install sshfs#如果是如果是Redhat yum install fuse-sshfsSSHFS命令選項(xiàng)命令選項(xiàng)SSHFS options: -p PORT equivale

10、nt to -o port=PORT -C equivalent to -o compression=yes #啟用壓縮啟用壓縮,建議配上建議配上 -F ssh_configfile specifies alternative ssh configuration file #使用非默認(rèn)的使用非默認(rèn)的ssh配置文件配置文件 -1 equivalent to -o ssh_protocol=1 #不要用啊不要用啊 -o reconnect reconnect to server #自動重連自動重連 -o delay_connect delay connection to server -o ssh

11、fs_sync synchronous writes -o no_readahead synchronous reads (no speculative readahead) #提前預(yù)讀提前預(yù)讀 -o sshfs_debug print some debugging information -o cache=BOOL enable caching yes,no (default: yes) #能緩存目錄結(jié)構(gòu)之類的信息能緩存目錄結(jié)構(gòu)之類的信息 -o cache_timeout=N sets timeout for caches in seconds (default: 20) -o cache_

12、X_timeout=N sets timeout for stat,dir,link cacheSSHFS命令選項(xiàng)命令選項(xiàng) -o workaround=LIST colon separated list of workarounds none no workarounds enabled all all workarounds enabled norename fix renaming to existing file (default: off) nonodelaysrv set nodelay tcp flag in sshd (default: off) notruncate fix t

13、runcate for old servers (default: off) nobuflimit fix buffer fillup bug in server (default: on) -o idmap=TYPE user/group ID mapping, possible types are: #文件權(quán)限文件權(quán)限uid/gid映射關(guān)系映射關(guān)系 none no translation of the ID space (default) user only translate UID of connecting userSSHFS命令選項(xiàng)命令選項(xiàng)-o ssh_command=CMD ex

14、ecute CMD instead of ssh -o ssh_protocol=N ssh protocol to use (default: 2) #肯定要肯定要2的的 -o sftp_server=SERV path to sftp server or subsystem (default: sftp) -o directport=PORT directly connect to PORT bypassing ssh -o transform_symlinks transform absolute symlinks to relative -o follow_symlinks follo

15、w symlinks on the server -o no_check_root dont check for existence of dir on server -o password_stdin read password from stdin (only for pam_mount) -o SSHOPT=VAL ssh options (see man ssh_config)編輯編輯SSHFS啟動腳本啟動腳本/etc/init.d/sshfs#!/bin/bashcase $1 instart)echo KWemis2010 |sshfs -o transform_symlinks

16、-o follow_symlinks root0:/usr/local/projz_zs /usr/local/project -o password_stdin -o nonempty;stop)umount /usr/local/project;restart)$0 stop/bin/sleep 10$0 start;*)echo Usage: sshfs start|stop|restartexit 1esac三、三、 NGINX配置Nginx的主配置文件 Nginx的主配置文件為nginx.conf.此文件在nginx的安裝目錄下.如果你的nginx的安裝目錄是/

17、usr/local/nginx,那么nginx.conf就在/usr/local/nginx/下nginx.conf文件結(jié)構(gòu)文件結(jié)構(gòu)events.http. server . .#user nobody;#指定使用的用戶指定使用的用戶worker_processes 1;開啟的進(jìn)程數(shù),一般設(shè)置開啟的進(jìn)程數(shù),一般設(shè)置1-5#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;定義錯誤日志,以及記錄的日志等級定義錯誤日志,以及記錄的日志等級#pid logs/nginx.p

18、id;定義定義pid文件位置文件位置Nginx的主配置文件nginx.conf文件結(jié)構(gòu)文件結(jié)構(gòu)events.http. server . .Nginx的主配置文件events use ; #Nginx支持如下處理連接的方法支持如下處理連接的方法(I/O復(fù)用方法),這些方法可以通過復(fù)用方法),這些方法可以通過use指令指定指令指定# use kqueue | rtsig | epoll | select | poll ; #每個進(jìn)程最大連接數(shù)(最大連接每個進(jìn)程最大連接數(shù)(最大連接=連接數(shù)連接數(shù)x進(jìn)程數(shù))進(jìn)程數(shù)) #worker_connections 51200; nginx.conf文件結(jié)構(gòu)文

19、件結(jié)構(gòu)events.http. server . .nginx.conf文件結(jié)構(gòu)文件結(jié)構(gòu)events.http. server . .Nginx壓縮輸出配置 Nginx使用gzip壓縮技術(shù),這種技術(shù)可以壓縮文件至原來的30%甚至更小。IE、FireFox、Opera、Chrome等大多瀏覽器都支持解析gzip過的頁面.Gzip指令用于http之間如下http gzip on; gzip_min_length 1k; gzip_buffer 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain applica

20、tion/x-javascript text/css application/xml; gzip_vary on;#accpet_encoding gzipNginx的虛擬主機(jī)配置虛擬主機(jī)把一臺運(yùn)行在因特網(wǎng)上的服務(wù)器主機(jī)劃分成多“虛擬”的主機(jī)。每個虛擬主機(jī)都具有獨(dú)立的域名和Internet服務(wù)器(WWW,FTP,EMAIL)功能。利用虛擬主機(jī),不用為每個要運(yùn)行的網(wǎng)站提供一臺單獨(dú)的Nginx服務(wù)器或單獨(dú)運(yùn)行一組Nginx進(jìn)程。虛擬主機(jī)提供了在同一臺服務(wù)器上、同一組Nginx進(jìn)程上運(yùn)行多個網(wǎng)站的功能。每段server就是一個虛擬主機(jī),如果要配置多個虛擬主機(jī),只需配置多個server段即可。http

21、 server listen 80 default; server_name _*; access_log logs/access.log default; location / index index.html index.htm; root /data0/htdocs/htdocs/; #location #server#httpnginx.conf如何配置虛擬主機(jī)配置虛擬主機(jī)的分類 基于配置IP的虛擬主機(jī) 基于配置域名的虛擬主機(jī)http #第一臺虛擬主機(jī) server#監(jiān)聽的IP和端口 listen 3 80; #主機(jī)名稱 server_name 192.168.8

22、.43;#訪問日志存放路徑 access_log logs/access_log combined; location / #默認(rèn)首頁文件 index index.html index.htm; #html文件存放路徑 root /data0/htdocs/server1; 注:listen可以不寫IP只寫端口,意思是監(jiān)聽本機(jī)的所有80端口基于配置IP的虛擬主機(jī)http #第一臺虛擬主機(jī) server #監(jiān)聽的端口 listen 80; #主機(jī)名 server_name ; #日志存放路徑 access_log logs/sub_mygogo_com.log combined; locatio

23、n / #默認(rèn)首頁文件 index index.html index.html; #工程存放目錄 root /data0/htdocs/; 基于配置域名的虛擬主機(jī)四、四、 NGINX 模塊解析內(nèi)核模塊配置示例user nobody;worker_processes 4;#error_log /opt/nginx_logs/error.log;#error_log /opt/nginx_logs/error.log notice;#error_log /opt/nginx_logs/error.log info;pid logs/nginx.pid;worker_rlimit_nofile 65

24、535;內(nèi)核模塊設(shè)置工作的進(jìn)程數(shù)(可設(shè)置為可用cpu的數(shù)量)。 語法:worker_processes number默認(rèn)值: 1上下文: main指定錯誤日志的文件和錯誤級別。 語法:error_log file debug | info | notice | warn | error | crit 默認(rèn)值: $prefix/logs/error.log上下文: http,server,location定義一個worker進(jìn)程可以同時處理的文件數(shù)量。 語法:worker_rlimit_nofile limit默認(rèn)值: OS默認(rèn)上下文: main事件模塊事件模塊配置示例。events use e

25、poll; worker_connections 65535;指定事件響應(yīng)模式。語法:use type默認(rèn)值: 在編譯時指定上下文: events設(shè)置每個worker進(jìn)程所能處理的連接數(shù)。語法:worker_connections number默認(rèn)值: 1024上下文: eventsHTTP內(nèi)核模塊配置范例http includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout 65;gzipoff;upstream backup server:8010;server127

26、.0.0.1:8011;keepalive10;HTTP內(nèi)核模塊server listen:80;server_;if ($http_user_agent MSIE) rewrite (.*)$ /msie/$1 break;location / configurationAHTTP內(nèi)核模塊location /images/ if ($request_method = POST) proxy_pass http:/backup;configurationBlocation /purge(/.*) allow;denyall;HTTP內(nèi)核模塊為HTTP服務(wù)

27、器提供配置上下文。 語法:http . 默認(rèn)值: 上下文: main開始設(shè)置虛擬主機(jī)。 語法:server . 默認(rèn)值: 上下文: http為某個請求URI(路徑)建立配置。語法:location = | | * | uri . location name . 默認(rèn)值: 上下文: server, locationHTTP內(nèi)核模塊計算指定的condition的值。語法:if (condition) . 默認(rèn)值: 上下文: server, location 停止處理當(dāng)前這一輪的rewrite指令集。語法:break;默認(rèn)值: 上下文: server, location, if停止處理并返回指定co

28、de給客戶端。語法:return code text; return code URL; return URL;默認(rèn)值: 上下文: server, location, ifHTTP內(nèi)核模塊匹配條件變量名;如果變量值為空或者是以“0”開始的字符串,則條件為假;使用“=”和“!=”運(yùn)算符比較變量和字符串;使用“”(大小寫敏感)和“*”(大小寫不敏感)運(yùn)算符匹配變量和正則表達(dá)式。正則表達(dá)式可以包含匹配組,匹配結(jié)果后續(xù)可以使用變量$1.$9引用。如果正則表達(dá)式中包含字符“”或者“;”,整個表達(dá)式應(yīng)該被包含在單引號或雙引號的引用中。使用“-f”和“!-f”運(yùn)算符檢查文件是否存在;使用“-d”和“!-d”

29、運(yùn)算符檢查目錄是否存在;使用“-e”和“!-e”運(yùn)算符檢查文件、目錄或符號鏈接是否存在;使用“-x”和“!-x”運(yùn)算符檢查可執(zhí)行文件; 正則正則匹配.xlsxHTTP內(nèi)核模塊定義將要被作為默認(rèn)頁的文件。語法:index file .;默認(rèn)值: index index.html; 上下文: http, server, location為請求設(shè)置根目錄 。語法: root path;默認(rèn)值: root html; 上下文: http, server, location, if in location 定義指定路徑的替換路徑。語法: alias path;默認(rèn)值: 上下文: locationHTTP

30、內(nèi)核模塊設(shè)置虛擬主機(jī)名。語法:server_name name .;默認(rèn)值: server_name ;上下文: server設(shè)置客戶端的長連接在服務(wù)器端保持的最長時間。語法:keepalive_timeout timeout header_timeout;默認(rèn)值: keepalive_timeout 75s;上下文: http, server, location 為指令錯誤定義顯示的URI 。語法:error_page code . =response uri;默認(rèn)值: 上下文: http, server, location, if in locationHTTP內(nèi)核模塊內(nèi)嵌變量$arg_n

31、ame,請求行中的name參數(shù)。$args,請求行中參數(shù)字符串。$binary_remote_addr,客戶端IP地址的二進(jìn)制形式,長度總是4字節(jié)。$body_bytes_sent,nginx返回給客戶端的字節(jié)數(shù),不含響應(yīng)頭。$bytes_sent,nginx返回給客戶端的字節(jié)數(shù)(1.3.8, 1.2.5)。$connection,連接的序列號(1.3.8, 1.2.5)。$content_length,“Content-Length”請求頭的值。$content_type,“Content-Type”請求頭的值。$cookie_name,名為name的cookie。$document_roo

32、t,當(dāng)前請求的root指令或alias指令的配置值。$document_uri,與$uri相同。$host,“Host”請求頭的值,如果沒有該請求頭,則為與請求對應(yīng)的虛擬主機(jī)的首要主機(jī)名。HTTP內(nèi)核模塊$hostname,機(jī)器名稱。$http_name,任意請求頭的值;變量名的后半部為轉(zhuǎn)化為小寫并且用下劃線替代橫線后的請求頭名稱。$https,如果連接是SSL模塊,返回“on”,否則返回空字符串。$is_args,如果請求行帶有參數(shù),返回“?”,否則返回空字符串。$limit_rate,允許設(shè)置此值來限制連接的傳輸速率。$msec,當(dāng)前時間,單位是秒,精度是毫秒。(1.3.9, 1.2.6)

33、$nginx_version,nginx版本號。$pid,worker進(jìn)程的PID。$query_string,與$args相同。$realpath_root,按root指令或alias指令算出的當(dāng)前請求的絕對路徑。其中的符號鏈接都會解析成真是文件路徑。$remote_addr,客戶端IP地址。$remote_port,客戶端端口。$remote_user,為基本用戶認(rèn)證提供的用戶名。HTTP內(nèi)核模塊$request,完整的原始請求行。$request_body,請求正文。在由proxy_pass指令和 fastcgi_pass指令處理的路徑中, 這個變量值可用。$request_body_f

34、ile,請求正文的臨時文件名。處理完成時,臨時文件將被刪除。 如果希望總是將請求正文寫入文件,需要開啟client_body_in_file_only。 如果在被代理的請求或FastCGI請求中傳遞臨時文件名,就應(yīng)該禁止傳遞請求正文本身。 使用proxy_pass_request_body off指令 和fastcgi_pass_request_body off指令 分別禁止在代理和FastCGI中傳遞請求正文。$request_completion,請求完成時返回“OK”,否則返回空字符串。$request_filename,基于root指令或alias指令,以及請求URI,得到的當(dāng)前請求的

35、文件路徑。$request_method,HTTP方法,通常為“GET”或者“POST”。$request_time,請求處理的時間,單位為秒,精度是毫秒(1.3.9, 1.2.6);請求處理時間從由客戶端接收到第一個字節(jié)開始計算。$request_uri,完整的原始請求行(帶參數(shù))。HTTP內(nèi)核模塊$scheme,請求協(xié)議類型,為“http”或“https”。$sent_http_name,任意的響應(yīng)頭字段的值。 變量名的后半部為轉(zhuǎn)化為小寫并且用下劃線替代橫線后的響應(yīng)頭名稱。$server_addr,接受請求的服務(wù)器地址。為計算這個值,通常需要進(jìn)行一次系統(tǒng)調(diào)用。為了避免系統(tǒng)調(diào)用,必須指定li

36、sten指令 的地址,并且使用bind參數(shù)。$server_name,接受請求的虛擬主機(jī)的首要主機(jī)名。$server_port,接受請求的虛擬主機(jī)的端口。$server_protocol,請求協(xié)議,通常為“HTTP/1.0”或“HTTP/1.1”。$status,響應(yīng)狀態(tài)碼。$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space,客戶端TCP連接的信息,在支持套接字選項(xiàng)TCP_INFO的系統(tǒng)中可用。$uri,當(dāng)前請求規(guī)范化以后的URI。變量$uri的值可能隨請求的處理過程而改變。 比如,當(dāng)進(jìn)行內(nèi)部跳轉(zhuǎn)時,或者使用

37、默認(rèn)頁文件。Log模塊模塊配置實(shí)例log_format main $remote_addr - $remote_user $time_local $request $status $bytes_sent $http_referer $http_user_agent $gzip_ratio;access_log /spool/logs/nginx-access.log main buffer=32k;為訪問日志設(shè)置路徑,格式和緩沖區(qū)大小。語法: access_log path format buffer=size; access_log off;默認(rèn)值: access_log logs/acce

38、ss.log combined; 上下文: http, server, location, if in location, limit_except 指定日志的格式。語法: log_format name string .;默認(rèn)值: log_format combined .; 上下文: httpProxy模塊配置范例proxy_temp_path /date/nginx/proxy_temp 1 2;proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=ng_cache:400m inactive=1d max_size=60g;lo

39、cation / proxy_set_headerHost$host;proxy_set_headerConnection“”;proxy_http_version1.1;proxy_cache_valid302 5m;proxy_cache_valid200 20d; proxy_cache_key$scheme$host$request_uri;proxy_cache ng_cache;proxy_passhttp:/localhost:8000;重新定義或者添加發(fā)往后端服務(wù)器的請求頭。語法: proxy_set_header field value;默認(rèn)值: proxy_set_head

40、er Host $proxy_host;proxy_set_header Connection close; 上下文: http, server, location設(shè)置代理使用的HTTP協(xié)議版本。語法: proxy_http_version 1.0 | 1.1;默認(rèn)值: proxy_http_version 1.0; 上下文: http, server, location設(shè)置后端服務(wù)器的協(xié)議和地址。語法: proxy_pass URL;默認(rèn)值: 上下文: location, if in location, limit_exceptProxy模塊設(shè)置緩存的路徑和其他參數(shù)。語法:proxy_cac

41、he_path path levels=levels keys_zone=name:size inactive=time max_size=size loader_files=number loader_sleep=time loader_threshold=time;默認(rèn)值: 上下文: http指定用于頁面緩存的共享內(nèi)存。語法: proxy_cache zone | off;默認(rèn)值: proxy_cache off; 上下文: http, server, locationProxy模塊為不同的響應(yīng)狀態(tài)碼設(shè)置不同的緩存時間。語法:proxy_cache_valid code . time;默認(rèn)

42、值: 上下文: http, server, location定義如何生成緩存的鍵。語法:proxy_cache_key string;默認(rèn)值: proxy_cache_key $scheme$proxy_host$request_uri;上下文: http, server, location設(shè)置響應(yīng)被緩存的最小請求次數(shù)。語法:proxy_cache_min_uses number;默認(rèn)值: proxy_cache_min_uses 1;上下文: http, server, locationProxy模塊Rewrite模塊配置范例/多目錄轉(zhuǎn)成參數(shù)if ($host * (.*)/.domain/

43、.com) set $sub_name $1; rewrite /sort/(/d+)/?$ /index.php?act=sort&cid=$sub_name&id=$1 last; /目錄對換rewrite /(/d+)/(.+)/ /$2?id=$1 last; /在用戶使用ie的使用重定向到/nginx-ie目錄下。if ($http_user_agent MSIE) rewrite (.*)$ /nginx-ie/$1 break; Rewrite模塊如果指定的正則表達(dá)式能匹配URI,此URI將被replacement參數(shù)定義的字符串改寫。rewrite指令按其在配置

44、文件中出現(xiàn)的順序執(zhí)行。語法:rewrite regex replacement flag;默認(rèn)值: 上下文:server, location, if可選的flag參數(shù)可以是其中之一:last:停止執(zhí)行當(dāng)前這一輪的ngx_http_rewrite_module指令集,然后查找匹配改變后URI的新location;break:停止執(zhí)行當(dāng)前這一輪的ngx_http_rewrite_module指令集;redirect:在replacement字符串未以“http:/”或“https:/”開頭時,使用返回狀態(tài)碼為302的臨時重定向;permanent:返回狀態(tài)碼為301的永久重定向。Map模塊配置范例

45、map $uri $new defaulthttp:/ $uri $myvalue /aa/mapped_aa;/aa/(?.*)$/mapped_bb/$suffix;Map模塊變量設(shè)置的映射表。映射表由兩列組成,匹配模式和對應(yīng)的值。語法:map string $variable . 默認(rèn)值: 上下文: http這個指令也支持三個特殊參數(shù)。default value:如果源變量值沒有匹配到任何變量,則設(shè)置一個默認(rèn)值作為結(jié)果。 當(dāng)沒有設(shè)置 default,將會用一個空的字符串作為默認(rèn)的結(jié)果。hostnames:允許用前綴或者后綴掩碼指定域名作為源變量值。include file:包含一個或者多

46、個存有映射值的文件。Upstream模塊配置范例upstream backend server weight=5; server :8080 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; server :8080 backup; keepalive 16;定義一組服務(wù)器語法:upstream name . 默認(rèn)值: 上下文: httpUpstream模塊定義服務(wù)器的地址address和其他參數(shù)parameters。語法:server address parameters;默認(rèn)值: 上下文: upstream可

47、定義參數(shù):weight=number。設(shè)定服務(wù)器的權(quán)重,默認(rèn)是1。max_fails=number。設(shè)定Nginx與服務(wù)器通信的嘗試失敗的次數(shù)。fail_timeout=time。設(shè)定統(tǒng)計失敗嘗試次數(shù)的時間段,默認(rèn)是10秒。backup。標(biāo)記為備用服務(wù)器。down。標(biāo)記服務(wù)器永久不可用,可以跟ip_hash指令一起使用。激活對上游服務(wù)器的連接進(jìn)行緩存。語法:keepalive connections;默認(rèn)值: 上下文: upstream Access模塊配置范例location / deny ;allow /24;allow /16;

48、allow 2001:0db8:/32;deny all;Access模塊允許指定的網(wǎng)絡(luò)地址訪問語法:allow address | CIDR | all;默認(rèn)值: 上下文: http, server, location, limit_except拒絕指定的網(wǎng)絡(luò)地址訪問語法:deny address | CIDR | all;默認(rèn)值: 上下文: http, server, location, limit_exceptFastCGI模塊配置范例upstream _fcgi server:9000 weight=8;server:9001 weight=8;lo

49、cation .*.php?$ #fastcgi_pass unix:/dev/shm/fcgi.sock;#fastcgi_pass :9000;fastcgi_pass _fcgi;include fastcgi.conf;fastcgi_buffer_size 128k;fastcgi_buffers 4 128k;fastcgi_connect_timeout 1800;FastCGI模塊指定FastCGI服務(wù)器監(jiān)聽端口與地址。語法:fastcgi_pass fastcgi-server 默認(rèn)值:none 上下文:http, server, location 指定一些

50、傳遞到FastCGI服務(wù)器的參數(shù)。語法:fastcgi_param parameter value默認(rèn)值: 上下文:http, server, locationfastcgi.conf指定同F(xiàn)astCGI服務(wù)器的連接超時時間,這個值不能超過75秒。語法:fastcgi_connect_timeout time 默認(rèn)值:fastcgi_connect_timeout 60 上下文:http, server, location 五、五、 NGINX負(fù)載均衡NGINX負(fù)載均衡負(fù)載均衡Nginx的負(fù)載均衡是一個基于內(nèi)容和應(yīng)用的七層交換負(fù)載均衡的實(shí)現(xiàn)的負(fù)載均衡是一個基于內(nèi)容和應(yīng)用的七層交換負(fù)載均衡的實(shí)現(xiàn)

51、優(yōu)點(diǎn):優(yōu)點(diǎn):1、高并發(fā)連接:官方測試能夠支撐、高并發(fā)連接:官方測試能夠支撐5萬并發(fā)連接,在實(shí)際生產(chǎn)環(huán)境中跑到萬并發(fā)連接,在實(shí)際生產(chǎn)環(huán)境中跑到23萬并發(fā)連接數(shù)。萬并發(fā)連接數(shù)。2、內(nèi)存消耗少:在、內(nèi)存消耗少:在3萬并發(fā)連接下,開啟的萬并發(fā)連接下,開啟的10個個Nginx 進(jìn)程才消耗進(jìn)程才消耗150M內(nèi)內(nèi)存(存(15M*10=150M)。)。3、配置文件非常簡單:風(fēng)格跟程序一樣通俗易懂。、配置文件非常簡單:風(fēng)格跟程序一樣通俗易懂。4、成本低廉:、成本低廉:Nginx為開源軟件,可以免費(fèi)使用。而購買為開源軟件,可以免費(fèi)使用。而購買F5 BIG-IP、NetScaler等硬件負(fù)載均衡交換機(jī)則需要十多萬至

52、幾十萬人民幣。等硬件負(fù)載均衡交換機(jī)則需要十多萬至幾十萬人民幣。5、支持、支持Rewrite重寫規(guī)則:能夠根據(jù)域名、重寫規(guī)則:能夠根據(jù)域名、URL的不同,將的不同,將 HTTP 請求分請求分到不同的后端服務(wù)器群組。到不同的后端服務(wù)器群組。6、內(nèi)置的健康檢查功能:如果、內(nèi)置的健康檢查功能:如果 Nginx Proxy 后端的某臺后端的某臺 Web 服務(wù)器宕機(jī)服務(wù)器宕機(jī)了,不會影響前端訪問。了,不會影響前端訪問。7、節(jié)省帶寬:支持、節(jié)省帶寬:支持 GZIP 壓縮,可以添加瀏覽器本地緩存的壓縮,可以添加瀏覽器本地緩存的 Header 頭。頭。8、穩(wěn)定性高:用于反向代理,宕機(jī)的概率微乎其微。、穩(wěn)定性高:

53、用于反向代理,宕機(jī)的概率微乎其微。9、支持熱部署:不間斷服務(wù)進(jìn)行更新。、支持熱部署:不間斷服務(wù)進(jìn)行更新。Nginx負(fù)載均衡 Nginx 負(fù)載均衡基礎(chǔ)知識nginx的upstream目前支持4種方式的分配1)、輪詢(默認(rèn)) 每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動剔除。 2)、weight 指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。 3)、ip_hash 每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。 4)、fair(第三方) 按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間

54、短的優(yōu)先分配。Nginx負(fù)載均衡示例upstream backend#定義負(fù)載均衡設(shè)備的Ip及設(shè)備狀態(tài) server :9090 down; server 2:8080 weight=2 ; server 3:6060 max_fails=3 fail_timeout=30s; server 14:7070 backup;server location / proxy_pass http:/backend; Upstream可對后端服務(wù)器進(jìn)行健康檢查。a) down 表示當(dāng)前的server暫時不參與負(fù)載b) weight 默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大。c) max_fails :在fail_timeout時間內(nèi)對后臺服務(wù)器請求失敗的次數(shù) d) fail_timeout:max_fails次失敗后,暫停的時間。e) backup: 其它所有的非bac

溫馨提示

  • 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

提交評論