實驗環境:一臺主機提供haproxy、nfs、mariadb,后端2臺apache部署wordpress。
實驗目的:haproxy使得動靜分離、以及開啟stats頁面。
haproxy簡單介紹
負載均衡的解決方案,支持4、7層,特點是單進程模型(可配置為多進程模型)單進程能支持非常大的并發鏈接數量(相比較其他軟件)。
到今天,馬哥課程中的負載均衡方案(lvs、nginx、proxy)已經講完了,就來簡單介紹下自己理解的區別吧,作為一個新手,說錯了不要打我啊(相信很多同學和我一樣也有這種糾結)
lvs如果在http反代的環境中由于本身工作在四層,無法再分配策略上進行詳細調整(最直觀的就是動靜分離),后端服務器的健康狀態檢測(雖然也可以利用ldirector和keepalived彌補,但自身缺陷),只能單存的把自定義的ip或端口,按照規則分發至后端主機,因此他可以實現所有應用的負載均衡。(haproxy和nginx1.10的版本已經穩定支持4層負載均衡,但因為本身工作在內核中,我們應該相信在較高并發下,lvs的能力依然比haproxy和nginx強大),另外對網絡環境的依賴較大。
haproxy和nginx兩樣及其相似,自己也曾在網上看了很多篇關于他們兩差別的,但有幾點也許是因為年代關系還是什么,指出一下錯誤:
1、haproxy彌補了session保持,nginx同樣也支持session保持。
2、haproxy支持四層反代,nginx同樣支持四層反代。
3、nginx不支持url做健康狀態檢測, 其實是支持。
4、haproxy不支持虛擬主機,沒搞懂網上指的一個負載均衡要虛擬主機拿來干嘛,我猜也許想用自身做sorryserver,通過errorfile是能做成sorryserver的。
自己認為他們的區別,nginx可以做靜態資源的緩存,而haproxy有一個狀態的查詢頁,可以直觀的看到后端服務器狀況。
說了那么多,還是來做今天的實驗吧,haproxy已經被收錄在了base源中,插入光盤自己yum安裝即可,安裝完后配置文件/etc/haproxy/haproxy.cfg
給我們的示例配置文件中,一共分為了4端,分別是全局配置段,和proxy配置段,在全局配置中主要定義的是日志、啟動haproxy的身份,啟動模式、最大并發鏈接…等等
在proxy配置段又分為了default、frontend、backend三段,在一些指令上如果后兩段沒有特殊定義就會繼承默認配置段,不是所有配置段都可以使用相同的指令,詳情查看官方文檔
http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4
這里是我開啟的狀態頁分別是:
bind:可以理解為監聽的ip和端口
stats enable:開啟stats頁
stats uri:訪問stats的url
stats realm:需要認證時,認證框里面的提示信息
stats auth:認證的賬號和密碼 (賬號:密碼)
stats refresh:打開頁面后每秒刷新間隔
stats admin:是否開啟管理功能
整體頁面就是這樣了~
接著我們就來配我們的動靜分離吧~
剛剛經過測試,發現不管是discuz還是wordpress,都不能直接嘗試動靜分離,至少在基于nfs共享上,實現不了,以哪個IP去創建的數據庫,靜態的圖片就會在自動跳轉到創建的IP上去加載。。。我也是醉了。就換個簡單的方法測試吧 以php結尾的發送給一個主機,其他未定義的發送給另一個主機。
然后在web的根目錄上分別創建了index.html 和105上創建了index.php
105的主機上創建的index.html是111,106上創建的是222,接著我們就可以打開網頁測試了?。。。?/span>
可以看到請求index.html確實是轉發到了106上,請求index.php被轉發到了105上!
原創文章,作者:N24_Ghost,如若轉載,請注明出處:http://www.www58058.com/69275
作業完成的不錯,對于多款負載均衡軟件有對比,這部分很贊。