haproxy的安裝很簡單,可是前提是你的linux有gcc環境,簡單記錄一下mysql
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命令能夠查看linux
安裝好以後的路徑是在web
/usr/local/haproxy
接下來是配置文件redis
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
sql
關於frontend,我是這樣理解的,至關於聲明瞭一個名爲:mysql_cluster的函數,這個函數監聽了運行haproxy機器的3306端口,而後將這個端口的請求交給了backend名爲mysql_cluster_back的模塊來處理,這裏要申明代理的協議tcp,我這裏是須要作mysql的集羣,因此是tcp,若是是webserver的集羣,那麼能夠寫成httpshell
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的方式,來避免單點故障。