使用nginx的stream tcp模块实现hbase的thrift负载

昨天已经发了篇文章,说 nginx1.9版本涵盖了ngx_stream_core_module的功能, ngx_stream_core_module是可以对tcp server进行负载均衡的。 不知道是官网针对stream的conf配置没有更新完整,还是stream本身附带的参数就不多,总觉得nginx官方出的ngx_stream_core_module模块还没有阿里出的nginx tcp proxy专业似的…    不管怎么说,拿出来试下,这样才有资格评论谁更专业….. 


 原文链接是   http://xiaorui.cc/?p=1377


下面是我的测试的环境,nginx启动了4个worker ,然后nginx后端挂载了26个thrift server节点。 

题外,现在几乎是每个hbase都有个thrift了, 我们部门只能是用这26个了,老大说 过段时间无锡会再增加40个节点供我们玩乐,听起来就好爽的样子…. ….  。 


客户端方面是启动了分布式的测试环境,多个机器,每个机器16个独立进程,每个进程里面还有15个线程池,python操作hbase的模块用的是happybase,逻辑里面有批量入库的功能。 


我这边的项目基本都会拆分成个大模块,然后每个模块为一个docker image,这样的好处就是极其容易扩展….  也相当的容易改成分布式的架构….    


这次的测试也都是在docker下进行的…..


root@bj-buzz-docker05:/#
root@bj-buzz-docker05:/# ps aux|grep nginx
root     21358  0.0  0.0   8812   776 ?        S+   18:30   0:00 grep –color=auto nginx
root     25070  0.0  0.0  31100  1724 ?        Ss   May05   0:00 nginx: master process nginx
root     25192  0.2  0.0  32272  2684 ?        S    May05   4:01 nginx: worker process
root     25193  0.3  0.0  33108  3436 ?        S    May05   4:35 nginx: worker process
root     25194  0.3  0.0  32664  3084 ?        R    May05   4:30 nginx: worker process
root     25195  0.2  0.0  32384  2836 ?        S    May05   3:39 nginx: worker process
root     25196  0.2  0.0  32072  2492 ?        S    May05   3:42 nginx: worker process
root@bj-buzz-docker05:/#dstat
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
 60   2  36   0   0   2|   0     0 |  29M   13M|   0     0 |  56k   24k
 73   3  22   1   0   2|   0   140k|  22M   19M|   0     0 |  47k   29k
 68   2  29   0   0   1|   0     0 |  38M   26M|   0     0 |  45k   29k
 71   3  25   0   0   2|   0     0 |  20M   19M|   0     0 |  50k   32k
 73   2  24   0   0   1|   0     0 |  41M   39M|   0     0 |  42k   27k
 74   2  22   0   0   2|   0     0 |  35M   32M|   0     0 |  56k   34k
 78   2  19   0   0   1|   0    32k|  39M   26M|   0     0 |  45k   25k
 63   3  32   0   0   2|   0    72k|  22M   13M|   0     0 |  53k   27k
 66   2  29   0   0   2|   0  3408k|  57M   38M|   0     0 |  54k   27k
 69   2  27   1   0   1|   0   132k|  17M   11M|   0     0 |  38k   24k
 67   3  29   0   0   1|   0  3796k|  28M   19M|   0     0 |  45k   25k
 66   3  29   0   0   2|   0     0 |  22M 2882k|   0     0 |  49k   25k
 65   2  32   0   0   2|   0     0 |  44M 3598k|   0     0 |  52k   26k
 71   2  26   0   0   1|   0     0 |  22M   20M|   0     0 |  44k   31k
 71   2  26   0   0   1|   0     0 |  12M 4126k|   0     0 |  44k   24k
 62   2  34   0   0   2|   0    52k|  29M   13M|   0     0 |  54k   28k
 45   2  51   0   0   3|   0     0 |  49M   31M|   0     0 |  55k   21k
 75   3  21   0   0   1|   0     0 |  18M   21M|   0     0 |  40k   25k
 65   3  30   1   0   2|   0    96k|  44M   40M|   0     0 |  49k   31k
 76   3  20   0   0   1|   0     0 |  30M   29M|   0     0 |  45k   32k
 64   2  33   0   0   1|   0     0 |  39M   36M|   0     0 |  43k   28k
 72   2  24   0   0   1|   0     0 |  21M   41M|   0     0 |  44k   25k
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
 72   3  23   0   0   2|   0   108k|  33M   31M|   0     0 |  46k   29k
 68   2  28   0   0   2|   0    28k|  38M   35M|   0     0 |  46k   30k
 68   3  28   0   0   2|   0    76k|  41M   40M|   0     0 |  50k   33k
 75   2  22   0   0   1|   0     0 |  34M   37M|   0     0 |  45k   23k
 75   2  20   1   0   2|   0   104k|  20M   11M|   0     0 |  51k   28k
 53   1  43   0   0   2|   0  3252k|  35M   18M|   0     0 |  58k   22k
 74   3  21   0   0   2|   0   108k|  21M   15M|   0     0 |  50k   31k
 71   2  24   0   0   2|   0    76k|  34M   42M|   0     0 |  48k   30k
 69   2  28   0   0   1|   0     0 |  23M   40M|   0     0 |  40k   29k
 75   2  23   0   0   1|   0     0 |  12M   11M|   0     0 |  38k   23k
 72   2  25   0   0   1|   0     0 |  11M   10M|   0     0 |  41k   24k
 73   3  23   0   0   1|   0     0 |  28M   18M|   0     0 |  41k   23k

 root@bj-buzz-docker05:/# uptime
 18:03:55 up 61 days,  3:08,  0 users,  load average: 13.09, 13.04, 14.58
root@bj-buzz-docker05:/#
root@bj-buzz-docker05:/# free -m
             total       used       free     shared    buffers     cached
Mem:         80506      57402      23104          0       1032      47156
-/+ buffers/cache:       9213      71293
Swap:            0          0          0
root@bj-buzz-docker05:/#

根据cpu,内存和承载流量的大小,我这边基本可以判断出stream要比nginx_tcp_proxy_module稍微差那么一点点…   以前用nginx_tcp_proxy_module的时候,流量是可以长时间在100MB浮动的…   而用stream只能是在60MB上下的浮动,只是时不时的飙到90MB而已…  速度不是很稳…   


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

3 Responses

  1. 火辣美女图 2015年10月7日 / 下午9:53

    世界太大还是遇见你,世界太小还是丢了你。

  2. 提问 2015年5月7日 / 下午5:02

    看起来不错,不知道能不能调度mail

发表评论

邮箱地址不会被公开。 必填项已用*标注