haproxy負載均衡記錄

jopen 10年前發布 | 29K 次閱讀 HAproxy

haproxy是一款輕量級的高可用、支持負載均衡和反向代理的軟件,我們可以用它實現很多功能

haproxy的安裝很簡單,但是前提是你的linux有gcc環境,簡單記錄一下

wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
tar zxvf haproxy-1.4.8.tar.gz
cd haproxy-1.4.8
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

這里要注意的是自己的linux版本,使用uname -a命令可以查看

安裝好之后的路徑是在

/usr/local/haproxy

接下來是配置文件

  

global
       log 127.0.0.1 local0
       maxconn 4096
       user root
       group root
       daemon

defaults
       log global
       mode tcp
       option tcplog
       option dontlognull
       retries 3
       option redispatch
       maxconn 2000
       contimeout 4000
       clitimeout 50000
       srvtimeout 30000
       stats enable
       stats scope .

frontend mysql_cluster
       bind *:3306
       default_backend mysql_cluster_back

backend mysql_cluster_back
       mode tcp
       option tcpka
       option mysql-check
       balance roundrobin
       server db01_1.1.1.1 192.168.50.1:3306 weight 1 check port 3306 
       server db02_2.2.2.2 192.168.50.130:3306 weight 100 check port 3306


listen stats 0.0.0.0:8899
       mode http
       option httpclose
       balance roundrobin
       stats uri /admin-status
       stats realm Haproxy\ Statistics
       stats auth admin:admin

 這是一個簡單的配置文件,global和defaults基本都可以不變,重要的是frontend 和backend

 關于frontend,我是這樣理解的,相當于聲明了一個名為:mysql_cluster的函數,這個函數監聽了運行haproxy機器的3306端口,然后將這個端口的請求交給了backend名為mysql_cluster_back的模塊來處理,這里要申明代理的協議tcp,我這里是需要做mysql的集群,所以是tcp,如果是webserver的集群,那么可以寫成http

balance 是負載均衡的策略,對應的策略可以google

 server db01_1.1.1.1 192.168.50.1:3306 weight 1 check port 3306 
 server db02_2.2.2.2 192.168.50.130:3306 weight 100 check port 3306

這兩句是定義實際的mysql服務器信息,我這邊是兩臺,可以定義權重,check port 3306是對兩臺服務器mysql的端口進行健康檢查,還有其他參數,不詳解。

listen stats 0.0.0.0:8899
       mode http
       option httpclose
       balance roundrobin
       stats uri /admin-status
       stats realm Haproxy\ Statistics
       stats auth admin:admin

這個模塊主要是定義了haproxy的一個監控界面信息,綁定8899端口,通過瀏覽器可以訪問haproxy的監控界面

在上面兩臺機器上開啟mysql服務,然后在本機保存配置文件到安裝目錄下

haproxy的執行命令是

 

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

然后可以在瀏覽器中輸入:

http://192.168.50.129:8899/admin-status

查看機器情況,如果一切正常,則都是綠色

這個時候,連接mysql節點

mysql -h192.168.50.129 -utest-ptest -P3306

注意兩個真實的mysql服務器必須具有相同的用戶名和密碼,才能達到負載均衡的效果

然后你會發現,haproxy會輪的在兩臺真實服務器之間轉換,注意192.168.50.129 這臺機器并沒有安裝mysql


總得來說,haproxy可以對http以及tcp請求進行反向代理和負載均衡,對于webserver、數據庫都可以用很低的代價實現最大的效果,但是實際的生產環境中,要負載很多,可以和keepalived一起使用,使用虛擬ip的方式,來避免單點故障。

 

來自:http://my.oschina.net/u/123965/blog/188577

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!