1.安裝java
# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz # tar zcvf haproxy-1.4.24.tar.gz # cd haproxy-1.4.24 # make TARGET=linux26 PREFIX=/usr/local/haproxy #將haproxy安裝到/usr/local/haproxy # make install PREFIX=/usr/local/haproxy
2.配置mysql
在/usr/local/haproxy/etc/下新建haproxy.cfg配置文件。內容爲:linux
global log 127.0.0.1 local0 info #日誌相關 log 127.0.0.1 local1 notice maxconn 4096 chroot /usr/local/haproxy uid root gid root daemon #debug #quiet pidfile /usr/local/haproxy/haproxy.pid defaults log global mode http #option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen mysql bind 0.0.0.0:23306 #代理端口 mode tcp #模式 TCP option mysql-check user root #mysql健康檢查 root爲mysql登陸用戶名 balance roundrobin #調度算法 server mysql1 192.168.137.122:3306 weight 1 check inter 1s rise 2 fall 2 #健康檢查加上check server mysql2 192.168.137.46:3306 weight 1 check inter 1s rise 2 fall 2 listen stats #監控 mode http bind 0.0.0.0:8888 stats enable stats uri /dbs stats realm Global\ statistics stats auth admin:admin
說明:mysql負載均衡要用tcp模式,在使用負載均衡前,須要mysql能讓haproxy的ip遠程訪問,inter表示健康檢查的間隔,單位爲毫秒 能夠用1s等,fall表明健康檢查失敗2回後放棄檢查。rise表明連續健康檢查成功2此後將認爲服務器可用。默認的,haproxy認爲服務時永遠可用的,除非加上check讓haproxy確認服務是否真的可用。web
調度算法:redis
roundrobin :
依照權重一次調度服務,當服務器的處理時間公平分配時這是最快的最順暢的算法 。
3 啓動:
[root@web2 etc]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg [root@web2 etc]# cd ../sbin/ [root@web2 sbin]# ls haproxy [root@web2 sbin]# ps -ef | grep haproxy root 4223 1 0 18:12 ? 00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg root 4228 3754 0 18:12 pts/0 00:00:00 grep haproxy [root@web2 sbin]#
4 登陸瀏覽器查看:http://192.168.137.46:8888/dbs輸入admin admin登陸
停掉一個sql節點:service mysqld stop
再次查看:
能夠看到檢查出了mysql1不可用,service mysqld start 恢復mysql1的實例。
雖然測試成功 可是還有一個問題 就是如今訪問數據庫的用戶root不能有密碼, 加上了密碼就顯示數據庫DOWN 要想數據庫加密碼 須要將
option mysql-check user root 這行註釋點