本篇重点讲解haproxy+mysql负载均衡,搭建完成后与之前搭建的redis+ssm进行整合
(注:这里用到了两台mysql数据库,分别安装两台虚拟机上,已经成功实现主主复制,如果有需要,请查看我另外一篇博客:http://www.cnblogs.com/cuijiale/p/8039421.html)
1、首先下载最新的的haproxy安装包:haproxy-1.7.9.tar.gz
下载完成后cp到特定的目录下/usr/local
2、安装haproxy
解压“tar -zxvf haproxy-1.7.9.tar.gz”在本目录,压缩完成后“cd haproxy-1.7.9”
执行安装命令“make TARGET=linux3100 CPU=x86_64 PREFIX=/usr/local/haproxy-1.7.9”
“make install PREFIX=/usr/local/haproxy-1.7.9”
3、安装完成后配置启动
在安装目录的根目录创建haproxy.cfg配置文件,启动时需要。
进入haproxy.cfg文件修改
1 global 2 log 127.0.0.1 local2 #日志相关 3 maxconn 4096 4 chroot /var/lib/haproxy 5 pidfile /var/run/haproxy.pid 6 user haproxy 7 daemon 8 stats socket /var/lib/haproxy/stats 9 #debug 10 #quiet 11 12 defaults 13 mode tcp #haproxy运行模式(http | tcp | health) 14 log global 15 option dontlognull 16 option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器 17 retries 3 #三次连接失败则服务器不用 18 timeout http-request 10s 19 timeout queue 1m 20 timeout connect 10s #连接超时 21 timeout client 1m #客户端超时 22 timeout server 1m #服务器超时 23 timeout http-keep-alive 10s 24 timeout check 10s #心跳检测 25 maxconn 600 #最大连接数 26 27 listen mysql 28 bind 0.0.0.0:23306 #代理端口 29 mode tcp #模式 TCP 30 option mysql-check user haproxy #mysql健康检查 root为mysql登录用户名 31 balance roundrobin #调度算法 32 server mysql1 192.168.40.128:3306 weight 1 check inter 1s rise 2 fall 2 #健康检查加上check 33 server mysql2 192.168.40.130:3306 weight 1 check inter 1s rise 2 fall 2 34 listen stats #监控 35 mode http 36 bind 0.0.0.0:8888 37 stats enable 38 stats uri /dbs 39 stats realm Global statistics 40 stats auth admin:admin
配置文件后,就可以启动了,不过在这之前,因为数据库是负载均衡,需要同步数据与访问数据,需要创建一个一模一样的帐号来应对访问需求,并且主主复制的帐号也需要改成一样的,为了方便直接赋予这个用户全部权限。语法查看我mysql相关博客: http://www.cnblogs.com/cuijiale/p/8034319.html,其中都有提到。ok该排的坑我们已经躺过了,这里我就启动服务(为了让haproxy监控两个数据库信息,需要分别创建一个haproxy用户,密码为空就好)。
./usr/local/haproxy-1.7.9/sbin/haproxy -f /usr/local/haproxy-1.7.9/haproxy.cfg
启动后可以通过命令去查看。启动一切正常
远程使用“http://192.168.40.128:8888/dbs”查看监控情况这里用到的配置全部来自于
登录密码这里配置的是admin/admin可以看到我们配置的两台mysql已经被监控到了。
4、整合smm
上面配置图中可以看到我们让haproxy监听的23306端口,所以配置文件中需要连接这个端口
一切就绪,启动redis集群
redis主从6个节点全部启动后,启动web服务访问
数据也完美得到。一切ok,这样我们一个SSM WEB应用+redis集群+mysql负载均衡的高可用,高性能,高扩展的读写分离架构就搭建完成了,其中还有很多瑕疵,之后也会自己慢慢补齐,架构还需要使用nginx对web应用进行负载均衡,减轻应用服务器压力。
其中不对地方,还望各位能够指出,谢谢