两台mysql机器 mysql1: 192.168.117.145
mysql2: 192.168.117.148
1. 下载haproxy 的安装包
wget http://pkgs.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.7.9.tar.gz/sha512/d1ed791bc9607dbeabcfc6a1853cf258e28b3a079923b63d3bf97504dd59e64a5f5f44f9da968c23c12b4279e8d45ff3bd39418942ca6f00d9d548c9a0ccfd73/haproxy-1.7.9.tar.gz
2. 解压
tar xzvf haproxy*
3.进入解压目录:
cd haproxy*
4.源码编译
sudo make TARGET=linux2628 PREFIX=/usr/local/haproxy
注意的是大小写,若改成小写,编译不通过或没有编译到指定路径下
查询内核版本: uname -r ,通过cat README 可以知道编译平台的版本号,新版本的Ubuntu为linux2628
5.安装
sudo make install PREFIX=/usr/local/haproxy
6.编写配置文件
cd /usr/local/haproxy
sudo vi haproxy.cfg
填写如下内容:
###########全局配置######### global daemon nbproc 1 pidfile /var/run/haproxy.pid ########默认配置############ defaults mode http #默认的模式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] listen mysql-lb1 # 绑定的IP和端口 haproxy服务器一个网卡IP bind *:3307 # 模式是TCP mode tcp # 通过mysql连接去检测mysql是否可以访问 创建用户haproxy_check 密码为空,权限usage option mysql-check user haproxy # 负载均衡算法是 轮询 balance roundrobin # 下面两个就是后端被访问的server server mysql_1 192.168.117.145:3306 weight 1 check server mysql_2 192.168.117.148:3306 weight 1 check # 自带的监控服务器的配置 # 监控服务的端口是 8888 listen stats bind *:1088 # 监控模式是http mode http option httpclose balance roundrobin stats uri / stats realm Haproxy Statistics # 监控的用户名和密码 stats auth myadmin:myadmin
haproxy 是mysql的用户,可以通过 CREATE USER haproxy 命令进行创建
7.运行haproxy
sudo /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
8. 让其开机自动运行:
sudo vi /etc/rc.local
在文档最后添加:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
9.测试
访问: 安装HAProxy IP:1088 如: http://192.168.117.148:1088/
用户名/密码 myadmin/myadmin
登录后可以看到两台mysql主机已经添加进来了
使用Navicat for MySQL 连接
192.168.117.148 端口3307 ,这个IP和端口是在 haproxy.cfg里配置的。 mysqll_proxy
192.168.117.148 端口3306 ,mysql_2
192.168.117.145 端口3360 , mysql_1
1.在mysqll_proxy 表中插入一条数据, 查看mysql_1和mysql_2 中数据是否发生变化(为了效果明显,mysql_1 和mysql_2 没有配置主从备份和主主备份)
2.关闭mysql_1 和mysql_2 中数据变化的数据库,在mysqll_proxy 中在插入一条数据,查看另一个数据库的数据变化
(这个测试为了验证,一个数据库突然宕机,数据能否插入到另一个数据库中)