腾讯 Tars 基础框架搭建过程

2020-06-18  本文已影响0人  Sirius_lwq

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. 框架安装模式

框架有两种模式:

框架安装注意事项:

注意:需要完成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请注意权限的问题

上一篇下一篇

猜你喜欢

热点阅读