Tars部署

1. 依赖环境

软件软件要求
linux 内核版本: 2.6.18 及以上版本(操作系统依赖)
gcc 版本: 4.8.2 及以上版本、glibc-devel(c++语言框架依赖)
bison 工具版本: 2.5 及以上版本(c++语言框架依赖)
flex 工具版本: 2.5 及以上版本(c++语言框架依赖)
cmake 版本: 3.2 及以上版本(c++语言框架依赖)
mysql 版本: 5.6 及以上版本(框架运行依赖)
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

1.2. Mysql 安装

正式部署时, 如果你的 mysql 可以安装在其他机器上.

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

用 utf8 的安装方式 下载 mysql 源码(这里使用的是 mysql-5.6.26),用 utf8 的安装方式 mysql,解压后编译: 下面增加了 mysql-5.6.26 的安装方式

cd ${mysql安装目录}
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.26.tar.gz
tar -zxvf mysql-5.6.26.tar.gz
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.26 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make
make install

注意,对于用 Tars 的 c++进行开发编译的服务,mysql 建议采用静态库,源码编译,避免所有服务器都要安装 mysql 的动态库。

对于在服务器用 Tars 的 c++进行开发编译服务代码而言,经过上面步骤就可以进行编译安装 Tars 开发框架了。

若要是搭建 Tars 框架的运行环境,需要以下步骤,切换至 root 用户,对 mysql 进行配置。

以下脚本有删除动作(rm -rf /usr/local/mysql/data), 请注意!!

yum install perl
cd /usr/local/mysql
useradd mysql
rm -rf /usr/local/mysql/data
mkdir -p /data/mysql-data
ln -s /data/mysql-data /usr/local/mysql/data
chown -R mysql:mysql /data/mysql-data /usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysql
**如果/etc/目录下有my.cnf存在,需要把这个配置删除了**
rm -rf /etc/my.cnf
yum install -y perl-Module-Install.noarch
perl scripts/mysql_install_db --user=mysql
vim /usr/local/mysql/my.cnf

补充了上面删除 my.cnf 的命令 rm -rf /etc/my.cnf

给一个 my.cnf 配置实例:

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin

# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
# port = .....
# server_id = .....
socket = /tmp/mysql.sock

bind-address=${your machine ip}

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

注意将 bind-address 改为部署机器的 IP

启动 mysql

service mysql start

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

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

下载 TarsFramework 源码,然后进入 build 源码目录

cd ${source_folder}
git clone https://github.com/TarsCloud/TarsFramework.git --recursive
cd TarsFramework
git submodule update --remote --recursive
** 此处需要拉取TarsFramework\tarscpp、TarsFramework\tarscpp\servant\protocol 最新代码,默认为空文件
cd build
cmake ..
make

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

如果需要重新编译

cd build
make clean
make

安装

mkdir -p /usr/local/tars
mkdir -p /usr/local/app

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的路径**

Tars 框架安装

3.1. 框架安装模式

框架安装注意事项:

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

注意:需要完成 TarsFramework 的编译和安装 注意:框架依赖 mysql, 如果你使用 mysql8, 注意需要关闭 ssl 以及启用 mysql_native_password

下载 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/

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

ubuntu@VM-0-14-ubuntu:/usr/local/tars/cpp/deploy$ ls -l
total 1030h
-rw-r--r--  1 root root  443392 Apr  3 17:22 busybox.exe
-rw-r--r--  1 root root    1922 Apr  3 17:22 centos7_base.repo
-rw-r--r--  1 root root    1395 Apr  3 17:22 Dockerfile
-rwxr-xr-x  1 root root    3260 Apr  4 11:31 docker-init.sh
-rwxr-xr-x  1 root root     319 Apr  3 22:13 docker.sh
drwxr-xr-x  7 root root    4096 Apr  3 17:57 framework
-rwxr-xr-x  1 root root    4537 Apr  4 11:31 linux-install.sh
-rwxr-xr-x  1 root root 9820288 Apr  3 22:16 mysql-tool
-rwxr-xr-x  1 root root     811 Apr  4 11:31 tar-server.sh
-rwxr-xr-x  1 root root   16449 Apr  3 17:22 tars-install.sh
-rwxr-xr-x  1 root root     320 Apr  4 11:31 tars-stop.sh
drwxr-xr-x  2 root root    4096 Apr  3 17:57 tools
drwxr-xr-x 12 root root    4096 Apr  3 21:07 web
-rwxr-xr-x  1 root root    3590 Apr  3 17:22 web-install.sh
-rwxr-xr-x  1 root root    1476 Apr  3 17:22 windows-install.sh

最后执行  ./tars-install.sh MYSQL_IP MYSQL_PASSWORD  HOSTIP REBUILD(false[default]/true) SLAVE(false[default]/true) MYSQL_USER MYSQL_PORT INSTALL_PATH OVERWRITE(false[default]/true)

./tars-install.sh MYSQL_IP MYSQL_PASSWORD  HOSTIP true false root 3306 /usr/local/app true

3.2. 框架部署说明

框架可以部署在单机或者多机上, 多机是一主多从模式, 通常一主一从足够了:

  • 主节点只能有一台, 从节点可以多台
  • 主节点默认会安装:tarsAdminRegistry, tarspatch, tarsweb, tarslog, tarsstat, tarsproperty, 这几个服务在从节点上不会安装
  • tarslog 用于收集所有服务的远程日志, 建议单节点, 否则日志会分散在多机上
  • 原则上 tarspatch, tarsweb 可以是多点, 如果部署成多点, 需要把/usr/local/app/patchs 目录做成多机间共享(可以通过 NFS), 否则无法正常发布服务
  • 虽然 tarsAdminRegistry 上记录了正在发布服务的状态, 但是原则上也可以可以多节点, tarsweb 调用 tarsAdminRegistry 是 hash 调用
  • 后续强烈建议把 tarslog 部署到大硬盘服务器上
  • 实际使用中, 即使主从节点都挂了, 也不会影响框架上服务的正常运行, 只会影响发布
  • 一键部署会自动安装好 web(自动下载 nodejs, npm, pm2 等相关依赖), 同时开启 web 权限

部署完成后会创建 5 个数据库,分别是 db_tars、db_tars_web、db_user_system、 tars_stat、tars_property。

其中 db_tars 是框架运行依赖的核心数据库,里面包括了服务部署信息、服务模版信息、服务配置信息等等;

db_tars_web 是 web 管理平台用到数据库

db_user_system 是 web 管理平台用到的权限管理数据库

tars_stat 是服务监控数据存储的数据库;

tars_property 是服务属性监控数据存储的数据库;

无论哪种安装方式, 如果成功安装, 都会看到类似如下输出:

 2019-10-31 11:06:13 INSTALL TARS SUCC: http://xxx.xxx.xxx.xxx:3000/ to open the tars web.
 2019-10-31 11:06:13 If in Docker, please check you host ip and port.
 2019-10-31 11:06:13 You can start tars web manual: cd /usr/local/app/web; npm run prd

打开你的浏览器输入: http://xxx.xxx.xxx.xxx:3000/ 如果顺利, 可以看到 web 管理平台

posted on 2022-03-01 16:14  仲达超  阅读(455)  评论(0编辑  收藏  举报

导航