美文网首页
腾讯 Tars 基础框架搭建过程

腾讯 Tars 基础框架搭建过程

作者: Sirius_lwq | 来源:发表于2020-06-18 20:34 被阅读0次

    Tars 简介

    腾讯 Tars 是腾讯内部使用的 TAF(Tencent Application Framework)的对外开源版,去掉了许多冗杂多余的部分。该框架集开发、运维、微服务、RPC 等为一体。对程序员而言,这就是一个能够快速搭建整个微服务体系的开发框架。这个框架支持基于 C++Node.jsPHPJava 、最新版本已经支持后台开发语言新贵——Go

    1.安装

    Tars 实际的应用场景是多机器、多节点部署的,不过从实验验证的角度,教程只是在单一一台机器上,实现 Tars 管理平台部署,以及任务的发布。由于 Tars 版本一直在迭代,请读者 follow 最新的 Tars 版本来。官方安装文档在这里。我们选择源码编译的方式进行安装。

    环境准备

    系统准备

    部署实验需要准备至少一台 Linux 机器。这可以是一台本地的实体机或虚拟机,也可以是一台云主机。由于部署过程中,需要编译 Tars 框架以及 MySQL 代码(如果系统里没装 Oracle 的 MySQL 的话),强烈建议系统至少要求有 4GB 的内存![1]系统建议采用 CentOS 或 Ubuntu。本文采用 CentOS 来安装,但 Ubunto 差别不大,读者可以参考执行。

    依赖环境

    软件 软件要求
    linux内核版本: 2.6.18及以上版本(操作系统依赖)
    gcc版本: 4.8.2及以上版本、glibc-devel(c++语言框架依赖)
    bison工具版本: 2.5及以上版本(c++语言框架依赖)
    flex工具版本: 2.5及以上版本(c++语言框架依赖)
    cmake版本: 3.2及以上版本(c++语言框架依赖)
    mysql版本: 4.1.17及以上版本(框架运行依赖)
    nvm版本: 0.35.1及以上版本(web管理系统依赖, 脚本安装过程中自动安装)
    node版本: 12.13.0及以上版本(web管理系统依赖, 脚本安装过程中自动安装)

    安全前做好对版本进行检查,默认安装版本可能会低于要求版本。
    运行服务器要求:安装linux系统的机器 or mac 机器

    1.1. 编译包依赖下载安装介绍

    源码编译过程需要安装:gcc, glibc, bison, flex, cmake, ncurses-devel zlib-devel

    例如,在Centos7下,执行:

    yum install glibc-devel gcc gcc-c++ bison flex cmake which psmisc ncurses-devel zlib-devel
    

    如果安装的cmake版本低于3.2 可以选择cmake3安装。然后使用创建链接:

    ln -s /usr/bin/cmake3 /usr/bin/cmake
    

    在ubuntu下执行:

    sudo apt-get install build-essential bison flex cmake psmisc libncurses5-dev zlib1g-dev
    

    在mac安装, 请先安装brew(如何在mac上安装brew, 请自行搜索)

    brew install bison flex cmake
    

    1.2. Mysql安装

    正式部署时, 如果你的mysql可以安装在其他机器上.也可以使用mariadb。笔者使用的版本为

    mysql  Ver 15.1 Distrib 5.5.65-MariaDB, for Linux (x86_64) using readline 5.1
    

    Tars框架安装需要在mysql中读写数据, 因此需要安装mysql, 如果你已经存在mysql, 可以忽略该步骤.

    安装mysql请参考mysql安装

    1.3. Mysql client安装

    tars>=2.1.0 可以跳过这一步

    注意请保证mysql在PATH环境变量的目录下

    which mysql
    

    如果你本机安装了mysql, 那么会自动安装mysql客户端, 这一步可以跳过.

    如果你的mysql在其他机器, 那么本机安装Tars框架之前, 需要先安装mysql客户端(安装时需要探测mysql的连通性)

    rpm -ivh https://repo.mysql.com/mysql57-community-release-el7.rpm
    yum install -y mysql 
    

    2. Tars C++开发环境(源码安装框架必备)

    源码安装框架才需要做这一步, 如果只是用c++写服务, 只需要下载tarscpp代码即可

    下载TarsFramework源码

    git clone https://github.com/TarsCloud/TarsFramework.git --recursive
    

    然后进入build源码目录

    cd TarsFramework
    git submodule update --remote --recursive
    cd build
    cmake ..
    make -j4
    

    也可以使用脚本一件编译安装

    ./build.sh all
    

    默认情况下, 编译Tars会自动下载mysql-client源码, 并编译libmyqlclient.a

    如果需要重新编译

    cd build
    make clean
    make -j4
    

    切换至root用户,创建安装目录

    cd /usr/local
    mkdir tars
    mkdir app
    

    安装

    cd build
    make install
    

    默认的安装包路径:/usr/local/tars/cpp, 即编译完成的框架&安装脚本在这个目录 默认的安装完成后的路径为/usr/local/app, 即安装完成后的路径

    install以后, 依赖的库(mysql静态库)和头文件也会安装到该目录下(/usr/local/tars/cpp/thirdparty), 如果开启了ssl, nghttp2同理.

    开启了ssl, nghttp2请参见相关文章

    如果你想调整安装目录(建议不要调整, 需要修改好几个的地方, 容易出错):

    **需要修改tarscpp/cmake/Common.cmake文件中的安装路径。**
    **需要修改tarscpp/servant/makefile/makefile.tars文件中的TARS_PATH的路径**
    **需要修改tarscpp/servant/makefile/tars-tools.cmake文件中的TARS_PATH的路径**
    **需要修改tarscpp/servant/script/*.sh文件中的DEMO_PATH的路径**
    

    3.Tars框架安装

    3.1. 框架安装模式

    框架有两种模式:

    • centos/ubuntu/mac一键部署, 安装过程中需要网络从外部下载资源
    • tars-framework>=2.1.0支持mac部署
    • 制作成docker镜像来完成安装, 制作docker过程需要网络下载资源, 但是启动docker镜像不需要外网

    框架安装注意事项:

    • 安装过程中, 由于tars-web依赖nodejs, 所以会自动下载nodejs, npm, pm2以及相关的依赖, 并设置好环境变量, 保证nodejs生效.
    • nodejs的版本目前默认下载的v12.13.0
    • 如果你本机装了低版本nodejs, 最好提前卸载掉

    注意:需要完成TarsFramework的编译和安装

    下载tarsweb并copy到/usr/local/tars/cpp/deploy目录下(注意目录名是web, 不要搞错!):

    git clone https://github.com/TarsCloud/TarsWeb.git
    mv TarsWeb web
    cp -rf web /usr/local/tars/cpp/deploy/
    

    如果访问github慢,可以使用gitee上的分支

    git clone https://gitee.com/juffson/TarsWeb.git
    

    例如, 这是/usr/local/tars/cpp/deploy下的文件:

    [user@VM-0-55-centos]:/usr/local/tars/cpp/deploy$ ls -l
    总用量 9940
    -rw-r--r--  1 root root  443392 6月  18 17:07 busybox.exe
    -rw-r--r--  1 root root    1922 6月  18 17:07 centos7_base.repo
    -rw-r--r--  1 root root    1396 6月  18 17:07 Dockerfile
    -rwxr-xr-x  1 root root    3291 6月  18 17:07 docker-init.sh
    -rwxr-xr-x  1 root root     319 6月  18 17:07 docker.sh
    drwxr-xr-x  7 root root    4096 6月  18 19:23 framework
    -rwxr-xr-x  1 root root    4729 6月  18 17:07 linux-install.sh
    -rwxr-xr-x  1 root root 9655568 6月  18 19:09 mysql-tool
    -rwxr-xr-x  1 root root     882 6月  18 17:07 tar-server.sh
    -rwxr-xr-x  1 root root   17042 6月  18 17:07 tars-install.sh
    -rwxr-xr-x  1 root root     320 6月  18 17:07 tars-stop.sh
    drwxr-xr-x  2 root root    4096 6月  18 19:23 tools
    drwxr-xr-x 12 root root    4096 6月  18 19:28 web
    -rwxr-xr-x  1 root root    3534 6月  18 17:07 web-install.sh
    -rwxr-xr-x  1 root root    1476 6月  18 17:07 windows-install.sh
    

    3.2 (centos/ubuntu/mac)一键部署

    进入/usr/local/tars/cpp/deploy, 执行:

    chmod a+x linux-install.sh
    ./linux-install.sh MYSQL_HOST MYSQL_PASSWORD INET REBUILD(false[default]/true) SLAVE(false[default]/true) 
    

    MYSQL_USER MYSQL_PORT
    MYSQL_HOST: mysql数据库的ip地址
    MYSQL_PASSWORD: mysql数据库的MYSQL_USER的密码(注意密码不要有太特殊的字符, 例如!, 否则shell脚本识别有问题, 因为是特殊字符)
    INET: 网卡的名称(ifconfig可以看到, 比如eth0), 表示框架绑定的本机IP, 注意不能是127.0.0.1[2]
    REBUILD: 是否重建数据库,通常为false, 如果中间装出错, 希望重置数据库, 可以设置为true
    SLAVE: 是否是从节点
    MYSQL_USER: mysql用户, 默认是root
    MYSQL_PORT: mysql端口

    举例, 安装两台节点, 一台数据库(假设: 主[192.168.7.151], 从[192.168.7.152], mysql:[192.168.7.153])
    主节点上执行(192.168.7.151)

    chmod a+x linux-install.sh
    ./linux-install.sh 192.168.7.153 tars2015 eth0 false false root 3306
    

    主节点执行完毕后, 从节点执行:

    chmod a+x linux-install.sh
    ./linux-install.sh 192.168.7.153 tars2015 eth0 false true root 3306
    

    执行过程中的错误参见屏幕输出, 如果出错可以重复执行(一般是下载资源出错)[3]

    管理页面

    Tars web 管理平台启动后,如果按照默认设置的话,平台会在 3000 端口建立 http 服务。使用浏览器访问,可以看到管理界面。(首次登陆需要设置管理员密码)


    image.png
    1. 笔者这样只有 1 核 2GB 云主机的,编译时会出现卡顿的情况;有时直接卡出ERROR,如果不是编译错误,直接不停的重新编译就好了。
      由于内存不足,启动时数据库直接爆了,后面添加了swap区域抢救了回来。

    2. 笔者使用的是云主机,使用ifconfig查看的网卡 eth0为内网地址,因此改用了lo网卡(127.0.0.1)曲线救国,从外部公网也可以访问。

    3. 注意:
      脚本会自动根据传入的MYSQL_USER和MYSQL_PASSWORD来登录数据库,创建TarsAdmin账号和授权Tars相关数据库供框架使用
      如果是ubuntu, 需要sudo linux-install.sh …来执行
      注意: 执行完毕以后, 可以检查nodejs环境变量是否生效: node –version
      安装完成以后, 会在/etc/profile下写入nodejs相关的环境变量
      如果没生效, 手动执行: source /etc/profile, 如果是ubuntu请注意权限的问题

    相关文章

      网友评论

          本文标题:腾讯 Tars 基础框架搭建过程

          本文链接:https://www.haomeiwen.com/subject/wjbuxktx.html