HAproxy 企業(yè)應(yīng)用,TCP/HTTP動靜分離
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)專業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!
HAProxy 的是一個免費的、開源的的tcp/http反向代理工具、負載均衡器,是一個企業(yè)非常快速和可靠的安全的解決方案,提供高可用性、高并發(fā)性,負載均衡和代理對TCP和基于HTTP的應(yīng)用程序。它特別適用于流量非常高的網(wǎng)站。它已成為事實上的標(biāo)準(zhǔn)開源負載均衡器,現(xiàn)在隨大多數(shù)主流 Linux發(fā)行版一起提供,在互聯(lián)網(wǎng)領(lǐng)域應(yīng)用也是非常廣泛,受歡迎的第三方工具。
在企業(yè)實際應(yīng)用環(huán)境中,往往會根據(jù)業(yè)務(wù)請求將相關(guān)不同請求跳轉(zhuǎn)到指定的后端服務(wù)器,比如客戶靜態(tài)資源請求交給后端靜態(tài)資源服務(wù)器處理,php請求交給后端動態(tài)資源Apache服務(wù)進行處理,jsp請求交給后端動態(tài)資源tomcat服務(wù)進行處理,即業(yè)務(wù)上的應(yīng)用請求分離,我們這里可以通過haproxy完全可以利用acl匹配規(guī)則實現(xiàn)這一目的,以實現(xiàn)動靜分離效果;除了haproxy外,其實還可以通過nginx的acl規(guī)則也可以完全實現(xiàn),不過這些強大的工具往往是在Linux服務(wù)器上面跑才能發(fā)揮最佳性能,其實這些東西安裝和配置非常簡單,只需要有Linux基礎(chǔ),懂得一些Linux基礎(chǔ)的命令就完全可以實現(xiàn)強大的功能,我也是在 《Linux 就該這么學(xué)》 這本樹入門Linux,非常適合于初學(xué)者。
現(xiàn)在好多企業(yè)購買負載均衡器硬件設(shè)備,其實這些硬件設(shè)備都是通過潛入軟件來實現(xiàn)的,可能性能還沒有那么好,haproxy實現(xiàn)tcp和http負載均衡非常靠譜的,我們企業(yè)現(xiàn)在入口幾十萬的并發(fā),在前端部署幾天Linux服務(wù)器安裝haproxy完全毫無壓力的,而且效果非常明顯,開始沒有用到haproxy的時候用戶一直反饋訪問非常卡,因為開始是直接訪問Windows服務(wù)器,這樣不安全并且給業(yè)務(wù)服務(wù)器壓力也非常大,還有可能導(dǎo)致業(yè)務(wù)直接奔潰。Haproxy用戶負載均衡在Linux服務(wù)器上面跑還是非常好的,會話速率快、會話并發(fā)高、數(shù)據(jù)轉(zhuǎn)化率快這些都是haproxy的一些性能上面的優(yōu)勢。
下面我們通過一個簡單的案例來實現(xiàn)HAproxy動靜分離效果 ,需求如下:
1 、靜態(tài)頁面的請求發(fā)送到 web1;
2 、動態(tài)頁面的請求發(fā)送到 web2。
一. haproxy實現(xiàn)應(yīng)用動靜分離
Haproxy動靜分離案例拓撲圖
haproxy 部署前注意事項:
(1)操作系統(tǒng)版本: centos 7.4(64位)
(2)功能角色及服務(wù)器ip相關(guān)信息:
角色名稱 |
ip信息 |
haproxy server |
eth0:172.51.96.233/24 && eth2:192.168.3.22/24 |
static server |
eth2:192.168.3.24/24 |
php server |
eth2:192.168.3.9/24 |
tomcat server |
eth2:192.168.3.9/24 |
二、操作部署
1 、官網(wǎng)下載haproxy-1.8.9.tar.gz安裝包(需要 上墻);
# wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.9.tar.gz
2 、創(chuàng)建haproxy運行用戶
# groupadd -r haproxy
# useradd -g haproxy -M -s /sbin/nologin haproxy
3 、源碼編譯安裝haproxy:
# tar zxvf haproxy-1.8.9.tar.gz
# cd haproxy-1.8.9/
# make TARGET=linux2628 PREFIX=/usr/local/haproxy
# make install PREFIX=/usr/local/haproxy
注意:TARGET=Linux31 是通過uname -a 來查看Linux內(nèi)核版本的,kernel 大于2.6.28的用:TARGET=linux2628
# cd /usr/local/haproxy/
[root@web-3-22 haproxy]# ll
total 0
drwxr-xr-x 3 root root 21 May 23 15:56 doc
drwxr-xr-x 2 root root 21 May 23 15:56 sbin
drwxr-xr-x 3 root root 17 May 23 15:56 share
4 、yum安裝:
[root@web-3-22 haproxy]# yum install haproxy.x86_64
[root@web-3-22 haproxy]# mkdir etc
[root@web-3-22 haproxy]# cd etc/
5 、haproxy配置
[root@web-3-22 etc]# vim haproxy.cfg
global
maxconn 500000 # Max simultaneous connections from an upstream server
spread-checks 5 # Distribute health checks with some randomness
chroot /usr/local/haproxy
daemon
nbproc 2
user haproxy
group haproxy
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
description haproxy server
defaults
log global
mode http
maxconn 10000
option httplog
option httpclose
option dontlognull
option forwardfor except 127.0.0.0/8
retries 3
option redispatch
balance roundrobin
timeout http-request 10s
timeout queue 1m
timeout client 1m
timeout server 1m
listen adimin_stats
bind-process 1
mode http
stats enable
stats hide-version
bind :8888
stats uri /admin?stats
stats realm Haproxy\ Statistics
stats auth hadmin:yhXV2WAbybXd1euzEXbEADAe
stats refresh 30s
stats admin if TRUE
listen www
bind *:80
maxconn 50000
mode http
log global
option httplog
option httpclose
option forwardfor
log global
default_backend default # 設(shè)置默認訪問資源頁面
# 定義當(dāng)請求的內(nèi)容是靜態(tài)內(nèi)容時(圖片、視頻、js、css、html),將請求轉(zhuǎn)交給靜態(tài)資源服務(wù)器的acl規(guī)則
acl url_static path_beg -i /static /images /img /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js .html
acl host_static hdr_beg(host) -i img. video. download. ftp. imags. videos.
# 定義當(dāng)請求的內(nèi)容是php內(nèi)容時,將請求轉(zhuǎn)交給php動態(tài)資源服務(wù)器的acl規(guī)則
acl url_php path_end -i .php
# 定義當(dāng)請求的內(nèi)容是.jsp或.do內(nèi)容時,將請求轉(zhuǎn)交給tomcat動態(tài)資源服務(wù)器的acl規(guī)則
acl url_jsp path_end -i .jsp .do
# 引用haproxy的acl匹配規(guī)則
use_backend static_pool if url_static or host_static
use_backend php_pool if url_php
use_backend tomcat_pool if url_jsp
# 定義后端backend server
backend static_pool
option httpchk GET /index.html
server static1 192.168.3.24:80 cookie id1 check inter 2000 rise 2 fall 3
backend php_pool
option httpchk GET /index.php
server php1 192.168.3.9:80 cookie id1 check inter 2000 rise 2 fall 3
backend tomcat_pool
option httpchk GET /index.jsp
server tomcat1 192.168.3.9:8080 cookie id2 check inter 2000 rise 2 fall 3
#<----------------------default site for listen and frontend------------------------------------>
backend default
mode http
option httpchk GET /index.html
server default 192.168.3.24:80 cookie id1 check inter 2000 rise 2 fall 3 maxconn 5000
# chown -R haproxy:haproxy /usr/local/haproxy/
# service haproxy start
# 啟動haproxy報錯,可能是端口沖突導(dǎo)致的,檢查haproxy listen配置,我這配置文件監(jiān)聽的是80端口,此主機的80端口被httpd占用了,停止httpd服務(wù),再次啟動haproxy就正常了;
# netstat -ntlp|grep haproxy
6 、服務(wù)狀態(tài)
service haproxy start // 啟動服務(wù)
service haproxy stop // 停止服務(wù)
service haproxy status // 服務(wù)狀態(tài)
chkconfig haproxy on // 開機啟動
三、測試haproxy效果如下:
1 、默認頁面:
http://192.168.3.22
2 、測試html靜態(tài)資源
http://192.168.3.22/index.html
3 、測試php動態(tài)資源
http://192.168.3.22/index.php
4 、測試jsp動態(tài)資源
http://192.168.3.22/index.jsp
5 、haproxy后臺監(jiān)控頁面
http://192.168.3.22:8888/admin?stats
hadmin/yhXV2WAbybXd1euzEXbEADAe

文章名稱:HAproxy企業(yè)應(yīng)用,TCP/HTTP動靜分離
分享URL:http://chinadenli.net/article20/jggcjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、小程序開發(fā)、面包屑導(dǎo)航、App設(shè)計、虛擬主機、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)