Apache負載均衡配置


使用 Apache HTTP Server 搭建負載均衡

* 配置方法: *
1. 找到 Apache 安裝目錄下的 conf 目錄下的 httpd.conf 配置文件,進行如下修改:

LoadModule proxy_module modules/mod_proxy.so  
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

#輪詢式負載均衡
<Proxy "balancer://mycluster">
BalancerMember http://taobao.com
BalancerMember http://tmall.com
</Proxy>
ProxyPass "/test" "balancer://mycluster"
ProxyPassReverse "/test" "balancer://mycluster"

  前面三句都是 把一些模塊 load 進來,<Proxy> </Proxy> 里面的語句就是設置負載均衡的 url 地址,例如我這里把請求(負載) 均衡分配到 taobao 和 tmall 兩個 url 上,也就是把請求重定向到 這兩個 url 去,因為是后台的重定向,所以前端地址欄的 url 顯示地址不會改變,所以前端看到的就以為是請求的地址返回的內容,實際后台已經把請求轉交給別的地址(應用)去處理了。如果是前端的重定向,例如 JSP 的重定向,則地址欄也會改變為重定向之后的 url 。后面兩句 ProxyPass 是設置映射關系,這種負載均衡是通過反向代理的方式,關於反向代理的解釋,參考 反向代理為何叫反向代理?–知乎

  這種配置方法使用的是輪詢式負載均衡,也就是把請求輪流地分派給 BalancerMember。有其他更高級的均衡方法,見后文的參考鏈接或自行搜索。

  LoadModule 語句在文件內也可能自帶有,但默認是被注釋掉了,也可取消注釋不新寫一句了 Load 語句。這句話的作用是將所需的模塊(可以理解成代碼塊)導入進來,模塊統一放在 Apache 安裝目錄的 modules 目錄下,若在 modules 目錄中沒有相應的模塊,則會 LoadModule 失敗,修改 httpd.conf 文件后重啟 Apache 失敗,查看 Apache 錯誤日志會報類似 Load Module fail 的 error 。另外, 某些版本的 Apache ,Load balancer Module 同時需要 Load 另外一個 module 進來,若發現某句 LoadModule 語句導致 Apache 無法重啟,很可能就是這個原因,同理通過查看錯誤日志,看還需要 Load 什么其他模塊。其余的重啟失敗的原因同理,可自行去查看 Apache 錯誤日志,看看報的時什么錯誤。

  如果 modules 目錄下沒有響應的 .so 模塊,則需要自行導入,目測Windows下的 Apache 以上三個 modules 都齊全,而 IBM HTTP Server (IBM 定制化的Apache)則可能默認在 modules 目錄下沒有 balancer 模塊,這時去找找 modules 目錄下的 WebSphereCE 目錄,應該就會發現該模塊,直接把它復制到 modules 目錄下即可。

  注意每次修改完該配置文件后,須重啟 Apache 才能生效,若重啟失敗,去查錯誤日志解決error。

  注意要保證每個url都是可以訪問的,否則不會跳轉到該url去,在負載均衡中,如果某個url是不可訪問的(例如機器掛掉了),自然不會把任務分給他。

參考鏈接:
實戰,利用apache來做集群,實現負載均衡


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com