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

[经验分享] 使用sysbench检测HAProxy对于Percona XtraDB Cluster的负载均衡和故障检测

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

前文中我们介绍了HAProxy的安装布置(参考http://blog.iyunv.com/wjf870128/article/details/45221359)和Percona XtraDB Cluster的安装布置(http://blog.iyunv.com/wjf870128/article/details/45176011)。下面我们使用sysbench来检测下HAProxy是否能够实现负载均衡和对于集群中节点故障的请求转移。


2.sysbench安装

1)环境:


OS:redhat 6.5 32位
software:sysbench-0.4.8.tar.gz
ip addr:192.168.163.8(已经配置好haproxy)


2)解压缩软件包


[iyunv@mysql-rep01 sysbench]# tar -zxvf sysbench-0.4.8.tar.gz
[iyunv@mysql-rep01 sysbench]# cd sysbench-0.4.8


3)安装automake
[iyunv@mysql-rep01 sysbench-0.5]# yum install automake


4)安装libtool
[iyunv@mysql-rep01 Packages]# yum install libtool


5)安装mysql devel和shared支持包已支持sysbench的mysql环境
[iyunv@mysql-rep01 software]# rpm -ivh MySQL-devel-advanced-5.6.23-1.el6.i686.rpm
Preparing...                ########################################### [100%]
1:MySQL-devel-advanced   ########################################### [100%][iyunv@mysql-rep01 software]# rpm -ivh MySQL-shared-advanced-5.6.23-1.el6.i686.rpm
[iyunv@mysql-rep01 software]# rpm -ivh MySQL-shared-compat-advanced-5.6.23-1.el6.i686.rpm


6)安装sysbench软件包
[iyunv@mysql-rep01 sysbench-0.5]# chmod u+x autogen.sh[iyunv@mysql-rep01 sysbench-0.5]# ./autogen.sh
  

[iyunv@mysql-rep01 sysbench-0.5]# ./configure --with-mysql-includes=/usr/include/mysql/ --with-mysql-libs=/usr/lib/mysql/[iyunv@mysql-rep01 sysbench-0.5]# make[iyunv@mysql-rep01 sysbench-0.5]# make install
3.测试HAProxy分发

1)我们的haproxy的配置文件如下:
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

2)在我们的percona集群中创建测试数据库和测试用户


mysql> create database sbtest;
Query OK, 1 row affected (0.39 sec)
mysql> grant all on sbtest.* to 'sbtest'@'%' identified by 'sbpass';
Query OK, 0 rows affected (0.25 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)


3)创建测试数据
[iyunv@mysql-rep01 db]# sysbench --test=/software/sysbench/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=sbtest --mysql-password=sbpass --oltp-table-size=10000 prepare
sysbench 0.5:  multi-threaded system evaluation benchmark
Creating table 'sbtest1'...
Inserting 10000 records into 'sbtest1'

4)使用3306端口访问mysql数据库
[iyunv@mysql-rep01 db]# sysbench --test=/software/sysbench/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sbtest --mysql-password=sbpass --oltp-table-size=10000 --num-threads=8 run
sysbench 0.5:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 8
Random number generator seed is 0 and will be ignored

Threads started!登录haproxy的状态界面 http://192.168.163.8/haproxy/stats查看状态

DSC0000.jpg
  分发成功
  5)我们将主节点mysql-pxc01关闭掉在查看状态
  

[iyunv@mysql-pxc01 ~]# service mysql stop
Shutting down MySQL (Percona XtraDB Cluster)..........[  OK  ]此时我们的sysbench报警退出...  
  

ALERT: failed to execute MySQL query: `UPDATE sbtest1 SET c='48430239815-39636634349-44303135689-38090726026-22121476891-44178343736-66628055146-51151353374-76675391132-92944723344' WHERE id=5000`:
ALERT: Error 1317 Query execution was interrupted
FATAL: failed to execute function `event': (null)
ALERT: failed to execute MySQL query: `SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN 3535 AND 3535+99 ORDER BY c`:
ALERT: Error 1047 Unknown command
FATAL: failed to execute function `event': (null)
ALERT: failed to execute MySQL query: `SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN 5050 AND 5050+99 ORDER BY c`:
ALERT: Error 1047 Unknown command
FATAL: failed to execute function `event': (null)
ALERT: failed to execute MySQL query: `SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN 5010 AND 5010+99 ORDER BY c`:
ALERT: Error 1047 Unknown command
FATAL: failed to execute function `event': (null)

再次执行的时候发现,haproxy识别到节点1关闭掉,状态如下  
DSC0001.jpg


  6)我们再次打开节点1,看看haproxy在leastconn的分发
DSC0002.jpg


DSC0003.jpg


  由于我们是双节点的集群,节点1启动的时候需要抓取节点2的日志数据,备节点2不对外服务,所以连接为0。
  同步完成后状态转化为:
DSC0004.jpg


DSC0005.jpg


  7)节点正常后,由于我们使用的是leastconn,节点1上暂时没有连接,再次运行命令,创建5个线程连接3306端口
  

[iyunv@mysql-rep01 ~]# sysbench --test=/software/sysbench/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sbtest --mysql-password=sbpass --oltp-table-size=10000 --num-threads=5 run
sysbench 0.5:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 5
Random number generator seed is 0 and will be ignored

Threads started!状态如下:  
DSC0006.jpg


  可见leastconn的算法生效。
  


  

8)使用3307端口访问mysql数据库查看
[iyunv@mysql-rep01 db]# sysbench --test=/software/sysbench/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=sbtest --mysql-password=sbpass --oltp-table-size=10000 --num-threads=8 run
sysbench 0.5:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 8
Random number generator seed is 0 and will be ignored

Threads started!


DSC0007.jpg

发现haproxy成功分发到各个server中

  
  9)断开节点1
DSC0008.jpg


  10)恢复节点1
DSC0009.jpg


DSC00010.jpg


  已有的连接不会进行roundrobin循环分配
  11)我们再次建立6个连接到3307端口
DSC00011.jpg


  发现每个节点各自分配了3个新连接。
  


  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-141489-1-1.html 上篇帖子: 启用HAProxy状态监控 下篇帖子: Keepalived+HAProxy配置高可用负载均衡,解决keepalived无法安装问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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