设为首页 收藏本站
查看: 1250|回复: 0

[经验分享] 使用HAProxy实现Percona XtraDB Cluster的负载均衡

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-20 12:39:45 | 显示全部楼层 |阅读模式

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

   DSC0000.jpg


  

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)解压缩文件,进入到目录中


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

4)安装gcc

[iyunv@mysql-rep01 haproxy-1.5.3]# yum install gcc

5)安装haproxy

[iyunv@mysql-rep01 haproxy-1.5.3]# make TARGET=linux2628 ARCH=i686
[iyunv@mysql-rep01 haproxy-1.5.3]# make install



6)创建haproxy的配置文件
[iyunv@mysql-rep01 haproxy-1.5.3]# mkdir /haproxy
[iyunv@mysql-rep01 haproxy-1.5.3]# cd /haproxy/
[iyunv@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)验证集群节点状态监控是否正常。
  [iyunv@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.

备节点:

[iyunv@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>&quot;
# Recommended: server_args = user pass 1 /var/log/log-file 0 /etc/my.cnf.local&quot;
# Compatibility: server_args = user pass 1 /var/log/log-file 1 /etc/my.cnf.local&quot;
# 55-to-56 upgrade: server_args = user pass 1 /var/log/log-file 0 /etc/my.cnf.extra&quot;
#
# 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端口是否启动

[iyunv@mysql-pxc01 xinetd.d]# service xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
[iyunv@mysql-pxc01 xinetd.d]# netstat -an|grep -i 9200
tcp 0 0 :::9200 :::* LISTEN

11)启动HAProxy

[iyunv@mysql-rep01 haproxy]# haproxy -f /haproxy/haproxy.cfg

12)查看HAProxy的状态
  
登录到我们指定的url中 http://192.168.163.8/haproxy/stats,用户名/密码为pxcstats/secret
. DSC0001.jpg
HAProxy配置完成。















运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141500-1-1.html 上篇帖子: 根据HAPROXY日志中的每小时连接数大于设定阀值的IP封闭 下篇帖子: 初尝利用HAProxy 实现负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表