腾讯Tars环境搭建中遇到的坑

介绍

       Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。

       Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。Tars这个名字来自星际穿越电影人机器人Tars, 电影中Tars有着非常友好的交互方式,任何初次接触它的人都可以轻松的和它进行交流,同时能在外太空、外星等复杂地形上,超预期的高效率的完成托付的所有任务。 拥有着类似设计理念的Tars也是一个兼顾易用性、高性能、服务治理的框架,目的是让开发更简单,聚焦业务逻辑,让运营更高效,一切尽在掌握。

      目前该框架在腾讯内部,有100多个业务、1.6多万台服务器上运行使用

      腾讯一直在使用这个框架,会一直维护的

      github地址:https://github.com/Tencent/Tars

      QQ群:579079160

搭建的环境

      操作系统:centos7

      数据库:MySQL 5.7

      cmake : 3.8.0

      resin: 4.0.51

搭建步骤:

      参考https://github.com/Tencent/Tars/blob/master/Install.md

      搭建完成后一直出现各种问题,经过多天的研究,以及在群里的 @tars支持-suzi  帮助,才最终解决,这里把遇到问题总结一下

坑1 上传发布包失败

解决办法:首先确定一下rsync起来了没,起来的话看看/usr/local/app/tars/app_log/tars/tarsnode/ 下的tars.tarsnode.log有什么错误日志,检查一下这个文件夹(/usr/local/app/patchs/tars.upload/)是否存在,不存在,执行(/usr/local/app/tars/tarspatch/util/init.sh)这个脚本

执行 ps -ef|grep tars 查看一下基础服务是否都已经启动,没启动的查看日志

坑2 发布一直不成功

原因:

  1. tarsregistry服务没启动
  2. tarspatch.conf配置文件有问题,错误日志里面显示,传输的文件太大或太小(我就是卡在这里)

解决:

检查tarsregistry.conf中配置文件的数据库设置,是否和你的数据库配置一致。我的密码和默认密码不一致的,安装教程里面没有替代密码这一条,可以参考一下

cd /usr/local/app/tars
sed -i "s/tars2015/${your_password}/g" `grep tars2015 -rl ./*`

然后在启动tars_install.sh脚本

检查tarspatch.conf文件,设置size=1M,原来默认值是100M(我卡在这很久,一直发布不成功

坑三 发布成功后,刚开始tarsquerystattarsqueryproperty的当前状态为active,但一段时间后会变成inactive

原因:一个WEB管理平台的模板配置文件有问题,另一个这两个服务的obj名字没有和系统对应上

解决办法:修改WEB平台模板配置文件中,关于数据库配置,改成你自己设置的。修改两个服务的objname为固定的NoTarsObj

坑四 监控曲线图不起作用

原因:模板配置文件tars.tarsstat的SQL没有成功执行,原因是官方用的MYSQL数据库版本为5.6,我用的是5.7

解决:修改SQL语句

CREATE TABLE `${TABLE}` (
    `stattime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `f_date` date NOT NULL DEFAULT '1970-01-01',
    `f_tflag` VARCHAR (8) NOT NULL DEFAULT '',
    `source_id` VARCHAR (15) NOT NULL DEFAULT '',
    `master_name` VARCHAR (128) NOT NULL DEFAULT '',
    `slave_name` VARCHAR (128) NOT NULL DEFAULT '',
    `interface_name` VARCHAR (128) NOT NULL DEFAULT '',
    `tars_version` VARCHAR (16) NOT NULL DEFAULT '',
    `master_ip` VARCHAR (15) NOT NULL DEFAULT '',
    `slave_ip` VARCHAR (21) NOT NULL DEFAULT '',
    `slave_port` INT (10) NOT NULL DEFAULT 0,
    `return_value` INT (11) NOT NULL DEFAULT 0,
    `succ_count` INT (10) UNSIGNED DEFAULT NULL,
    `timeout_count` INT (10) UNSIGNED DEFAULT NULL,
    `exce_count` INT (10) UNSIGNED DEFAULT NULL,
    `interv_count` VARCHAR (128) DEFAULT NULL,
    `total_time` BIGINT (20) UNSIGNED DEFAULT NULL,
    `ave_time` INT (10) UNSIGNED DEFAULT NULL,
    `maxrsp_time` INT (10) UNSIGNED DEFAULT NULL,
    `minrsp_time` INT (10) UNSIGNED DEFAULT NULL,
    PRIMARY KEY (
        `source_id`,
        `f_date`,
        `f_tflag`,
        `master_name`,
        `slave_name`,
        `interface_name`,
        `master_ip`,
        `slave_ip`,
        `slave_port`,
        `return_value`,
        `tars_version`
    ),
    KEY `IDX_TIME` (`stattime`),
    KEY `IDC_MASTER` (`master_name`),
    KEY `IDX_INTERFACENAME` (`interface_name`),
    KEY `IDX_FLAGSLAVE` (`f_tflag`, `slave_name`),
    KEY `IDX_SLAVEIP` (`slave_ip`),
    KEY `IDX_SLAVE` (`slave_name`),
    KEY `IDX_RETVALUE` (`return_value`),
    KEY `IDX_MASTER_IP` (`master_ip`),
    KEY `IDX_F_DATE` (`f_date`)
) ENGINE \= MyISAM DEFAULT CHARSET \= gbk

最好在MYSQL IDE管理器里面把,模板配置文件中关于SQL的语句都执行一遍,有问题的调通,替换配置文件中SQL

总结

Tars暂时不说它的工作效率,但是在发布管理,以及监控这块儿做的比dubbo和ice都好,设计理念和是实现有点借鉴ICE的思路,总的来说,还是比较推荐使用的。

希望腾讯提供一些更详细的文档和案例,这样大家才会更容易上手,常见问题做一个总结。已经出错了需要看那些日志,日志中常见错误的解决。

 

 

转载于:https://my.oschina.net/u/1429136/blog/879710

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值