国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
nginx+tomcat負載均衡策略

測試環(huán)境均為本地,測試軟件為:

nginx-1.6.0,apache-tomcat-7.0.42-1,apache-tomcat-7.0.42-2,apache-tomcat-7.0.42-3

利用nginx做負載均衡,三臺tomcat做WEB具體業(yè)務(wù)處理。

nginx配置nginx.conf:

#Nginx所用用戶和組,window下不指定  #user  niumd niumd;  #user  nobody;#工作的子進程數(shù)量(通常等于CPU數(shù)量或者2倍于CPU)worker_processes  2;#錯誤日志存放路徑#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#指定pid存放文件#pid		logs/nginx.pid;events {  #使用網(wǎng)絡(luò)IO模型linux建議epoll,F(xiàn)reeBSD建議采用kqueue,window下不指定。    #use epoll;        #允許最大連接數(shù)  worker_connections  1024;}http {  include	   mime.types;  default_type  application/octet-stream;  #定義日志格式   #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  #				  '$status $body_bytes_sent "$http_referer" '  #				  '"$http_user_agent" "$http_x_forwarded_for"';  #access_log  logs/access.log  main;  access_log  logs/access.log;      client_header_timeout  3m;    client_body_timeout	3m;    send_timeout		   3m;       client_header_buffer_size	1k;    large_client_header_buffers  4 4k;      sendfile		on;  tcp_nopush	 on;  tcp_nodelay	 on;    #keepalive_timeout  0;  keepalive_timeout  65;  #gzip  on;  include	gzip.conf;    upstream localhost {      #根據(jù)ip計算將請求分配各那個后端tomcat,許多人誤認為可以解決session問題,其實并不能。      #同一機器在多網(wǎng)情況下,路由切換,ip可能不同          server localhost:18081;      server localhost:18082;      server localhost:18083;     #根據(jù)IP做分配策略    ip_hash;    }     #down 表示單前的server暫時不參與負載   #weight  默認為1.weight越大,負載的權(quán)重就越大。   #max_fails :允許請求失敗的次數(shù)默認為1.當超過最大次數(shù)時,返回proxy_next_upstream 模塊定義的錯誤   #fail_timeout:max_fails 次失敗后,暫停的時間。   #backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。  #nginx 的 upstream目前支持 4 種方式的分配   #1)、輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動剔除。   #2)、weight 指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。   #2)、ip_hash 每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。    #3)、fair(第三方)按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。    #4)、url_hash(第三方)  server {    listen	   80;    server_name  localhost;    #charset koi8-r;    #access_log  logs/host.access.log  main;    location / {       proxy_pass http://localhost;        proxy_redirect			  off;      proxy_set_header			Host $host;      proxy_set_header			X-Real-IP $remote_addr;      proxy_set_header			X-Forwarded-For $proxy_add_x_forwarded_for;      client_max_body_size		10m;	#允許客戶端請求的最大單文件字節(jié)數(shù)        client_body_buffer_size	 128k;	#緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),        proxy_connect_timeout	   90;	#nginx跟后端服務(wù)器連接超時時間(代理連接超時)        proxy_send_timeout		  90;	#后端服務(wù)器數(shù)據(jù)回傳時間(代理發(fā)送超時)        proxy_read_timeout		  90;	#連接成功后,后端服務(wù)器響應(yīng)時間(代理接收超時)        proxy_buffer_size		   4k;	#設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小      proxy_buffers			   4 32k;	#proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的話,這樣設(shè)置        proxy_busy_buffers_size	 64k;	#高負荷下緩沖大小(proxy_buffers*2)        proxy_temp_file_write_size  64k;	#設(shè)定緩存文件夾大小,大于這個值,將從upstream服務(wù)器傳      }    #error_page  404			  /404.html;    # redirect server error pages to the static page /50x.html    #    error_page   500 502 503 504  /50x.html;    location = /50x.html {      root   html;    }    # proxy the PHP scripts to Apache listening on 127.0.0.1:80    #    #location ~ \.php$ {    #	proxy_pass   http://127.0.0.1;    #}    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000    #    #location ~ \.php$ {    #	root		   html;    #	fastcgi_pass   127.0.0.1:9000;    #	fastcgi_index  index.php;    #	fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;    #	include		fastcgi_params;    #}    # deny access to .htaccess files, if Apache's document root    # concurs with nginx's one    #    #location ~ /\.ht {    #	deny  all;    #}  }  # another virtual host using mix of IP-, name-, and port-based configuration  #  #server {  #	listen	   8000;  #	listen	   somename:8080;  #	server_name  somename  alias  another.alias;  #	location / {  #		root   html;  #		index  index.html index.htm;  #	}  #}  # HTTPS server  #  #server {  #	listen	   443 ssl;  #	server_name  localhost;  #	ssl_certificate	  cert.pem;  #	ssl_certificate_key  cert.key;  #	ssl_session_cache	shared:SSL:1m;  #	ssl_session_timeout  5m;  #	ssl_ciphers  HIGH:!aNULL:!MD5;  #	ssl_prefer_server_ciphers  on;  #	location / {  #		root   html;  #		index  index.html index.htm;  #	}  #}}
Tomcat1配置server.xml:
<?xml version='1.0' encoding='utf-8'?><Server port="18001" shutdown="SHUTDOWN"> <Connector port="18081" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="18441" />    <Connector port="18021" protocol="AJP/1.3" redirectPort="18441" />    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  </Service></Server>
Tomcat1配置server.xml:
<?xml version='1.0' encoding='utf-8'?><Server port="18002" shutdown="SHUTDOWN"> <Connector port="18082" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="18442" />    <Connector port="18022" protocol="AJP/1.3" redirectPort="18442" />    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  </Service></Server>
Tomcat3配置server.xml:
<?xml version='1.0' encoding='utf-8'?><Server port="18003" shutdown="SHUTDOWN"> <Connector port="18083" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="18443" />    <Connector port="18023" protocol="AJP/1.3" redirectPort="18443" />    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  </Service></Server>

分別啟動三臺tomcat,訪問到地址依次是:http://localhost:18081;http://localhost:18082;http://localhost:18083

然后啟動nginx,訪問地址是:http://localhost

(cmd下面運行nginx.exe,關(guān)閉cmd下面運行nginx -s stop)

這樣子根據(jù)客戶端IP做負載均衡的同步策略已基本可滿足需求,但是考慮到客戶端多網(wǎng)卡或者客戶端訪問不同的服務(wù)器時產(chǎn)生session不同步的問題,需要使用memcached做session同步策略,后續(xù)我會跟上配置文檔。

附:以下是來自于互聯(lián)網(wǎng)的三中方法:
1、不用session,通過cookie等方式繞過session 。
      貌似這種方式還是會存在問題,假如客戶端禁用cookie怎么辦。
2、應(yīng)用服務(wù)器自行實現(xiàn)共享
    如單點登錄,采用中央認證服務(wù)器;或者memcache來存放后端服務(wù)器需要使用的公共數(shù)據(jù)。我曾經(jīng)就有程序采用本地ehcache+memcache來緩存數(shù)據(jù),其中ehcache緩存一些與他機無關(guān)的數(shù)據(jù),memcache緩存一些公共數(shù)據(jù),但這樣往往也容易出現(xiàn)問題。
3、ip_hash方式解決session共享  
        nginx中的ip_hash技術(shù)能夠?qū)⒛硞€ip的請求定向到同一臺后端,這樣一來這個ip下的某個客戶端和某個后端就能建立起穩(wěn)固的session,ip_hash是在upstream配置中定義的, 配置方式樣例:
upstream backend {  
  server 127.0.0.1:8080 ;  
  server 127.0.0.1:9090 ;  
   ip_hash;  
}  
 ip_hash是容易理解的,但是因為僅僅能用ip這個因子來分配后端,因此ip_hash是有缺陷的,不能在一些情況下使用:
     (1)/ nginx不是最前端的服務(wù)器。ip_hash要求nginx一定是最前端的服務(wù)器,否則nginx得不到正確ip,就不能根據(jù)ip作hash。譬如使用 的是squid為最前端,那么nginx取ip時只能得到squid的服務(wù)器ip地址,用這個地址來作分流是肯定錯亂的。
      (2)/ nginx的后端還有其它方式的負載均衡。假如nginx后端又有其它負載均衡,將請求又通過另外的方式分流了,那么某個客戶端的請求肯定不能定位到同一 臺session應(yīng)用服務(wù)器上。這么算起來,nginx后端只能直接指向應(yīng)用服務(wù)器,或者再搭一個squid,然后指向應(yīng)用服務(wù)器。最好的辦法是用 location作一次分流,將需要session的部分請求通過ip_hash分流,剩下的走其它后端去。
      ( 3) upstream_hash(這種方式?jīng)]有嘗試過)  

下面是從網(wǎng)絡(luò)上整理的關(guān)于nginx與apache的對比:

1、nginx與apache優(yōu)缺點對比

nginx相對于apache的優(yōu)點: 
(1)輕量級,同樣起web 服務(wù),比apache占用更少的內(nèi)存及資源 
(2)抗并發(fā),nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發(fā)下nginx 能保持低資源低消耗高性能 
(3)高度模塊化的設(shè)計,編寫模塊相對簡單 
(4)社區(qū)活躍,各種高性能模塊出品迅速啊 
apache 相對于nginx 的優(yōu)點: 
(1)rewrite:比nginx 的rewrite 強大 
(2)動態(tài)頁面:模塊超多,基本想到的都可以找到 
(3)少bug ,nginx 的bug 相對較多 
(4)超穩(wěn)定 
存在就是理由,一般來說,需要性能的web 服務(wù),用nginx 。如果不需要性能只求穩(wěn)定,那就apache 吧。 后者的各種功能模塊實現(xiàn)得比前者,例如ssl 的模塊就比前者好,可配置項多。這里要注意一點,epoll(freebsd 上是 kqueue )網(wǎng)絡(luò) IO 模型是nginx 處理性能高的根本理由,但并不是所有的情況下都是epoll 大獲全勝的,如果本身提供靜態(tài)服務(wù)的就只有寥寥幾個文 件,apache 的select 模型或許比epoll 更高性能。當然,這只是根據(jù)網(wǎng)絡(luò)IO 模型的原理作的一個假設(shè),真正的應(yīng)用還是需要實測了再說 的。 
2、作為 Web 服務(wù)器:相比 Apache,Nginx 使用更少的資源,支持更多的并發(fā)連接,體現(xiàn)更高的效率,這點 使 Nginx 尤其受到虛擬主機提供商的歡迎。在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯的替代品: Nginx在美國是做虛擬主機生 意的老板們經(jīng)常選擇的軟件平臺之一. 能夠支持高達 50,000 個并發(fā)連接數(shù)的響應(yīng), 感謝Nginx為我們選擇了 epoll and kqueue 作為開發(fā)模型. Nginx 作為負載均衡服務(wù)器: Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M行服務(wù), 也可以支持作為 HTTP代理 服務(wù)器對外進行服務(wù). Nginx采用C進行編寫, 不論是系統(tǒng)資源開銷還是CPU使用效率都比 Perlbal 要好很多. 
作為郵件代理服務(wù)器: Nginx 同時也是一個非常優(yōu)秀的郵件代理服務(wù)器(最早開發(fā)這個產(chǎn)品的目的之一也是作為郵件代理服務(wù)器), Last.fm 描述了成功并且美妙的使用經(jīng)驗. Nginx 是 一個安裝非常的簡單 , 配置文件非常簡潔(還能夠支持perl語法), Bugs 非常少的服務(wù)器: Nginx 啟動特別容易, 并且?guī)缀蹩梢宰龅?7*24不間斷運行,即使運行數(shù)個月也不需要重新啟動. 你還能夠不間斷服務(wù)的情況下進行軟件版本的升級 . 
3、Nginx 配置簡潔, Apache 復(fù)雜 
Nginx 靜態(tài)處理性能比 Apache 高 3倍以上 
Apache 對 PHP 支持比較簡單,Nginx 需要配合其他后端用 
Apache 的組件比 Nginx 多 
現(xiàn)在 Nginx 才是 Web 服務(wù)器的首選 
4、最核心的區(qū)別在于apache是同步多進程模型,一個連接對應(yīng)一個進程;nginx是異步的,多個連接(萬級別)可以對應(yīng)一個進程 
5、nginx處理靜態(tài)文件好,耗費內(nèi)存少.但無疑apache仍然是目前的主流,有很多豐富的特性.所以還需要搭配著來.當然如果能確定nginx就適合需求,那么使用nginx會是更經(jīng)濟的方式. 
apache有先天不支持多核心處理負載雞肋的缺點,建議使用nginx做前端,後端用apache。大型網(wǎng)站建議用nginx自代的集群功能
6、 從個人過往的使用情況來看,nginx的負載能力比apache高很多。最新的服務(wù)器也改用nginx了。而且nginx改完配置能-t測試一下配置有沒有問題,apache重啟的時候發(fā)現(xiàn)配置出錯了,會很崩潰,改的時候都會非常小心翼翼現(xiàn)在看有好多集群站,前端nginx抗并發(fā),后端apache集群, 配合的也不錯。
7、nginx處理動態(tài)請求是雞肋,一般動態(tài)請求要apache去做,nginx只適合靜態(tài)和反向。 
8、從我個人的經(jīng)驗來看,nginx是很不錯的前端服務(wù)器,負載性能很好,在老奔上開nginx,用webbench模擬10000個靜態(tài)文件請求毫不吃力。apache對php等語言的支持很好,此外apache有強大的支持網(wǎng)路,發(fā)展時間相對nginx更久.
9、 Nginx優(yōu)于apache的主要兩點:
(1).Nginx本身就是一個反向代理服務(wù)器 
(2).Nginx支持7層負載均衡;其他的當然,Nginx可能會比 apache支持更高的并發(fā),但是根據(jù)NetCraft的統(tǒng)計,2011年4月的統(tǒng)計數(shù)據(jù),Apache依然占有62.71%,而Nginx是 7.35%,因此總得來說,Aapche依然是大部分公司的首先,因為其成熟的技術(shù)和開發(fā)社區(qū)已經(jīng)也是非常不錯的性能。 
10、你對web server的需求決定你的選擇。大 部分情況下nginx都優(yōu)于APACHE,比如說靜態(tài)文件處理、PHP-CGI的支持、反向代理功能、前端Cache、維持連接等等。在 Apache+PHP(prefork)模式下,如果PHP處理慢或者前端壓力很大的情況下,很容易出現(xiàn)Apache進程數(shù)飆升,從而拒絕服務(wù)的現(xiàn)象。 
11、可以看一下nginx lua模塊:https://github.com/chaoslaw...apache比nginx多的模塊,可直接用lua實現(xiàn)apache是最流行的,why?大多數(shù)人懶得更新到nginx或者學(xué)新事物 
12、對于nginx,我喜歡它配置文件寫的很簡潔,正則配置讓很多事情變得簡單運行效率高,占用資源少,代理功能強大,很適合做前端響應(yīng)服務(wù)器 
13、Apache在處理動態(tài)有優(yōu)勢,Nginx并發(fā)性比較好,CPU內(nèi)存占用低,如果rewrite頻繁,那還是Apache吧
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
nginx upstream 容錯機制 原創(chuàng)
Helloweba
全面了解 Nginx 主要應(yīng)用場景
Windows環(huán)境下,Nginx+tomcat+redis實現(xiàn)web項目集群
Nginx連接JBoss碰到的問題
nginx location、Rewrite、proxy_pass 配置
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服