天天看點

基于docker的haproxy搭建測試

haproxy本篇隻做簡單介紹,進行安裝及簡單的測試,深入學習可參考官方文檔https://www.haproxy.org/。

`簡介`
HAProxy是一個使用C語言編寫的自由及開放源代碼軟體,其提供高可用性、負載均衡,以及基于TCP和HTTP的應用程式代理。HAProxy實作了一種事件驅動, 單一程序模型,此模型支援非常大的并發連接配接數。多程序或多線程模型受記憶體限制 、系統排程器限制以及無處不在的鎖限制,很少能處理數千并發連接配接。
`haproxy和nginx對比`
nginx
使用花括号,層級化的配置檔案結構
除了自帶的map和if語句可以實作簡單邏輯,原生支援js/perl腳本,非官方支援lua
除了做負載均衡,還可以做靜态web伺服器,緩存伺服器(haproxy不行)
子產品化,按需編譯,可選第三方的擴充子產品
haproxy
定義和引用,指令式的配置結構
支援acl
做負載均衡比nginx好
提供狀态統計監控頁面
官方支援會話保持,健康檢查等,可媲美硬體F5
不易于擴充,缺乏第三方資源
總結
二者現在都支援http、tcp、udp的負載均衡,nginx采用文檔結構表示配置關系,看起來比較清晰,haproxy采用定義和引用。
nginx的master-works參數,多程序,每個程序單線程多核cpu充分利用;haproxy多線程,單線程可以實作超高性能。
做反向代理方面二者都具超高性能。
           

1、啟動容器

啟動haproxy容器,同時啟動tomcat和apache,用于測試
           
基于docker的haproxy搭建測試

2、進入容器安裝服務

#haproxy
docker exec -it haproxy_haproxy_1 bash
apt update
apt upgrade
apt install haproxy -y
#tocmat
docker exec -it haproxy_tomcat_1 bash
#拷貝安裝包
docker cp jdk-8u141-linux-x64.tar.gz haproxy_tomcat_1:/usr/local/
docker cp apache-tomcat-8.5.41.tar.gz haproxy_tomcat_1:/usr/local/
#安裝
tar xvf jdk-8u141-linux-x64.tar.gz
echo ' export JAVA_HOME=/usr/local/jdk1.8.0_141/' >> /etc/profile
echo ' export JAVA_BIN=/usr/local/jdk1.8.0_141/bin' >> /etc/profile
echo ' export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
echo ' export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
echo ' export JAVA_HOME JAVA_BIN PATH CLASSPATH' >> /etc/profile
source /etc/profile
tar xvf apache-tomcat-8.5.41.tar.gz
#apache
docker exec -it haproxy_apache_1 bash
apt update
apt upgrade
apt install apache2 -y
           

3、配置haproxy

vim /etc/haproxy/haproxy.cfg
#監控狀态頁面配置
listen admin_stats
       bind *:8000                           
       log 127.0.0.1 local0 err
       stats refresh 30s                   
       stats uri /haproxy-status       
       stats realm welcome login    
       stats auth admin:redhat        
       stats hide-version                  
       stats admin if TRUE
#代理配置
frontend test
       bind *:5000
       default_backend test_server
#負載配置
backend test_server
    server test_server1 127.0.0.1:80 check
    server test_server2 127.0.0.1:8080 check
           

4、啟動服務

#haproxy
docker exec -it haproxy_haproxy_1 bash
/etc/init.d/haproxy start
           
基于docker的haproxy搭建測試
#tomcat
docker exec -it haproxy_tomcat_1 bash
/usr/local/apache-tomcat-8.5.41/bin/startup.sh
           
基于docker的haproxy搭建測試
#apache
docker exec -it haproxy_apache_1 bash
/etc/init.d/apache2 start
           
基于docker的haproxy搭建測試

5、監控頁面登入檢視

http://IP:Port/haproxy-status
           
基于docker的haproxy搭建測試

6、測試負載均衡

http://Ip:Port
           

apache

基于docker的haproxy搭建測試

tomcat

基于docker的haproxy搭建測試