上周介绍了zabbix监控cdn带宽,这次在介绍一下ansible结合docker来一键化安装与测试mysql tpcc,然后通过tpcc测试OLTP系统性能。

写这个的原因就是重复性的安装太麻烦,浪费时间,而且我这里新业务不断上线,上线前使用tpcc进行OLTP测试对整体系统性能上也有了解。

一、Myql Tpcc介绍(网上找的内容)

Tpcc-mysql是percona基于tpcc衍生出来的产品,用来测试OLTP(在线事务处理)系统性能的软件, TPCC-MYSQL是开源的TPC-C测试软件其源码放在bazaar(Bazaar是一个分布式的版本控制系统,采用GPL许可协议,可运行于Windows、GNU/Linux、UNIX 以及 Mac OS 系统之上。Bazaar 由Canonical公司(Ubuntu母公司)赞助商,因此还需要先安装bazaar客户端。

二、测试环境

平台:cloudsbox

虚拟化:kvm

系统:centos6.5

Docker版本:0.11.1

Docker容器系统版本:centos 6.3

Ansible版本:1.6

三、测试步骤

1、 使用docker生成一个新的容器mysql-tpcc;

2、 使用ansible在新生成的容器mysql-tpcc里进行安装mysql-tpcc并进行测试;

3、 测试完成后,从容器里把测试结果拉回本地。

下面开始是测试过程

四、docker里操作

1、查看当然容器

17:49:46 # docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
dfec766fbaa7        centos6:3.0         /usr/sbin/sshd -D   12 days ago         Up 12 days          0.0.0.0:49159->22/tcp   redis-slave         
06762530db8c        centos6:3.0         /usr/sbin/sshd -D   12 days ago         Up 12 days          0.0.0.0:49158->22/tcp   redis-master        
846efb9e4d7a        ubuntu:3.0          /usr/sbin/sshd -D   3 weeks ago         Up 2 weeks          0.0.0.0:49167->22/tcp   ubuntu-test1        
b9a9e6f2caed        centos6:3.0         /usr/sbin/sshd -D   5 weeks ago         Up 2 weeks          0.0.0.0:49166->22/tcp   zabbix-server       
978fff134b18        centos6:3.0         /usr/sbin/sshd -D   6 weeks ago         Up 2 weeks          0.0.0.0:49165->22/tcp   centos6-test5

2、生成新容器

17:49:53 #  time  docker inspect $(docker run -d -p 22  --name="mysql-tpcc" centos6:3.0 /usr/sbin/sshd -D)|grep -i address|awk -F '"' '{print $4}'
172.17.0.7

real	0m9.415s
user	0m0.028s
sys	0m0.140s

3、查看当前已有容器

17:50:07 #  docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
6331fb9bf19b        centos6:3.0         /usr/sbin/sshd -D   21 seconds ago      Up 12 seconds       0.0.0.0:49160->22/tcp   mysql-tpcc          
dfec766fbaa7        centos6:3.0         /usr/sbin/sshd -D   12 days ago         Up 12 days          0.0.0.0:49159->22/tcp   redis-slave         
06762530db8c        centos6:3.0         /usr/sbin/sshd -D   12 days ago         Up 12 days          0.0.0.0:49158->22/tcp   redis-master        
846efb9e4d7a        ubuntu:3.0          /usr/sbin/sshd -D   3 weeks ago         Up 2 weeks          0.0.0.0:49167->22/tcp   ubuntu-test1        
b9a9e6f2caed        centos6:3.0         /usr/sbin/sshd -D   5 weeks ago         Up 2 weeks          0.0.0.0:49166->22/tcp   zabbix-server       
978fff134b18        centos6:3.0         /usr/sbin/sshd -D   6 weeks ago         Up 2 weeks          0.0.0.0:49165->22/tcp   centos6-test5

4、 新容器ip加入到ansible的访问主机列表里

17:52:47# echo "172.17.0.7">>hosts
root@ip-10-10-10-10:/etc/ansible

五、ansible里操作

其中命令为ansible-playbookmysql_tpcc_install.yml  --extra-vars "host=172.17.0.17 user=rootwarehouse=50 w=50 c=50 r=120 l=600”,extra-vars后面都是变量,都是可以自行修改变量,满足个性化测试需求

下面是运行情况

 time ansible-playbook mysql_tpcc_install.yml  --extra-vars "host=172.17.0.7 user=root warehouse=50 w=50 c=50 r=120 l=600" -k
SSH password: 

PLAY [172.17.0.7] ************************************************************* 

GATHERING FACTS *************************************************************** 
ok: [172.17.0.7]

TASK: [common | Install initializtion require software] *********************** 
changed: [172.17.0.7]

TASK: [mysql_install | Copy Mysql Software To Redhat Client] ****************** 
changed: [172.17.0.7]

TASK: [mysql_install | Create Mysql User In Redhat Client] ******************** 
changed: [172.17.0.7]

TASK: [mysql_install | Copy Mysql Start Script To Redhat Client] ************** 
changed: [172.17.0.7]

TASK: [mysql_install | Copy Install Mysql Script  To Redhat Client] *********** 
changed: [172.17.0.7]

TASK: [mysql_install | Copy Mysql Config To Redhat Client] ******************** 
changed: [172.17.0.7]

TASK: [mysql_install | Copy Mysql Security Script To Redhat Client] *********** 
changed: [172.17.0.7]

TASK: [mysql_install | Create Mysql Install Dir] ****************************** 
ok: [172.17.0.7]

TASK: [mysql_install | Uncompression Mysql Software To Redhat Client] ********* 
changed: [172.17.0.7]

TASK: [mysql_install | Modify Mysql Dir Permission In Redhat Client] ********** 
ok: [172.17.0.7] => (item=/data/mysql/datadir)
ok: [172.17.0.7] => (item=/data/mysql/basedir)

TASK: [mysql_install | Install Mysql Script In Redhat Client] ***************** 
changed: [172.17.0.7]

TASK: [mysql_install | Start Myql Security Script In Redhat Client] *********** 
changed: [172.17.0.7]

TASK: [mysql_install | Add Boot Start Mysql Service In Redhat Client] ********* 
changed: [172.17.0.7]

TASK: [mysql_install | Delete Mysql compression Software In Redhat Client] **** 
changed: [172.17.0.7]

TASK: [mysql_tpcc_install | Install Base Require Software In Redhat Client] *** 
changed: [172.17.0.7]

TASK: [mysql_tpcc_install | Copy Tpcc Software  To Redhat Client] ************* 
changed: [172.17.0.7] => (item=tpcc-mysql.tar.gz)

TASK: [mysql_tpcc_install | Download Tpcc Software To Redhat Client] ********** 
changed: [172.17.0.7]

TASK: [mysql_tpcc_install | Compile Tpcc Software To Redhat Client] *********** 
changed: [172.17.0.7]

TASK: [mysql_tpcc_install | Create Mysql Tpcc Database In Redhat Client] ****** 
changed: [172.17.0.7] => (item=create database tpcc100;)

TASK: [mysql_tpcc_install | Load  Mysql Tpcc Data Table In Redhat Client] ***** 
changed: [172.17.0.7] => (item=create_table.sql)
changed: [172.17.0.7] => (item=add_fkey_idx.sql)

TASK: [mysql_tpcc_install | Create Tpcc Mysql Test Data To Redhat Client] ***** 
changed: [172.17.0.7]

TASK: [mysql_tpcc_install | Start Mysql Tpcc Test In  Redhat Client] ********** 
changed: [172.17.0.7]

TASK: [mysql_tpcc_install | Copy Mysql Tpcc Result from Redhat Client] ******** 
changed: [172.17.0.7]

TASK: [mysql_tpcc_install | Delete Zabbix compression Software In Redhat Client] *** 
changed: [172.17.0.7] => (item=tpcc-mysql.tar.gz)
changed: [172.17.0.7] => (item=tpcc100.sql)

PLAY RECAP ******************************************************************** 
172.17.0.7                 : ok=25   changed=22   unreachable=0    failed=0   


real	89m21.833s
user	0m27.365s
sys	0m2.680s

可以看到89分钟就安装完成,可能有的人疑问为什么这么长时间,注意是在tpcc_load里加载测试数据差不多就话费3分之二时间,本来我想做好一个测试库后,使用mysqldump导出,但即使导出后在算上传输时间、导入时间跟现在时间差不多,所以就没有使用这个方法。

2、查看mysql-tpcc的结果

20:21:31 # ll /tmp/mysql-tpcc-172.17.0.7.log 
-rw-r--r-- 1 root root 8215 Aug 25 20:21 /tmp/mysql-tpcc-172.17.0.7.log
root@ip-10-10-10-10:/mnt/ansible

20:21:44 # cat /tmp/mysql-tpcc-172.17.0.7.log 
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '172.17.0.7'
option u with value 'root'
option p with value 'E4yR3WnoluSFTCBAI'
option d with value 'tpcc100'
option w with value '50'
option c with value '50'
option r with value '120'
option l with value '600'
option f with value 'tpcc-mysql-result'

     [server]: 172.17.0.7
     [port]: 3306
     [DBname]: tpcc100
       [user]: root
       [pass]: E4yR3WnoluSFTCBAI
  [warehouse]: 50
 [connection]: 50
     [rampup]: 120 (sec.)
    [measure]: 600 (sec.)

RAMP-UP TIME.(120 sec.)

MEASURING START.

  10, 2491(110):4.671|6.975, 2494(0):1.001|1.625, 250(0):0.510|0.939, 251(0):6.439|7.783, 246(0):13.922|17.389
  20, 1649(305):6.303|7.654, 1649(0):1.337|1.521, 164(0):0.718|0.737, 164(0):7.859|8.443, 173(0):17.100|18.067
  30, 1701(294):6.378|7.320, 1694(0):1.338|1.685, 171(0):0.701|0.787, 170(0):7.824|8.124, 164(0):17.122|18.446
  40, 1857(310):6.198|6.755, 1861(0):1.301|1.528, 184(0):0.716|0.857, 187(0):7.595|7.996, 190(0):16.457|17.335
  50, 1543(352):6.504|7.504, 1543(0):1.460|1.977, 157(0):0.727|0.947, 154(0):8.237|8.365, 150(0):17.165|17.904
  60, 1728(385):6.425|7.139, 1732(0):1.393|1.873, 172(0):0.728|0.845, 174(0):7.782|8.069, 175(0):16.524|16.731
  70, 1824(321):6.199|6.856, 1826(0):1.306|1.639, 181(0):0.751|0.859, 182(0):7.650|7.921, 183(0):16.011|16.740
  80, 1598(399):6.367|7.330, 1595(0):1.371|1.649, 162(0):0.761|0.962, 159(0):7.532|7.632, 158(0):17.059|17.390
  90, 1740(371):6.347|6.910, 1740(0):1.357|1.872, 172(0):0.751|0.821, 174(0):7.828|8.164, 172(0):17.291|17.397
 100, 1758(399):6.350|6.993, 1757(0):1.343|1.625, 176(0):0.726|0.744, 176(0):8.042|8.247, 179(0):17.284|17.362
 110, 1791(359):6.364|6.983, 1792(0):1.352|1.595, 180(0):0.770|0.852, 180(0):7.597|7.962, 181(0):16.908|17.897
 120, 1762(367):6.397|7.016, 1760(0):1.332|1.580, 175(0):0.690|0.873, 174(0):8.184|8.551, 173(0):17.208|17.613
 130, 1935(267):6.118|6.846, 1938(0):1.290|1.535, 194(0):0.735|0.800, 194(0):7.329|7.667, 193(0):16.368|16.718
 140, 1602(371):6.391|7.331, 1598(0):1.377|1.551, 161(0):0.875|0.986, 161(0):8.105|8.791, 164(0):17.402|18.088
 150, 1814(275):6.329|6.780, 1816(0):1.321|1.614, 181(0):0.671|0.869, 182(0):8.143|8.568, 179(0):16.673|17.081
 160, 1908(284):6.041|7.137, 1911(0):1.366|1.742, 190(0):0.720|0.794, 190(0):7.571|8.524, 192(0):15.846|16.471
 170, 1740(46):5.313|6.052, 1743(0):1.199|1.636, 175(0):0.699|0.805, 175(0):6.750|6.918, 174(0):15.899|16.343
 180, 3700(10):4.368|5.826, 3692(0):1.036|1.361, 367(0):0.574|0.751, 368(0):5.685|6.103, 372(0):13.234|13.676
 190, 5243(0):2.843|4.661, 5249(0):0.704|1.119, 528(0):0.391|0.655, 525(0):4.449|5.307, 525(0):8.626|11.532
 200, 4634(9):3.744|6.482, 4630(0):0.904|1.317, 462(0):0.450|0.678, 463(0):5.635|7.451, 462(0):11.847|12.898
 210, 1567(161):6.223|6.673, 1567(0):1.312|1.540, 156(0):0.701|0.757, 155(0):7.851|8.040, 157(0):17.377|17.517
 220, 3125(78):5.695|7.167, 3126(0):1.142|1.361, 312(0):0.610|0.691, 315(0):7.122|7.630, 310(0):15.943|16.664
 230, 1913(75):5.546|6.814, 1911(0):1.225|1.521, 194(0):0.592|0.732, 190(0):7.236|7.631, 190(0):14.452|15.462
 240, 2825(39):5.187|6.421, 2831(0):1.152|1.677, 284(0):0.674|0.809, 283(0):6.705|7.467, 287(0):14.756|15.847
 250, 2795(80):5.612|6.583, 2790(0):1.147|1.582, 277(0):0.629|0.744, 280(0):6.924|7.108, 277(0):14.721|15.484
 260, 3200(39):5.114|6.319, 3204(0):1.161|1.717, 321(0):0.642|0.760, 321(0):7.173|8.076, 321(0):14.395|14.923
 270, 2124(136):5.903|6.660, 2123(0):1.233|1.612, 210(0):0.633|0.835, 211(0):7.194|7.598, 211(0):15.481|16.417
 280, 1785(142):5.773|6.158, 1781(0):1.269|1.564, 181(0):0.755|0.933, 180(0):7.181|7.396, 177(0):14.987|16.114
 290, 1649(254):6.228|7.476, 1653(0):1.334|1.666, 163(0):0.682|0.715, 164(0):7.552|7.958, 167(0):16.458|18.312
 300, 1683(181):6.048|6.788, 1676(0):1.376|1.725, 169(0):0.655|0.721, 169(0):7.266|7.550, 165(0):15.377|16.599
 310, 1782(191):6.072|7.079, 1785(0):1.342|1.662, 179(0):0.708|0.995, 178(0):7.479|7.790, 182(0):15.789|16.220
 320, 2122(58):5.375|6.219, 2122(0):1.184|1.492, 211(0):0.577|0.708, 211(0):6.726|7.536, 213(0):15.324|16.262
 330, 2088(9):4.735|5.830, 2082(0):1.226|1.573, 210(0):0.657|0.808, 208(0):5.856|5.963, 208(0):13.431|15.987
 340, 1514(201):5.871|6.529, 1524(0):1.292|1.560, 151(0):0.742|0.782, 151(0):7.418|7.639, 154(0):16.177|16.801
 350, 1897(89):5.645|6.443, 1889(0):1.242|1.555, 187(0):0.777|0.898, 188(0):7.183|7.971, 188(0):14.419|14.601
 360, 2340(18):4.835|6.052, 2349(0):1.212|1.869, 238(0):0.598|0.685, 238(0):6.727|7.723, 234(0):13.155|15.648
 370, 1817(264):6.349|6.903, 1807(0):1.371|1.607, 180(0):0.785|0.890, 181(0):8.153|8.362, 182(0):16.410|16.923
 380, 1592(433):6.465|7.550, 1588(0):1.379|1.660, 158(0):0.773|0.804, 160(0):7.763|7.853, 152(0):17.126|17.280
 390, 1666(420):6.401|7.250, 1676(0):1.390|1.560, 168(0):0.734|0.764, 167(0):7.988|8.532, 167(0):16.822|17.297
 400, 1718(439):6.390|6.753, 1704(0):1.359|1.732, 172(0):0.748|0.804, 169(0):7.749|7.784, 178(0):17.143|18.053
 410, 1576(389):6.431|7.726, 1586(0):1.371|1.962, 158(0):0.717|0.816, 160(0):7.860|8.113, 150(0):17.143|17.348
 420, 1639(404):6.420|6.884, 1639(0):1.345|2.205, 161(0):0.718|0.981, 162(0):7.725|8.204, 169(0):16.941|17.532
 430, 1828(391):6.333|6.998, 1828(0):1.363|1.712, 185(0):0.712|0.831, 184(0):7.781|8.109, 183(0):16.935|17.534
 440, 1693(365):6.427|7.375, 1696(0):1.380|1.689, 168(0):0.830|0.848, 169(0):8.020|8.507, 172(0):16.618|16.924
 450, 1743(403):6.424|7.377, 1743(0):1.376|1.610, 176(0):0.706|0.857, 176(0):7.915|8.236, 172(0):16.736|17.716
 460, 1854(334):6.202|6.753, 1853(0):1.341|1.501, 185(0):0.724|0.812, 183(0):7.673|7.825, 185(0):16.963|17.401
 470, 1944(259):6.271|7.049, 1946(0):1.284|1.709, 195(0):0.685|0.697, 195(0):7.756|8.023, 198(0):16.338|18.186
 480, 1708(407):6.317|7.343, 1706(0):1.380|1.881, 170(0):0.784|0.855, 171(0):7.952|8.688, 168(0):17.000|17.313
 490, 1849(380):6.371|7.301, 1851(0):1.344|1.589, 185(0):0.741|1.008, 186(0):7.992|8.086, 185(0):16.715|16.806
 500, 1518(414):6.470|7.747, 1514(0):1.363|1.780, 153(0):0.790|0.800, 152(0):8.059|8.249, 147(0):17.433|17.965
 510, 1617(397):6.295|7.219, 1619(0):1.360|1.852, 162(0):0.737|0.882, 161(0):7.860|11.366, 165(0):16.747|18.100
 520, 1729(391):6.380|7.159, 1726(0):1.436|1.731, 171(0):0.707|0.792, 173(0):7.879|8.168, 172(0):17.220|17.623
 530, 1628(393):6.353|7.159, 1631(0):1.360|1.567, 163(0):0.743|0.837, 164(0):7.953|8.167, 161(0):17.195|18.550
 540, 1745(382):6.377|6.962, 1747(0):1.396|1.697, 174(0):0.709|0.951, 172(0):7.558|7.684, 179(0):17.103|18.918
 550, 1129(319):6.680|7.058, 1117(0):1.452|1.727, 115(0):0.755|0.913, 117(0):8.050|8.419, 116(0):17.458|19.481
 560, 1062(285):6.842|7.845, 1067(0):1.451|1.785, 104(0):0.707|0.759, 104(0):8.291|8.489, 100(0):18.638|19.465
 570, 980(254):6.661|7.531, 959(0):1.532|1.765, 99(0):0.892|1.034, 100(0):8.231|9.792, 105(0):18.520|19.243
 580, 923(161):7.483|8.429, 900(0):2.066|2.429, 92(0):0.847|0.861, 94(0):13.631|15.379, 99(2):19.999|22.666
 590, 89(24):10.320|10.529, 90(0):2.331|2.606, 9(0):1.077|1.084, 10(0):10.935|12.559, 9(1):17.615|22.311
 600, 1732(264):6.335|6.926, 1784(0):1.363|2.580, 174(0):0.765|0.967, 166(0):7.857|8.124, 166(0):17.084|17.509

STOPPING THREADS..................................................


  [0] sc:100049  lt:15157  rt:0  fl:0 
  [1] sc:115210  lt:0  rt:0  fl:0 
  [2] sc:11522  lt:0  rt:0  fl:0 
  [3] sc:11521  lt:0  rt:0  fl:0 
  [4] sc:11523  lt:3  rt:0  fl:0 
 in 600 sec.


  [0] sc:100049  lt:15157  rt:0  fl:0 
  [1] sc:115214  lt:0  rt:0  fl:0 
  [2] sc:11522  lt:0  rt:0  fl:0 
  [3] sc:11521  lt:0  rt:0  fl:0 
  [4] sc:11523  lt:3  rt:0  fl:0 

 (all must be [OK])
 [transaction percentage]
        Payment: 43.48% (>=43.0%) [OK]
   Order-Status: 4.35% (>= 4.0%) [OK]
       Delivery: 4.35% (>= 4.0%) [OK]
    Stock-Level: 4.35% (>= 4.0%) [OK]
 [response time (at least 90% passed)]
      New-Order: 86.84%  [NG] *
        Payment: 100.00%  [OK]
   Order-Status: 100.00%  [OK]
       Delivery: 100.00%  [OK]
    Stock-Level: 99.97%  [OK]


                 11520.600 TpmC

其实测试结果最关键的就是最后一行11520.600 TpmC,下面是介绍一下TpmC是做什么用的

流量指标(Throughput,简称tpmC):按照TPC组织的定义,流量指标描述了系统在执行支付操作、订单状态查询、发货和库存状态查询这4种交易的同时,每分钟可以处理多少个新订单交易。所有交易的响应时间必须满足TPC-C测试规范的要求,且各种交易数量所占的比例也应该满足TPC-C测试规范的要求。在这种情况下,流量指标值越大说明系统的联机事务处理能力越高。

具体关于Tpcc介绍可以参考http://baike.baidu.com/view/2776305.htm

3、删除tpcc

09:35:47 # time ansible-playbook mysql_tpcc_delete.yml  --extra-vars "host=172.17.0.7 user=root warehouse=50 w=50 c=50 r=120 l=600" -k
SSH password: 

PLAY [172.17.0.7] ************************************************************* 

GATHERING FACTS *************************************************************** 
ok: [172.17.0.7]

TASK: [mysql_tpcc_delete | Delete Mysql Tpcc Database] ************************ 
changed: [172.17.0.7]

TASK: [mysql_tpcc_delete | Delete Mysql Tpcc Dir] ***************************** 
changed: [172.17.0.7]

TASK: [mysql_delete | Stop Mysql Service] ************************************* 
changed: [172.17.0.7]

TASK: [mysql_delete | Delete Mysql Boot Start Script] ************************* 
changed: [172.17.0.7]

TASK: [mysql_delete | Delete Mysql Dir And Socket] **************************** 
changed: [172.17.0.7]

TASK: [mysql_delete | Delete Mysql User] ************************************** 
changed: [172.17.0.7]

TASK: [mysql_delete | Delete Mysql Service Start Script] ********************** 
changed: [172.17.0.7]

PLAY RECAP ******************************************************************** 
172.17.0.7                 : ok=8    changed=7    unreachable=0    failed=0   


real	0m25.780s
user	0m2.446s
sys	0m0.408s

如果大家想使用我的例子,可以从github里下载(地址是https://github.com/dl528888/ansible-examples/tree/master/mysql_tpcc_install),然后放到/etc/ansible目录里,下面是内容

运维自动化之ansible playbook安装mysql tpcc测试OLTP能力_第1张图片