对于双主状况,能够实现负载均衡 和 故障转移;可是 对于一主多从的状况,主挂掉了,选举功能 无法实现;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