您的位置:首页 > 其它

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

2015-04-23 15:44 871 查看


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中添加

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
user nobody
group nobody
daemon
defaults
log global
mode http
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
timeout connect 5000
timeout client 50000
timeout server 50000
frontend pxc-front
bind *:3307
mode tcp
default_backend pxc-back
frontend stats-front
bind *:80
mode http
default_backend stats-back
frontend pxc-onenode-front
bind *:3306
mode tcp
default_backend pxc-onenode-back
backend pxc-back
mode tcp
balance roundrobin
option httpchk
server mysql-pxc01 192.168.163.6:3306 check port 9200 inter 12000 rise 3 fall 3
server mysql-pxc02 192.168.163.7:3306 check port 9200 inter 12000 rise 3 fall 3
backend stats-back
mode http
balance roundrobin
stats uri /haproxy/stats
stats auth pxcstats:secret
backend pxc-onenode-back
mode tcp
balance leastconn
option httpchk
server mysql-pxc01 192.168.163.6:3306 check port 9200 inter 12000 rise 3 fall 3
server 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/clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
Percona XtraDB Cluster Node is synced.


备节点:

[root@mysql-pxc02 data1]# /usr/bin/clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
Percona XtraDB Cluster Node is synced.


8)将监控程序添加到集群主备节点的服务xinetd当中,在/etc/xinetd.d中添加mysqlchk文件,添加如下

# default: on
# description: mysqlchk
service mysqlchk
{
# this is a config for xinetd, place it in /etc/xinetd.d/
disable = no
flags = REUSE
socket_type = stream
port = 9200
wait = no
user = nobody
server = /usr/bin/clustercheck
log_on_failure += USERID
only_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 restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
[root@mysql-pxc01 xinetd.d]# netstat -an|grep -i 9200
tcp 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配置完成。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: