序幕
HAProxy是一个开源软件,可以负载平衡HTTP和TCP服务器。在上HAProxy的前面的文章中 ,我们配置的负载均衡HTTP和在这其中,我们会为MySQL这样做。 你所有的MySQL服务器必须被配置为执行主-主复制负载平衡涉及的读取和写入到所有的后端。
本文将使用以下三个Droplet:
Droplet 1 - 负载平衡器
主机名:haproxy
操作系统:Ubuntu
私人IP:10.0.0.100
Droplet 2 - 节点1
主机名:mysql-1
操作系统:Debian 7
私人IP:10.0.0.1
Droplet 2 - Node 2
主机名:mysql-2
操作系统:Debian 7
私人IP:10.0.0.2
在继续之前,请确保所有MySQL服务器都已启动,正在运行并正确复制数据库写入。
准备MySQL服务器
我们需要通过为HAProxy创建两个额外的用户来准备MySQL服务器。 HAProxy将使用第一个用户来检查服务器的状态。
root@mysql-1# mysql -u root -p -e "INSERT INTO mysql.user (Host,User) values ('10.0.0.100','haproxy_check'); FLUSH PRIVILEGES;"
当从HAProxy访问MySQL集群时,需要具有root权限的MySQL用户。所有服务器上的默认root用户只允许本地登录。虽然可以通过向root用户授予其他权限来修复此问题,但最好是拥有具有root权限的单独用户。
root@mysql-1# mysql -u root -p -e "GRANT ALL PRIVILEGES ON *.* TO 'haproxy_root'@'10.0.0.100' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES"
用你自己的安全值替换haproxy_root和密码 。在一个MySQL主机上执行这些查询就足够了,因为更改将复制到其他主机。
安装MySQL客户端
MySQL客户端必须安装在HAProxyDroplet上以测试连接。
root@haproxy# apt-get install mysql-client
现在试着在主人的haproxy_root用户的一个执行查询。
root@haproxy# mysql -h 10.0.0.1 -u haproxy_root -p -e "SHOW DATABASES"
这应该显示MySQL数据库的列表。
安装HAProxy
在HAProxy服务器上安装软件包。
root@haproxy# apt-get install haproxy
启用HAProxy以由init脚本启动。
root@haproxy# sed -i "s/ENABLED=0/ENABLED=1/" /etc/default/haproxy
要检查此更改是否正确执行HAProxy的init脚本,不带任何参数。
root@haproxy:~# service haproxy
Usage: /etc/init.d/haproxy {start|stop|reload|restart|status}
配置HAProxy
重命名原始配置文件
mv /etc/haproxy/haproxy.cfg{,.original}
创建并编辑一个新的
nano /etc/haproxy/haproxy.cfg
第一个块是全局和默认配置块。
global
log 127.0.0.1 local0 notice
user haproxy
grou