• 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 管理平台

  • 相关阅读:
    iOS block从零开始
    iOS 简单动画 序列帧动画
    iOS 简单动画 block动画
    IOS 简单动画 首尾式动画
    IOS 手势详解
    IOS block 循环引用的解决
    IOS GCD定时器
    IOS TextField伴随键盘移动
    IOS RunLoop面试题
    IOS RunLoop 常驻线程的实现
  • 原文地址:https://www.cnblogs.com/Kingfans/p/15950410.html
Copyright © 2020-2023  润新知