成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

緩存角度的Apache負載均衡

網絡 網絡優化 網絡運維
本文對apache負載均衡,基于反向代理的配置進行了詳細的介紹。文章之初,我們給出的是網上的一般攻略,之后又做了修改,供大家參考。

Apache負載均很設置很多情況下都是根據tomacat來完成的,現在這片文章介紹的是關于反向代理實現apache負載均衡的配置過程,首先我們來參考一下前人的操作過程,根據那個方案來修改我們的實際操作。

下基于反向代理實現Apache負載均衡

初步設想:

考慮到對不同的 App Server 而言, 實現 Session 復制的配置各不相同(通常是需要配置集群), 因此從通用的角度, 覺得使用 session sticky 方式實現的負載均衡比較方便(沒有看到有資料說 lighttpd 能夠實現 session sticky, 所以決定使用 Apache 試試)

環境準備:

1、下載安裝 Apache(不多廢話了)

2、準備兩個運行同樣程序的 Web 服務器,這里使用的是 Tomcat 5.5, 并使用一個 jsp 文件作為測試文件

3、下載安裝 JMeter ( jakarta-jmeter-2.2), 用于壓力測試, 驗證apache負載均衡的效果

測試jsp文件說明:

1、顯示當前運行的服務器的 IP 地址及端口號, 這樣從返回的頁面就能夠知道是運行在哪一個 Web 服務器上的了

2、統計每個客戶端(不同的 session)向同一臺服務器發出請求的次數, 通過這個計數可以驗證是否實現了 session sticky

3、通過 clear 請求參數(即 .../test.jsp?clear=1)清除請求次數的計數結果, 以便進行下一次測試

4、模擬 JSESSIONID +jvmRoute 的機制, 自行實現了一個 STICK_PORT_TOKEN 的 Cookie, 直接使用不同服務器的 HTTP 端口號作為 route#p#

Apache負載均衡配置:

簡單的反向代理

  1. ProxyRequests Off  
  2. <Proxy *> 
  3. Order deny,allow  
  4. Allow from all  
  5. </Proxy> 
  6. ProxyPass /1 http://localhost:8080/test  
  7. #ProxyPassReverse /1 http://localhost:8080/test  
  8. ProxyPass /2 http://localhost:18080/test  
  9. #ProxyPassReverse /2 http://localhost:18080/test  
  10. # 2)非 stickysession 的 balance  
  11. ProxyPass /3 balancer://non-sticky-cluster nofailover=On 
  12. <Proxy balancer://non-sticky-cluster> 
  13. BalancerMember http://localhost:8080/test  
  14. BalancerMember http://localhost:18080/test smax=10 
  15. </Proxy> 
  16. # 3)stickysession 的 balance  
  17. ProxyPass /4 balancer://sticky-cluster stickysession=STICK_PORT_TOKEN nofailover=On 
  18. <Proxy balancer://sticky-cluster> 
  19. BalancerMember http://localhost:8080/test route=8080 
  20. BalancerMember http://localhost:18080/test route=18080 loadfactor=2 
  21. </Proxy> 


這個配置分為3個部分, 包括了 1)簡單的反向代理, 2)非 session sticky 的 load balance, 以及 3)session sticky 的 load balance 三種方式的配置(這里假設兩個 Tomcat 服務器的 HTTP 服務被配置在 8080 和 18080 端口), 其中第 2) 和 3) 的配置中 "nofailover=On" 適合于沒有 session 復制的情況下, 這種情況下, 如果其中一臺 HTTP 服務器出錯, 那么原來分配在這個出錯機器上的瀏覽器客戶端不會被自動轉移到另外的服務器上, 必須重新啟動瀏覽器才能將請求分配到另外一臺服務器上去.#p#

使用 JMeter 測試結果:

使用 JMeter 對 "3)session sticky 的 load balance" 的效果進行測試, 通過壓力測試的方式, 檢查兩臺 Tomcat 服務器被分配到的請求數量(注意如果重復測試, 在下一次測試開始之前請對每個 Tomcat 服務器執行 .../test.jsp?clear=1 的請求, 清除上一次的計數結果).

從測試結果可見: 50個線程中有21個被分配在 8080 端口的服務器上, 29個則被分配到 18080 端口的服務器; 另外, 所有的 session 請求次數都是 20 次, 說明 session sticky 達到了預期的效果.

補充一下對 PHP 的 session sticky 配置問題:

對于使用 PHP 的朋友可能會在這里遇到一些問題,也許是因為 Apache 文檔的誤導,大家可能會照著上面的例子把 JSESSIONID 換為 PHPSESSID,但是這樣是不行的!如果你有時間看看代碼 modules/proxy/mod_proxy_balancer.c lines 195 to 210 也許你會發現一些問題,Apache 實際上在找一個類似于“balancer.www1"的 SESSIONID,我們可以配置 TOMCAT 來實現這種形式的 SESSIONID 但是 PHP 卻沒有這個功能。但是,幸好我們能通過 Apache 的 Rewrite 功能來做這個事情。

首先,假設我們后臺有兩臺機器 www1.james.com 和 www2.james.com 我們先為他們配置 VirtualHost :

  1. RewriteEngine on  
  2. RewriteRule .* - [CO=BALANCEID:balancer.www{1或者2}:.james.com] 

然后,我們在前臺做apache負載均衡的機器上(假設為www.james.com)配置如下:

  1. ProxyPass /bt balancer://sticky-cluster lbmethod=byrequests stickysession=BALANCEID nofailover=On 
  2. ProxyPassReverse /bt balancer://sticky-cluster  
  3. <Proxy balancer://sticky-cluster> 
  4. BalancerMember http://www2.james.com/6d/session_test.php route=www2 
  5. BalancerMember http://www1.james.com/session_test.php route=www1 
  6. </Proxy> 

重啟 Apache 大功告成,我們訪問 http://mail.james.com/bt 發現 .james.com 的 COOKIE 中除了 PHPSESSID 還出現了 BALANCEID,到這里我們已經成功了一半;然后,我們可以到apache 的 site_error log 中看到以下信息(設置 LogLevel debug):#p#

第一次登錄:

  1. BALANCER: Found value (null) for stickysession BALANCEID  
  2. Entering byrequests for BALANCER (balancer://sticky-cluster) 

第二次登錄:

  1. Found value balancer.www2 for stickysession BALANCEID  
  2. Found route www2 

之后,該用戶的 session 就不會跳到 www1 上去了,直到 cookie 或 session 過期。這樣,我們就達到了“stick session"的目的了,真是形象啊,哈哈:)

以下是一些關于緩存的配置步驟摘要:

創建/var/www/proxy,設置apache服務所用戶可寫,mod_proxy配置樣例:反相代理緩存+緩存架設前臺的www.example.com反向代理后臺的www.backend.com的8080端口服務。修改:httpd.conf

  1. <VirtualHost *> 
  2. ServerName www.example.com  
  3. ServerAdmin admin@example.com  
  4. # reverse proxy setting  
  5. ProxyPass / http://www.backend.com:8080/  
  6. ProxyPassReverse / http://www.backend.com:8080/  
  7. # cache dir root  
  8. CacheRoot "/var/www/proxy"  
  9. # max cache storage  
  10. CacheSize 50000000  
  11. # hour: every 4 hour  
  12. CacheGcInterval 4  
  13. # max page expire time: hour  
  14. CacheMaxExpire 240  
  15. # Expire time = (now - last_modified) * CacheLastModifiedFactor  
  16. CacheLastModifiedFactor 0.1  
  17. # defalt expire tag: hour  
  18. CacheDefaultExpire 1  
  19. # force complete after precent of content retrived: 60-90%  
  20. CacheForceCompletion 80  
  21. CustomLog /usr/local/apache/logs/dev_access_log combined  
  22. </VirtualHost> 

 

責任編輯:佟健 來源: 互聯網
相關推薦

2010-04-22 17:53:36

Apache負載均衡

2010-05-05 19:00:54

apache負載均衡

2010-05-04 14:06:15

Apache負載均衡

2010-04-22 18:27:37

Apache負載均衡

2010-05-07 12:32:04

Apachetomact負載均衡

2010-05-04 13:27:27

apache負載均衡

2012-10-19 09:57:43

Apache負載均衡集群功能

2019-11-07 08:49:26

Apache Dubb架構負載均衡

2010-04-28 12:11:39

網絡負載均衡

2011-04-18 10:04:24

apachetomcat

2010-05-05 22:40:21

apache服務器負載均衡

2017-07-03 08:08:25

負載均衡分類

2009-07-22 10:25:37

2011-12-02 22:51:46

Nginx負載均衡

2018-11-07 10:12:37

2010-05-06 15:55:40

2021-04-21 14:56:28

負載均衡高并發優化技術架構

2012-04-02 15:43:45

nginxtomcat

2010-04-25 19:14:32

Radware負載均衡

2010-05-06 16:55:11

Python負載均衡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日夜夜天天干 | 天天操夜夜看 | 久久色视频 | 国产精品日韩一区 | 中文字幕国产精品 | 久久精品久久久 | 久久婷婷香蕉热狠狠综合 | 精品国产一区二区国模嫣然 | 亚洲免费视频网址 | 国产在线1区| 国产日韩一区二区三区 | 久久久久国产一区二区三区四区 | av官网在线 | 日韩欧美国产一区二区 | 91精品国产一区二区在线观看 | 国产专区在线 | 午夜在线电影网 | 欧洲成人午夜免费大片 | 中文字幕欧美日韩一区 | 一区二区三区视频在线 | 久久久久无码国产精品一区 | 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区 | 精品久久国产视频 | 一级做a爰片性色毛片16美国 | 欧洲视频一区 | 天天干国产 | 在线观看免费av网 | 成人在线一区二区 | 中文字幕国产精品 | 欧美中文字幕 | 久久精品99国产精品 | 伊人91在线 | 国产福利在线看 | 国产精品视频一区二区三区不卡 | 国产一在线观看 | 亚洲91视频 | 91久久精品一区二区二区 | 中文字幕在线播放不卡 | 丝袜久久 | 一本色道精品久久一区二区三区 |