使用HAProxy实现Percona XtraDB Cluster的负载均衡

来源:互联网 发布:石家庄勒泰鸿搜网络 编辑:程序博客网 时间:2024/05/20 03:41

1.前言

引用http://www.oschina.net/p/haproxyHAProxy,HAProxy提供高可用性、负载均衡。以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。下图是HAProxy的结构模型:


2.安装步骤

1)HAProxy安装环境

OS:Redhat 6.5 32位

Hostname:mysql-repl01

ip addr:192.168.163.8

software:haproxy-1.5.3.tar.gz

2)Percona XtraDB Cluster环境

OS:Redhat 6.5 32位

Cluster:Percona-XtraDB-Cluster5.6.22-25

主节点:

hostname:mysql-pxc01

ip addr:192.168.163.6

备节点:

hostname:mysql-pxc02

ip addr:192.168.163.7

3)解压缩文件,进入到目录中

[root@mysql-rep01 haproxy]# tar xf haproxy-1.5.3.tar[root@mysql-rep01 software]# cd haproxy/

4)安装gcc
[root@mysql-rep01 haproxy-1.5.3]# yum install gcc

5)安装haproxy
[root@mysql-rep01 haproxy-1.5.3]# make TARGET=linux2628 ARCH=i686[root@mysql-rep01 haproxy-1.5.3]# make install

6)创建haproxy的配置文件

[root@mysql-rep01 haproxy-1.5.3]# mkdir /haproxy[root@mysql-rep01 haproxy-1.5.3]# cd /haproxy/[root@mysql-rep01 haproxy]# touch haproxy.cfg

在haproxy.cfg中添加

globallog 127.0.0.1 local0log 127.0.0.1 local1 noticemaxconn 4096user nobodygroup nobodydaemondefaultslog globalmode httpoption tcplogoption dontlognullretries 3option redispatchmaxconn 2000timeout connect 5000timeout client 50000timeout server 50000frontend pxc-frontbind *:3307mode tcpdefault_backend pxc-backfrontend stats-frontbind *:80mode httpdefault_backend stats-backfrontend pxc-onenode-frontbind *:3306mode tcpdefault_backend pxc-onenode-backbackend pxc-backmode tcpbalance roundrobinoption httpchkserver mysql-pxc01 192.168.163.6:3306 check port 9200 inter 12000 rise 3 fall 3server mysql-pxc02 192.168.163.7:3306 check port 9200 inter 12000 rise 3 fall 3backend stats-backmode httpbalance roundrobinstats uri /haproxy/statsstats auth pxcstats:secretbackend pxc-onenode-backmode tcpbalance leastconnoption httpchkserver mysql-pxc01 192.168.163.6:3306 check port 9200 inter 12000 rise 3 fall 3server mysql-pxc02 192.168.163.7:3306 check port 9200 inter 12000 rise 3 fall 3

7)由于HAProxy不能自动识别Percona XtraDB Cluster中各个节点的状态是否正确,因此需要调用Percona自带的监控脚本来确认节点状态。在集群中创建监控用户。

mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';Query OK, 0 rows affected (0.21 sec)

8)验证集群节点状态监控是否正常。

[root@mysql-pxc01 bin]# /usr/bin/clustercheckHTTP/1.1 200 OKContent-Type: text/plainConnection: closeContent-Length: 40Percona XtraDB Cluster Node is synced.

备节点:
[root@mysql-pxc02 data1]# /usr/bin/clustercheckHTTP/1.1 200 OKContent-Type: text/plainConnection: closeContent-Length: 40Percona XtraDB Cluster Node is synced.

8)将监控程序添加到集群主备节点的服务xinetd当中,在/etc/xinetd.d中添加mysqlchk文件,添加如下
# default: on# description: mysqlchkservice mysqlchk{# this is a config for xinetd, place it in /etc/xinetd.d/disable = noflags = REUSEsocket_type = streamport = 9200wait = nouser = nobodyserver = /usr/bin/clusterchecklog_on_failure += USERIDonly_from = 0.0.0.0/0## Passing arguments to clustercheck# <user> <pass> <available_when_donor=0|1> <log_file> <available_when_readonly=0|1> <defaults_extra_file>"# Recommended: server_args = user pass 1 /var/log/log-file 0 /etc/my.cnf.local"# Compatibility: server_args = user pass 1 /var/log/log-file 1 /etc/my.cnf.local"# 55-to-56 upgrade: server_args = user pass 1 /var/log/log-file 0 /etc/my.cnf.extra"## recommended to put the IPs that need# to connect exclusively (security purposes)per_source = UNLIMITED}

9)在集群主备节点的/etc/services中添加监控端口
mysqlchk 9200/tcp # mysqlchk

10)重启集群主备节点的xinetd服务,查看9200端口是否启动
[root@mysql-pxc01 xinetd.d]# service xinetd restartStopping xinetd: [FAILED]Starting xinetd: [ OK ][root@mysql-pxc01 xinetd.d]# netstat -an|grep -i 9200tcp 0 0 :::9200 :::* LISTEN

11)启动HAProxy
[root@mysql-rep01 haproxy]# haproxy -f /haproxy/haproxy.cfg

12)查看HAProxy的状态

登录到我们指定的url中 http://192.168.163.8/haproxy/stats,用户名/密码为pxcstats/secret

.

HAProxy配置完成。





0 0