对于双主情况,可以实现负载均衡 和 故障转移;但是 对于一主多从的情况,主挂掉了,选举功能 没法实现;
认识HaProxy:(性能中等)
基于TCP协议的,代理MySql;所需要的机器不那么多;
Nginx:(性能最低)
基于Http协议的,只能代理Web应用
LVS:(性能最高)
Linux的虚拟服务,缺点:需要的机器非常多,可配置性 不高
Haproxy的安装:
1,下载地址:https://www.tapd.cn/22121161/documents/show/1122121161001000014
2,创建用户名和密码(所有的Mysql节点上都需要一个通用的用户名和密码),并赋予权限;
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