Apache負載伺服器

mfsh發表於2017-04-19

Apache
Apache HTTP Server(簡稱Apache)是Apache軟體基金會的一個開放原始碼的網頁伺服器
Apache HTTP伺服器是一個模組化的伺服器
Apache源於NCSAhttpd伺服器它快速、可靠並且可通過簡單的API擴充套件,將Perl/Python等直譯器編譯到伺服器中。


Apache的特性
1.支援最新的HTTP/1.1通訊協議
2.擁有簡單而強有力的基於檔案的配置過程
3.支援通用閘道器介面
4.支援基於IP和基於域名的虛擬主機
5.支援多種方式的HTTP認證
6.整合Perl處理模組
7.整合代理伺服器模組
8.支援實時監視伺服器狀態和定製伺服器日誌
9.支援伺服器端包含指令(SSI)
10.支援安全Socket層(SSL)
11.提供使用者會話過程的跟蹤
12.支援FastCGI
13.通過第三方模組可以支援JavaServlets


Apache負載均衡方式
1 )輪詢均衡策略的配置
[進入Apache的conf目錄,開啟httpd.conf檔案,在檔案的末尾加入:
ProxyPass / balancer://proxy/ #注意這裡以”/”結尾
BalancerMember http://192.168.6.37:6888/
BalancerMember http://192.168.6.38:6888/
]

2) 按權重分配均衡策略的配置
[ProxyPass / balancer://proxy/ #注意這裡以”/”結尾
BalancerMember http://192.168.6.37:6888/ loadfactor=3
BalancerMember http://192.168.6.38:6888/ loadfactor=1
是以請求數作為權重負載均衡的]

3) 權重請求響應負載均衡策略的配置
[ProxyPass / balancer://proxy/ lbmethod=bytraffic #注意這裡以”/”結尾
BalancerMember http://192.168.6.37:6888/ loadfactor=3
BalancerMember http://192.168.6.38:6888/ loadfactor=1
是以流量為權重負載均衡的]


Apache快取
1,基於硬碟檔案的快取
基於硬碟檔案儲存的快取由 mod_disk_cache 模組實現,先看個簡單的配置例子:

把上面的配置加到 Apache 的 httpd.conf 檔案中,如果快取相關的模組都已經編譯進了 Apache 的核心,則無需載入模組,直接就能使用上面的指令。指令的詳細說明如下:
CacheDefaultExpire: 設定快取過期的時間(秒),預設是1小時,只有當快取的文件沒有設定過期時間或最後修改時間時這個指令才會生效
CacheEnable:啟用快取,第1個引數是快取類弄,這裡當然是 disk了,第2個引數是快取路徑,指的是 url 路徑,這裡是快取所有的東西,直接寫上“/”即可,如“/docs”則只快取 /docs 下的所有檔案
CacheRoot:快取檔案所在的目錄,執行 Apache 的使用者(如daemon 或 nobody)要能對其進行讀寫,如果不清楚的話可以直接設定成 777,請手動建立該目錄並設定好訪問許可權
CacheDirLevels:快取目錄的深度,預設是3,這裡設定為5
CacheDirLength:快取目錄名的字元長度,預設是4,這裡設定為5
CacheMaxFileSize 和 CacheMaxFileSize:快取檔案的最大值和最小值(byte),當超過這個範圍時將不再快取,這裡設定為 1M 和 10bytes
基於硬碟檔案儲存的檔案基本上就這些內容,設定好後重啟 Apache 應該就能使用了。一切正常的話,可以在快取目錄下看到 Apache 自動建立的一些目錄和快取的資料檔案。

2,基於記憶體的快取
基於記憶體的快取主要由 mod_mem_cache 模組實現,還是看個簡單的配置吧,這樣比較直觀:-)

簡單說一下上面一些指令的意思:
CacheEnable:啟用快取,使用基於記憶體的方式儲存
MCacheMaxObjectCount:在記憶體中最多能儲存快取物件的個數,預設是1009,這裡設定為20000
MCacheMaxObjectSize:單個快取物件最大為 1M,預設是10000bytes
MCacheMaxStreamingBuffer:在緩衝區最多能夠放置多少的將要被快取物件的尺寸,這裡設定為 65536,該值通常小於100000或 MCacheMaxObjectSize 設定的值
MCacheMinObjectSize:單個快取物件最小為10bytes,預設為1bytes
MCacheRemovalAlgorithm:清除快取所使用的演算法,預設是 GDSF,還有一個是LRU,可以查一下 Apache 的官方文件,上面有些介紹
MCacheSize:快取資料最多能使用的記憶體,單位是 kb,預設是100kb,這裡設定為128M
儲存重啟 Apache 基於記憶體的快取系統應該就能生效了,根據需要可以使基於記憶體的儲存或硬碟檔案的儲存方式一起使用,只要指明不同的URL路徑即可。
3、注意事項
使用快取需要注意如下事項:

要使用快取,必須使用指令 CacheEnable 啟用它,目前可用的快取型別為 disk 或 mem,禁止快取可以使用 CacheDisable,如 CacheDisable /private 待快取的 URL 返回的狀態值必須為: 200、203、300、301 或 410
URL 的請求方式必須是 GET 方式
傳送請求時,頭部中包含 “Authorization: ”的字串時,返回的內容將不會被快取
URL 包含查詢字串,如問號?後的那些東西,除非返回的內容包含“Expires:”,否則不會被快取
如果返回的狀態值是 200,則返回的頭部資訊必須包含以下的一種才會被快取:Etag、Last-Modified、Expires,除非設定了指令 CacheIgnoreNoLastMod On
如果返回內容的頭部資訊“Cache-Control:”中包含“private”,除非設定了指令 CacheStorePrivate On,否則不會被快取
如果返回內容的頭部資訊“Cache-Control:”中包含“no-sotre”,除非設定了指令 CacheStoreNoStore On,否則不會被快取
如果返回內容的頭部資訊“Vary:”中包含了“*”,不會被快取

相關文章