高效多用的群集-Haproxy搭建Web集群
生活随笔
收集整理的這篇文章主要介紹了
高效多用的群集-Haproxy搭建Web集群
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Haproxy搭建Web集群
- Haproxy搭建Web集群
- 一、Haproxy前言
- 二、常見的Web集群調度器
- 三、Haproxy應用分析
- 四、Haproxy高性能負載均衡主要優點
- 五、四層與七層負載均衡的主要區別
- 六、LVS和Haproxy應用分析
- 七、Nginx和LVS和Haproxy有什么區別
- 1、Nginx
- 2、LVS
- 3、Haproxy
- 八、Haproxy搭建 Web 群集
- 環境搭建
- 1、部署haproxy服務器(192.168.172.10)
- 2、編譯安裝Nginx服務器(192.168.172.20、192.168.172.30)
- 3、啟動Haproxy服務(192.168.172.10)
- 4、測試
- 九、日志定義
- 總結
Haproxy搭建Web集群
一、Haproxy前言
- HAProxy是一個使用c語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基于TcP和HrrP的應用程序代理。
- HAProxy特別適用于那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。EAPrcxp運行在當前的硬件上,完全可以支持數以萬計的并發連接。并且它的運行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web服務器不被暴露到網絡上。
- HAProxy實現了一種事件驅動,單一進程模型,此模型支持非常大的并發連接數。多進程或多線程模型受內存限制系統調度器限制以及無處不在的鎖限制,很少能處理數千并發連接。事件驅動模型因為在有更好的資源和時間管理的用戶空間(User-Space)實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是為什么他們必須進行優化以使每個CPU時間片(Cycle)做更多的工作。
- 包括GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和 Tuenti在內的知名網站,及亞馬遜網絡服務系統都使用了HAProxy。
二、常見的Web集群調度器
- 目前常見的Web集群調度器分為軟件和硬件
軟件通常使用開源的LVS、Haproxy、Nginx - LVS性能最好,但是搭建相對復雜;Nginx的upstream模塊支持集群功能,但是對集群節點健康檢查功能不強,高并發沒有Haproxy好
- 硬件一般使用的比較多的是F5,也有很多人使用梭子魚、綠盟等國內產品
三、Haproxy應用分析
- LVS在企業應用中抗負載能力很強,但存在不足
- LVS不支持正則處理,不能實現動靜分離
- 對于大型網站,LVS的實施配置復雜,維護成功相對較高
- Haproxy是一款可提供高可用性、負載均衡、及基于TCP和HTTP應用的代理的軟件
- 適用于負載大的Web站點
- 運行在硬件上可支持數萬計的并發連接的連接請求
四、Haproxy高性能負載均衡主要優點
- Haproxy在負載均衡速度和并發處理上是優于
- NginxHaproxy支持虛擬主機,可以工作在4、7層
- 能夠補充Nginx的一些缺點,比如session的保持、cookie的引導等工作
- 支持url檢測后端的服務器的狀態
- Haproxy可以對Mysql進行負載均衡,對后端的DB節點進行檢測和負載均衡
- 支持很多負載均衡算法,Round-robin(輪詢)、weight-round-robin(加權輪詢)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據cookie)
五、四層與七層負載均衡的主要區別
- 四層負載均衡器是通過分析IP層及TCP/UDP層的流量實現的基于"IP +端口"的負載均衡,主要通過報文的目標地址和端口配合負載均衡算法選擇后端真實服務器,確定是否需要對報文進行修改(根據需求,可能會修改目標地址、源地址、MAc地址等)并將數據轉發至選出的后端真實服務器。
- 七層負載均衡器是基于應用層信息(如URI、Cookies等)的負載均衡。主要依據報文的內容配合負載均衡算法選擇后端真實服務器,然后再分發請求到真實服務器進行處理,也稱"內容交換器"。客戶端與負載均衡器、負載均衡器與后端真實服務器之間會分別建立CP連接。
六、LVS和Haproxy應用分析
- LVS在企業應用中抗負載均衡能力很強,但存在不足
- LVS不支持正則處理(因為是應用層),不能實現動靜分離對于大型網站,LVS的實施配置復雜,維護成本相對較高
- Haproxy是一塊可提供高可用性、負載均衡及基于rCP和HTTP應用的代理軟件特別適合于負載特別大的web站點(可以承受高并發,可與Nginx配合)
- 運行在當前的硬件上可支持數以萬計的并發連接請求
七、Nginx和LVS和Haproxy有什么區別
1、Nginx
- 支持正則
- 只支持基于端口的健康檢查
- 不支持session 的直接保持,但能通過Ip _hash來解決
- 對網絡穩定性要求不高
- 反向代理能力強
- nginx 社區活躍
2、LVS
- 只能基于四層端口轉發
- 在四層做分發作用,抗負載能力強
- 應用范圍廣(幾乎可以對所有應用做負載)
3、Haproxy
- 支持8種負教均衡策略
- 僅做負載均衡軟件使用,在高并發情況下性能優于Nginx
- 支持URL健康檢測、支持session保持
八、Haproxy搭建 Web 群集
實驗所需安裝包 haproxy-1.5.19.tar.gz nginx-1.12.0.tar.gz環境搭建
| Haproxy | CentOS7 | 192.168.172.10 | haproxy-1.5.19.tar.gz |
| Nginx1 | CentOS7 | 192.168.172.20 | nginx-1.12.0.tar.gz |
| Nginx2 | CentOS7 | 192.168.172.30 | nginx-1.12.0.tar.gz |
| 客戶端 | CentOS7 | 192.168.172.40 |
1、部署haproxy服務器(192.168.172.10)
1.關閉防火墻,將安裝Haproxy所需軟件包傳到/opt目錄下并編譯安裝
systemctl stop firewalld setenforce 0cd /opt haproxy-1.5.19.tar.gz yum install -y pcre-devel bzip2-devel gcc gcc-c++ maketar zxvf haproxy-1.5.19.tar.gz cd haproxy-1.5.19/ make TARGET=linux2628 ARCH=x86_64 make install
注意:使用uname -r查看內核,如:2.6.18-371.el5,此時該參數用TARGET=linux26;
kernel大于2.6.28的用TARGET=linux2628
ARCH=x86_64;系統位數
Haproxy服務器配置
mkdir /etc/haproxy cp examples/haproxy.cfg /etc/haproxy/cd /etc/haproxy/ vim haproxy.cfg global#4~5行–修改,配置日志記錄,local0為日志設備,默認存放到系統日志3log /dev/log local0 info log /dev/log local0 notice#log loghost local0 infomaxconn 4096 #最大連接數,需考慮ulimit-n限制#8行–注釋,chroot運行路徑,為該服務自設置的根目錄,一般需將此行注釋掉#chroot /usr/share/haproxyuid 99 #用戶UIDgid 99 #用戶GIDdaemon #守護進程模式defaults log global #定義日志為global配置中的日志定義mode http #模式為httpoption httplog #采用http日志格式記錄日志option dontlognull #不記錄健康檢查日志信息retries 3 #檢查節點服務器失敗次數,連續達到三次失敗,則認為節點不可用redispatch #當服務器負載很高時,自動結束當前隊列處理比較久的連接maxconn 2000 #最大連接數contimeout 5000 #連接超時時間clitimeout 50000 #客戶端超時時間srvtimeout 50000 #服務器超時時間#刪除下面所有listen項–,添加 listen webcluster 0.0.0.0:80 option httpchk GET /test.html #檢查服務器的test.html文件balance roundrobin #負載均衡調度算法使用輪詢算法roundrobinserver inst1 192.168.172.20:80 check inter 2000 fall 3 #定義在線節點server inst2 192.168.172.30:80 check inter 2000 fall 3#--參數說明---------------- balance roundrobin #負載均衡調度算法 #輪詢算法: roundrobin;最小連接數算法: leastconn;來源訪問調度算法: source,類似于nginx的ip_hashcheck inter 2000 #表示haproxy服務器和節點之間的一個心跳頻率 fall 3 #表示連續三次檢測不到心跳頻率則認為該節點失效 若節點配置后帶有""backup"表示該節點只是個備份節點,只有主節點失效該節點才會上。不攜帶"backup",表示為主節點,和其它主節點共同提供服務。
2、編譯安裝Nginx服務器(192.168.172.20、192.168.172.30)
systemctl stop firewalld setenforce 0yum install -y pcre-devel zlib-devel gcc gcc-c++ make useradd -M -s /sbin/nologin nginxcd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/cd nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginxmake && make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx #啟動nginx 服務
192.168.172.20
寫入網頁內容 echo "this is zzz web" > /usr/local/nginx/html/test.html192.168.172.30
寫入網頁內容 echo "this is yyy web" > /usr/local/nginx/html/test.html3、啟動Haproxy服務(192.168.172.10)
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy cd /etc/init.d/ ls chmod +x haproxy chkconfig --add /etc/init.d/haproxy ln -s /usr/local/sbin/haproxy /usr/sbin/haproxyservice haproxy start 或 /etc/init.d/haproxy start4、測試
在客戶端使用瀏覽器打開 http://192.168.172.10/test.html ,不斷刷新瀏覽器測試負載均衡效果
九、日志定義
- 默認haproxy的日志是輸出到系統的syslog中,查看起來不是非常方便,為了更好的管理haproxy的日志,我們在生產環境中一般單獨定義出來。需要將haproxy的info及notice日志分別記錄到不同的日志文件中。
- 需要修改rsyslog配置,為了便于管理。將haproxy相關的配置獨立定義到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog啟動時會自動加載此目錄下的所有配置文件。
總結
Nginx和LVS和Haproxy有什么區別
- 1、Nginx
支持正則
只支持基于端口的健康檢查
不支持session 的直接保持,但能通過Ip _hash來解決
對網絡穩定性要求不高
反向代理能力強
nginx 社區活躍 - 2、LVS
只能基于四層端口轉發
在四層做分發作用,抗負載能力強
應用范圍廣(幾乎可以對所有應用做負載) - 3、Haproxy
支持8種負教均衡策略
僅做負載均衡軟件使用,在高并發情況下性能優于Nginx
支持URL健康檢測、支持session保持
四層與七層負載均衡的主要區別
- 四層負載均衡器是通過分析IP層及TCP/UDP層的流量實現的基于"IP +端口"的負載均衡,主要通過報文的目標地址和端口配合負載均衡算法選擇后端真實服務器,確定是否需要對報文進行修改(根據需求,可能會修改目標地址、源地址、MAc地址等)并將數據轉發至選出的后端真實服務器。
- 七層負載均衡器是基于應用層信息(如URI、Cookies等)的負載均衡。主要依據報文的內容配合負載均衡算法選擇后端真實服務器,然后再分發請求到真實服務器進行處理,也稱"內容交換器"。客戶端與負載均衡器、負載均衡器與后端真實服務器之間會分別建立CP連接。
Haproxy高性能負載均衡主要優點
- Haproxy在負載均衡速度和并發處理上是優于
- NginxHaproxy支持虛擬主機,可以工作在4、7層
- 能夠補充Nginx的一些缺點,比如session的保持、cookie的引導等工作
- 支持url檢測后端的服務器的狀態
- Haproxy可以對Mysql進行負載均衡,對后端的DB節點進行檢測和負載均衡
- 支持很多負載均衡算法,Round-robin(輪詢)、weight-round-robin(加權輪詢)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據cookie)
總結
以上是生活随笔為你收集整理的高效多用的群集-Haproxy搭建Web集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存为什么要两个双通道?速度提升还是系统
- 下一篇: 神奇内存颗粒:学习利器还是灵丹妙药?