對於雙主狀況,能夠實現負載均衡 和 故障轉移;可是 對於一主多從的狀況,主掛掉了,選舉功能 無法實現;linux
認識HaProxy:(性能中等)redis
基於TCP協議的,代理MySql;所須要的機器不那麼多;sql
Nginx:(性能最低)服務器
基於Http協議的,只能代理Web應用負載均衡
LVS:(性能最高)socket
Linux的虛擬服務,缺點:須要的機器很是多,可配置性 不高tcp
Haproxy的安裝:性能
1,下載地址:https://www.tapd.cn/22121161/documents/show/1122121161001000014spa
2,建立用戶名和密碼(全部的Mysql節點上都須要一個通用的用戶名和密碼),並賦予權限;.net
3,安裝haproxy:
tar -zxvf haproxy-1.7.3.tar.gz
cd haproxy-1.7.3
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
## 參數說明
##TARGET=linux26 #內核版本,使用uname -r查看內核,
如:2.6.18-371.el5,此時該參數就爲 linux26;內核大於2.6.28的用:TARGET=linux2628
## ARCH=x86_64 #系統位數
## PREFIX=/usr/local/haprpxy #/usr/local/haprpxy爲haprpxy安裝路徑
make install PREFIX=/usr/local/haproxy
4.建立haproxy.cfg文件
mkdir /usr/local/haproxy/etc
vi /usr/local/haproxy/etc/haproxy.cfg
所添加的內容:
global
daemon # 後臺方式運行
nbproc 1
pidfile /usr/local/haproxy/etc/haproxy.pid
defaults
mode tcp #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
retries 2 #兩次鏈接失敗就認爲是服務器不可用,也能夠經過後面設置
option redispatch #當serverId對應的服務器掛掉後,強制定向到其餘健康的服務器
option abortonclose #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的連接
maxconn 4096 #默認的最大鏈接數
timeout connect 5000ms #鏈接超時
timeout client 30000ms #客戶端超時
timeout server 30000ms #服務器超時
#timeout check 2000 #=心跳檢測超時
log 127.0.0.1 local0 err #[err warning info debug]
########test1配置#################
listen test1 #這裏是配置負載均衡,test1是名字,能夠任意
bind 0.0.0.0:3306 #這裏是監聽的IP地址和端口,端口號能夠在0-65535之間,要避免端口衝突
mode tcp #鏈接的協議,這裏是tcp協議
#maxconn 4086
#log 127.0.0.1 local0 debug
server s1 47.98.172.198:3306 #負載的機器
server s2 47.97.121.246:3306 #負載的機器,負載的機器能夠有多個,往下排列便可
5,在/usr/local/haproxy/etc 目錄下【和haproxy.cfg文件中的屬性pidfile 一致】建立 haproxy.pid文件,並設置值:
echo 1 > haproxy.pid
6,啓動haproxy:
../sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
特別注意:
若是在配置文件 haproxy.cfg 中配置了 bind 47.98.172.198:3306 ,指定 了具體的ip,容易出一下問題:
Starting proxy test1: cannot bind socket [47.98.172.198:3307]
解決辦法:把具體的ip換成: 0.0.0.0
參考網址:https://blog.csdn.net/xuxile/article/details/78871380