haproxy的安装很简单,可是前提是你的linux有gcc环境,简单记录一下mysql
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz tar zxvf haproxy-1.4.8.tar.gz cd haproxy-1.4.8 make TARGET=linux26 PREFIX=/usr/local/haproxy make install PREFIX=/usr/local/haproxy
这里要注意的是本身的linux版本,使用uname -a命令能够查看linux
安装好以后的路径是在web
/usr/local/haproxy
接下来是配置文件redis
global log 127.0.0.1 local0 maxconn 4096 user root group root daemon defaults log global mode tcp option tcplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 4000 clitimeout 50000 srvtimeout 30000 stats enable stats scope . frontend mysql_cluster bind *:3306 default_backend mysql_cluster_back backend mysql_cluster_back mode tcp option tcpka option mysql-check balance roundrobin server db01_1.1.1.1 192.168.50.1:3306 weight 1 check port 3306 server db02_2.2.2.2 192.168.50.130:3306 weight 100 check port 3306 listen stats 0.0.0.0:8899 mode http option httpclose balance roundrobin stats uri /admin-status stats realm Haproxy\ Statistics stats auth admin:admin
这是一个简单的配置文件,global和defaults基本均可以不变,重要的是frontend 和backend
sql
关于frontend,我是这样理解的,至关于声明了一个名为:mysql_cluster的函数,这个函数监听了运行haproxy机器的3306端口,而后将这个端口的请求交给了backend名为mysql_cluster_back的模块来处理,这里要申明代理的协议tcp,我这里是须要作mysql的集群,因此是tcp,若是是webserver的集群,那么能够写成httpshell
balance 是负载均衡的策略,对应的策略能够google数据库
server db01_1.1.1.1 192.168.50.1:3306 weight 1 check port 3306 server db02_2.2.2.2 192.168.50.130:3306 weight 100 check port 3306
这两句是定义实际的mysql服务器信息,我这边是两台,能够定义权重,check port 3306是对两台服务器mysql的端口进行健康检查,还有其余参数,不详解。浏览器
listen stats 0.0.0.0:8899 mode http option httpclose balance roundrobin stats uri /admin-status stats realm Haproxy\ Statistics stats auth admin:admin
这个模块主要是定义了haproxy的一个监控界面信息,绑定8899端口,经过浏览器能够访问haproxy的监控界面服务器
在上面两台机器上开启mysql服务,而后在本机保存配置文件到安装目录下负载均衡
haproxy的执行命令是
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
而后能够在浏览器中输入:
http://192.168.50.129:8899/admin-status
查看机器状况,若是一切正常,则都是绿色
这个时候,链接mysql节点
mysql -h192.168.50.129 -utest-ptest -P3306
注意两个真实的mysql服务器必须具备相同的用户名和密码,才能达到负载均衡的效果
而后你会发现,haproxy会轮的在两台真实服务器之间转换,注意192.168.50.129 这台机器并无安装mysql
总得来讲,haproxy能够对http以及tcp请求进行反向代理和负载均衡,对于webserver、数据库均可以用很低的代价实现最大的效果,可是实际的生产环境中,要负载不少,能够和keepalived一块儿使用,使用虚拟ip的方式,来避免单点故障。