HAproxy企業應用,TCP/HTTP動靜分離
HAproxy 企業應用,TCP/HTTP動靜分離
HAProxy 的是一個免費的、開源的的tcp/http反向代理工具、負載均衡器,是一個企業非常快速和可靠的安全的解決方案,提供高可用性、高併發性,負載均衡和代理對TCP和基於HTTP的應用程式。它特別適用於流量非常高的網站。它已成為事實上的標準開源負載均衡器,現在隨大多數主流 發行版一起提供,在網際網路領域應用也是非常廣泛,受歡迎的第三方工具。
在企業實際應用環境中,往往會根據業務請求將相關不同請求跳轉到指定的後端伺服器,比如客戶靜態資源請求交給後端靜態資源伺服器處理,php請求交給後端動態資源Apache服務進行處理,jsp請求交給後端動態資源tomcat服務進行處理,即業務上的應用請求分離,我們這裡可以透過haproxy完全可以利用acl匹配規則實現這一目的,以實現動靜分離效果;除了haproxy外,其實還可以透過nginx的acl規則也可以完全實現,不過這些強大的工具往往是在Linux伺服器上面跑才能發揮最佳效能,其實這些東西安裝和配置非常簡單,只需要有Linux基礎,懂得一些Linux基礎的命令就完全可以實現強大的功能,我也是在 這本樹入門Linux,非常適合於初學者。
現在好多企業購買負載均衡器硬體裝置,其實這些硬體裝置都是透過潛入軟體來實現的,可能效能還沒有那麼好,haproxy實現tcp和http負載均衡非常靠譜的,我們企業現在入口幾十萬的併發,在前端部署幾天Linux伺服器安裝haproxy完全毫無壓力的,而且效果非常明顯,開始沒有用到haproxy的時候使用者一直反饋訪問非常卡,因為開始是直接訪問Windows伺服器,這樣不安全並且給業務伺服器壓力也非常大,還有可能導致業務直接奔潰。Haproxy使用者負載均衡在Linux伺服器上面跑還是非常好的,會話速率快、會話併發高、資料轉化率快這些都是haproxy的一些效能上面的優勢。
下面我們透過一個簡單的案例來實現HAproxy動靜分離效果 ,需求如下:
1 、靜態頁面的請求傳送到 web1;
2 、動態頁面的請求傳送到 web2。
一. haproxy實現應用動靜分離
Haproxy動靜分離案例拓撲圖
haproxy 部署前注意事項:
(1)作業系統版本: centos 7.4(64位)
(2)功能角色及伺服器ip相關資訊:
角色名稱 |
ip資訊 |
haproxy server |
eth0:172.51.96.233/24 && eth1:192.168.3.22/24 |
static server |
eth1:192.168.3.24/24 |
php server |
eth1:192.168.3.9/24 |
tomcat server |
eth1:192.168.3.9/24 |
二、操作部署
1 、官網下載haproxy-1.8.9.tar.gz安裝包(需要 上牆);
# wget
2 、建立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核心版本的,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 # 設定預設訪問資源頁面
# 定義當請求的內容是靜態內容時(圖片、影片、js、css、html),將請求轉交給靜態資源伺服器的acl規則
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.
# 定義當請求的內容是php內容時,將請求轉交給php動態資源伺服器的acl規則
acl url_php path_end -i .php
# 定義當請求的內容是.jsp或.do內容時,將請求轉交給tomcat動態資源伺服器的acl規則
acl url_jsp path_end -i .jsp .do
# 引用haproxy的acl匹配規則
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報錯,可能是埠衝突導致的,檢查haproxy listen配置,我這配置檔案監聽的是80埠,此主機的80埠被httpd佔用了,停止httpd服務,再次啟動haproxy就正常了;
# netstat -ntlp|grep haproxy
6 、服務狀態
service haproxy start // 啟動服務
service haproxy stop // 停止服務
service haproxy status // 服務狀態
chkconfig haproxy on // 開機啟動
三、測試haproxy效果如下:
1 、預設頁面:
2 、測試html靜態資源
http://192.168.3.22/index.html
3 、測試php動態資源
4 、測試jsp動態資源
5 、haproxy後臺監控頁面
http://192.168.3.22:8888/admin?stats
hadmin/yhXV2WAbybXd1euzEXbEADAe
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2656185/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- haproxy + varnish 實現動靜分離
- 11,nginx動靜分離Nginx
- Nginx實現動靜分離Nginx
- 013.Nginx動靜分離Nginx
- 乾貨 | CDN搭配OSS最佳實踐 ——搭建動靜態分離的應用架構應用架構
- 企業級反向代理 HAProxy
- Nginx+Tomcat實現動靜分離NginxTomcat
- 網際網路動靜分離架構架構
- haproxy+keepalived+mycat+mysql (讀寫分離)MySql
- Nginx—tomcat負載均衡動靜分離群集NginxTomcat負載
- nginx+tomcat動靜態資源分離NginxTomcat
- 企業應用架構的基本模式之分離介面應用架構模式
- Nginx 動靜分離與負載均衡的實現Nginx負載
- nginx反向代理目錄及動靜分離公羊seoNginx
- Nginx + Tomcat 動靜分離實現負載均衡NginxTomcat負載
- 網路分層TCP/IP 與HTTPTCPHTTP
- Nginx 高階篇(一)反向代理實現動靜分離Nginx
- nginx反向代理負載均衡與動靜頁面分離Nginx負載
- 美國小企業的移動應用現狀
- BPR-推動企業成功應用ERP
- 知物由學 | 輿情資料清洗“動”“靜”分離方案
- 大輝談-備戰雙十一之動靜分離實戰
- Nginx作為動靜分離、快取與負載均衡初探Nginx快取負載
- Nginx使用篇:實現負載均衡、限流與動靜分離Nginx負載
- SOA與企業應用
- http tcpHTTPTCP
- RPA正在成為企業應用標配,企業應該如何進行自動化?
- 使用 haproxy 進行 TCP 負載均衡TCP負載
- oracle 靜態資料壓縮分離Oracle
- 15 分鐘實現企業級應用無損上下線
- .NET企業應用安全開發動向-概覽
- Solid - 將資料與應用分離Solid
- Nginx+Tomcat負載均衡,動靜分離群集部署解析NginxTomcat負載
- Orchestrator+Proxysql 實現自動導換+應用透明讀寫分離SQL
- HAProxy、Nginx 配置 HTTP/2 完整指南NginxHTTP
- Websphere安裝、企業部署應用 【應用案例】Web
- nginx服務企業應用Nginx
- 企業WIFI安全應用方案WiFi