通过docker部署体验takin的小伙伴都应该知道,在安装部署手册中有提到:在启动surge-deploy任务前,需要将启动命令中的ip参数替换为docker容器所在宿主机的ip,很多小伙伴都在这里踩过坑,有忘了修改的,有改错的,还有不知道怎么修改的,这些都会导致各种小伙伴们在体验产品的过程中,遇到各种各种的问题。像这样:

应用agent日志中提示找不到日志节点

还有像这样:

小伙伴满心欢喜压测完,却发现请求流量明细真空

其实这些,都跟surge-deploy任务是否正确启动有着很大的关系,今天就来给大家说一说surge-deploy配置启动命令的正确姿势!

首先,在安装完镜像进入容器中,我们能看到这样的目录结构(当前目录为/data目录):

如果发现自己的目录结构和图上有区别的小伙伴请不要着急,初次安装镜像需要一定的初始化时间,一些文件可能还未被解压出来,这个时间一般是10分钟左右~

和图上目录结构一致的小伙伴们,恭喜你们,你们离成功又更近了一步啦!我们看到文件夹中有一个install.sh文件,通过vi命令打开:

我们看到在行尾处(绿色框框出来的)就是我们的surge-deploy启动命令了,这个时候大家可以把这个命令复制一下,后续我们修改就要用到啦。

nohup java -jar surge-deploy-1.0-jar-with-dependencies.jar '{"172.17.0.2":"192.168.1.138"}' > surge.out 2>&1 &

首先我们分析一下这个命令,nohup xxxxx,在linux中nohup命令用于不挂断地运行命令,而学过java的小伙伴都知道java -jar 用于启动一个jar包,而这里的surge-deploy-1.0-jar-with-dependencies.jar就是我们提供的jar包,然后我们先忽略那串令人头疼的ip配置,我们看到在后面是:

  >surge.out  2>&1 &

在linux中> 符号用作输出符,这里的意思就是将java -jar 启动的日志输出到surge.out文件,所以大家如果想要查看surge-deploy的运行日志,就可以查看surge.out文件啦,再往后,我们看到有一个2>&1, 2>1? 2当然大于1,为什么还要&?哈哈,这里其实不是大于符号,在linux中,2代表错误输出,1代表标准输出,这里的含义就是将错误输出重定向到标准输出,简单理解,就是错误日志和正常日志都被输出到一起!

细心的小伙伴发现了,为什么末尾还有一个&,这个&怎么就跟我们过不去了!哈哈,这里不能怪&,他的作用可重要。前面我们说到nohup代表不挂断地运行命令,但是这个操作仍是在前台执行的,我们不能一直盯着他不做其他事呀,所以&就和nohup巧妙的结合起来了,他们在一起,就代表这个命令将会在后台默默地执行,谁也干扰不了,像不像海枯石烂?

题外话,我们总结一下,整体的启动命令的含义就是静默启动surge-deploy任务,并将所有日志输出到surge.out文件。是不是很简单?有人问:不是还有那串烦人的ip吗?哈哈是的,其实这里不配置ip也是可以的,为什么呢,这里就要解释下surge-deploy在takin产品中的作用了。

surge-deploy作为takin-data的运行模块,实际上是承担了一个接收linkAgent推送日志,并进行数据存储和计算的角色。有人问它计算了什么?在我们开源的第一个版本里,我们的链路梳理功能由于准备不充分,其实是并没有开放出来的;而承担链路梳理功能的,就是我们的takin-data模块!为我们的takin打call!告诉大家一个好消息,下个月我们就会发布开源第二次版本,而这次版本链路梳理功能就会隆重登场拉,这里给大家剧透下,看张图,提前体验下我们强大的链路梳理功能:

应用调用关系一目了然有木有!!好了,言归正传,大家现在体会到takin-data模块的重要性了吧,回到那个ip上来,takin-data目前是利用netty服务和linkAgent进行网络通信,从而实现接收linkAgent传输过来的的日志信息,而我们作为服务端,需要对外暴露服务地址和端口。所以,目前我们是根据本机的ip地址进行服务注册以及暴露的,但是由于我们的部署环境是在docker容器内部,所以获取到的本机ip容器是docker网卡虚拟生成的一个ip,也就是参数中的172.12.0.2。而对docker有一定了解的人肯定知道,通过在外网,我们是无法直接访问dockerip的,需要用一些特殊手段来进行数据转发。而这里,我们就是通过ip映射的关系来实现数据转发的。

而我为什么说不配置这个ip也可以呢,那当然是将我们的linkAgent也起在容器内部啦,这样就是容器内部的通信,完全可以,没问题。

但是!!!对于有些想要压测自己应用的小伙伴来说,他们的应用可能在公司内网,可能在云服务器上,总而言之,肯定不在容器内,这种情况下默认的服务注册就不能满足我们的需求了。

于是,我们在启动surge-deploy任务的时候通过传入指定ip映射,来实现将实际可被外网访问的ip注册到服务上去,以达到数据通信的目的。

有些小伙伴问:那我配置的外网的ip,可我自己的surge-deploy不还是部署在容器内部吗,不也没用吗?这就要说到docker的通信机制了,细心的小伙伴可能发现我们在安装镜像时候追加了很多端口号,如下:

docker run -d -p 80:80 -p 2181:2181 -p 3306:3306 -p 6379:6379 -p 8086:8086

-p 9000:9000 -p 10032:10032 -p 6628:6628 -p 8000:8000 -p 6627:6627 -p 8888:8888

-p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/forcecop/forcecop:v1.0.0

大家看到很多-p了吧,这种方式被称作端口映射,什么意思呢:就是将docker宿主机的端口和容器内部的端口号做一个绑定关系,当外部访问了宿主机的xxxx端口,则请求将会被自动转发到容器内部的xxxx端口。说到这里,是不是各位小伙伴们都明白了!!!于是,我们就实现了外部数据的传输!

说到这里,大家是不是对这个ip配置都了如指掌拉,我们总结下:如果是同一网络环境中的linkAgent和surge-deploy通信,大家大可不必配置这个ip映射;如果surge-deploy部署在容器内部,那么ip映射的左边的172.17.0.2大家也不必修改,除非本机上运行了多个docker镜像,导致takin镜像的dockerip不是172.17.0.2,那么这个时候就需要进行修改了。关于ip映射的右边,大家现在应该知道怎么配置了吧,如果是内网环境通信,配置docker宿主机的内网ip即可,如果是外网访问,如阿里云的机器想要访问,那么就应该配置docker宿主机的外网ip。有的小伙伴不知道外网ip是什么的,可以看一下百度百科的解释。

想要了解更多开源产品信息,扫码小树入群交流!

关于takin-data,你想知道的都在这里(一)启动命令篇的更多相关文章

  1. 关于takin-data,你想知道的都在这里(二)trace日志篇

    相信大家在使用takin的过程中都见到过压测过程中实时展示的请求流量明细和请求详情了吧,像这样: 还有这样: 这样的请求流量明细和调用链详情是怎么实现的呢,今天就带大家探究下. 在前面的启动命令篇(h ...

  2. 看完SQL Server 2014 Q/A答疑集锦:想不升级都难!

    看完SQL Server 2014 Q/A答疑集锦:想不升级都难! 转载自:http://mp.weixin.qq.com/s/5rZCgnMKmJqeC7hbe4CZ_g 本期嘉宾为微软技术中心技术 ...

  3. Swift具体解释之三----------函数(你想知道的都在这里)

    函数(你想知道的都在这里) 注:本文为作者自己总结.过于基础的就不再赘述 ,都是亲自測试的结果.如有错误或者遗漏的地方.欢迎指正.一起学习. 1. 函数的简单定义和调用 简单的无參函数就不再赘述 , ...

  4. 关于MySQL慢日志,你想知道的都在这

    关于MySQL慢日志,你想知道的都在这 https://mp.weixin.qq.com/s/Ifbq0Dk13SO3WVghqWVUbA 作者介绍邹鹏,现任职于腾讯云数据库团队,负责腾讯云数据库My ...

  5. CYDIA装了个插件,想删除怎么都删除,电脑如何删除插件?

    http://bbs.weiphone.com/read-htm-tid-3670917.html 装了个插件,想删除怎么都删除不掉不要跟我说在CYDIA里面删除.,在CYDIA里点击该插件就会闪退C ...

  6. 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)

    微信.QQ.新浪微博等第三方登录,你想知道的都在这了(上):https://www.jianshu.com/p/133d84042483 微信.QQ.新浪微博等第三方登录,你想知道的都在这了(下):h ...

  7. python学习之路------你想要的都在这里了

    python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...

  8. KMP算法,你想知道的都在这里!

    简洁 我相信很多人都听说过KMP算法(PS:在上数据结构的时候,这个算法自始至终都没想明白) 大家也知道KMP算法是用来寻找目标子串的算法,但是都没有真正搞懂KMP.之前,我也是如此,我疑惑的有: N ...

  9. 【高热FAQ】关于智慧康养物联网加速器 ,你想知道的都在这

    摘要:从软硬件解决方案.设备接入到资源扶持,一文梳理智慧康养物联网加速器中ISV最关心的问题. 本文分享自华为云社区<[高热FAQ]关于智慧康养物联网加速器 ,你想知道的都在这>,作者:技 ...

随机推荐

  1. react + layui 坑总结

    与react 结合的时候,layui 是纯dom操作,而react是虚拟dom ,二者的结合难免会出现诸多问题. 1 select 下拉框 默认值的修改要通过defaultValue 属性来修改,并且 ...

  2. Linux复习笔记-001-进程的管理

    1.什么是进程? 进程是已经启动的可执行的程序运行实例. 程序是二进制文件,静态 ./bin/date/ /usr/sbin/ 进程:是程序运行的过程 2.Linux为1的进程? centos5或6为 ...

  3. NOIP模拟38:b

      这是T2.   一个容斥(其实也可以欧拉反演做,但是我不会).   首先开一个桶,记录第i行的j有多少个.   然后枚举1-\(maxn\),枚举他的值域内的倍数,记录倍数在第i行有多少个,将个数 ...

  4. ipsec.conf配置文件多个保护子网解析流程

    Author       : Email         : vip_13031075266@163.com Date          : 2021.01.23 Copyright : 未经同意不得 ...

  5. 手把手教你 Docker Compose的安装和使用

    一.Docker Compose是什么? Docker Compose是一个工具,用于定义和运行多容器应用程序的工具: Docker Compose通过yml文件定义多容器的docker应用: Doc ...

  6. Delphi使用AcroPDF ActiveX显示PDF文件

    效果展示 调用方式 放入窗体即可使用,不想安装太多组件,可使用纯代码方式调用 interface ..... var AcroPDF: TAcroPDF; .... implementation .. ...

  7. 九、Abp vNext 基础篇丨评论聚合功能

    介绍 评论本来是要放到标签里面去讲的,但是因为上一章东西有点多了,我就没放进去,这一章单独拿出来,内容不多大家自己写写就可以,也算是对前面讲解的一个小练习吧. 相关注释我也加在代码上面了,大家看看代码 ...

  8. Android学习记录(一)——安装Android Studio

    "工欲善其事必先利其器"学习安卓开发的第一步,安装Android Studio. 一.什么是Android Studio? Android Studio 是谷歌推出的一个Andro ...

  9. 概述 .NET 6 ThreadPool 实现

    目录 前言 任务的调度 基本调度单元 IThreadPoolWorkItem 实现类的实例. Task 全局队列 本地队列 偷窃机制 Worker Thread 的生命周期管理 线程生命注入实验 .N ...

  10. PHP中的MySQLi扩展学习(一)MySQLi介绍

    关于 PDO 的学习我们告一段落,从这篇文章开始,我们继续学习另外一个 MySQL 扩展,也就是除了 PDO 之外的最核心的 MySQLi 扩展.可以说它的祖先,也就是 MySQL(原始) 扩展是我们 ...