TARS
     分类:项目管理     有: 0 条评论

TARS

     分类:项目管理     有: 0 条评论

TARS是腾讯开源的一个发布框架,想发就发。框架安装流程比较复杂,还好有一键安装脚本(脚本有点小问题),官方文档也比较详细。稍微修改一下就能顺利的安装了。

快速安装

安装前,最好是一个干净的系统,如果已经安装了mysql,需要自己修改安装脚本,适当注释。
进入你想安装的目录,把项目克隆下来:https://github.com/Tencent/Tars
现在看build目录下的README.md和install.sh文件。
进入build目录,下载文件:

wget https://cmake.org/files/v3.9/cmake-3.9.1.tar.gz
wget https://image.leolan.top/apache-maven-3.3.9-bin.tar.gz
wget https://image.leolan.top/resin-4.0.49.tar.gz
wget https://image.leolan.top/mysql-5.6.26.tar.gz
wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz?AuthParam=1503814243_e3c04b1c4f61debd9479fb549575473e -O jdk-8u144-linux-x64.tar.gz

先看看系统中的cmake版本,大于2.8.8就行。不是的话先卸载cmake。同样,系统中有安装mysql的可以指定位置,或者完全清除干净重新安装。
然后修改install.sh脚本的开头部分,以及用到的包名,等等;建议手工执行脚本的内容,不要运行安装脚本,脚本中有需要覆盖文件的部分,但是没有加y,并不会覆盖。

一般按照脚本一步步执行完就安装好了。打开8080就能看到管理面板了。
mark

重启后发现只有mysql是自启的。启动服务:

/usr/local/resin/bin/resin.sh start
/usr/local/app/tars/tarsAdminRegistry/bin/tarsAdminRegistry --config=/usr/local/app/tars/tarsAdminRegistry/conf/adminregistry.conf

详细安装过程

交流群的一篇安装文档(本人未测试!)

配置环境

#配置yum的上网代理(如有需要,否则不必执行)
vim /etc/yum.conf
# The proxy server - proxy server:port number
proxy=http://mycache.mydomain.com:3128
# The account details for yum connections
proxy_username=yum-user
proxy_password=qwerty

yum install glibc-devel
tar zxvf cmake-2.8.8.tar.gz
yum install gcc
yum install gcc-c++  
cd cmake-2.8.8
./bootstrap(如果系统还没有安装CMake,源码中提供了一个 bootstrap 脚本)
make
make install(如果make install失败,一般是权限不够,切换root进行安装)

cd /usr/local/
tar zxvf resin-4.0.49.tar.gz
ln -s resin-4.0.49 resin

yum install ncurses-devel
yum install zlib-devel

cd /usr/local

tar zxvf mysql-5.6.26.tar.gz
cd /usr/local/mysql-5.6.26
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

groupadd mysql
useradd -g mysql mysql

chown mysql:mysql ../mysql-5.6.26
ln -s /usr/local/mysql-5.6.26 /usr/local/mysql

yum install perl
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 /etc/my.cnf


yum install -y perl-Module-Install.noarch
perl scripts/mysql_install_db --user=mysql

#######################################################################
# 修改数据库配置
vim /usr/local/mysql/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 = .....
socket = /tmp/mysql.sock

bind-address={$your machine ip}
# 注意将bind-address改为部署机器的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


cd /etc/init.d
chmod u+x mysql
# 启动mysql
service mysql start
chkconfig mysql on


service mysql stop
# 添加mysql的bin路径
vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
export PATH
source /etc/profile
service mysql start

mysqladmin -u root password 'root@appinside'
mysqladmin -u root -h ${主机名} password 'root@appinside'
mysqladmin -u root -h tars password 'root@appinside'
# 注意${主机名}需要修改成自身机器的名称,可以通过查看/etc/hosts
mysql --user=root --password=root@appinside
grant all privileges on *.* to 'root'@'%' identified by 'root@appinside';
flush privileges;

# 添加mysql库路径
vim /etc/ld.so.conf
/usr/local/mysql/lib/
Ldconfig

Tars开发环境安装介绍

web管理系统开发环境安装


下载java jdk,解压安装
配置环境环境
vim /etc/profile
添加如下内容:
export JAVA_HOME=${jdk source dir}
export JAVA_HOME=/usr/local/jdk1.8.0_111
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
执行命令
source /etc/profile
java -version


maven安装 下载maven,解压安装 配置环境变量
tar zxvf apache-maven-3.3.9-bin.tar.gz
vim /etc/profile
添加如下内容:
export MAVEN_HOME=${maven source dir}
export PATH=$PATH:$MAVEN_HOME/bin
执行命令
source /etc/profile
测试
mvn -v
注意,如有需要,修改本地仓库的位置和maven的源


#######################################################################
# java语言框架开发环境安装
java jdk和maven环境配置与上面web管理系统的类似
注意,java框架安装前,需要保证机器能联网,同时修改maven安装目录下的conf目录的setting.xml,尽量使用国内的maven镜像,具体操作可以网上查看
下载tars源码,进入java源码目录,并安装在本地仓库
cd  /usr/local/Tars-master/java
mvn clean install 
mvn clean install -f core/client.pom.xml 
mvn clean install -f core/server.pom.xml

#######################################################################
# c++ 开发环境安装
下载tars源码,首先进入cpp/thirdparty目录,
cd  /usr/local/Tars-master/cpp/thirdparty
chmod u+x thirdparty.sh
 yum install -y git
执行thirdparty.sh脚本,下载依赖的rapidjson
然后进入cpp/build源码目录
cd {$source_folder}/cpp/build
chmod u+x build.sh
yum install flex bison
./build.sh all
编译时默认使用的mysql开发库路径:include的路径为/usr/local/mysql/include,lib的路径为/usr/local/mysql/lib/,若mysql开发库的安装路径不在默认路径,则需要修改build目录下CMakeLists.txt文件中的mysql相关的路径,再编译
如果需要重新编译
./build.sh cleanall
./build.sh all

cd /usr/local
mkdir tars
chown mysql:mysql ./tars/
安装
cd /usr/local/Tars-master/cpp/build
./build.sh install或者make install
默认的安装路径为/usr/local/tars/cpp。
如要修改安装路径:
**需要修改build目录下CMakeLists.txt文件中的安装路径。**
**需要修改servant/makefile/makefile.tars文件中的TARS_PATH的路径**
**需要修改servant/script/create_tars_server.sh文件中的DEMO_PATH的路径**

Tars数据库环境初始化

# 添加用户
mysql -uroot -proot@appinside

grant all on *.* to 'tars'@'%' identified by 'tars2015' with grant option;
grant all on *.* to 'tars'@'localhost' identified by 'tars2015' with grant option;
grant all on *.* to 'tars'@ '${主机名}' identified by 'tars2015' with grant option;
flush privileges;
**注意${主机名}需要修改成自身机器的名称,可以通过查看/etc/hosts


#######################################################################
# 创建数据库
sql脚本在cpp/framework/sql目录下,修改部署的ip信息
cd /usr/local/Tars-master/cpp/framework/sql
sed -i "s/192.168.2.131/${your machine ip}/g" `grep 192.168.2.131 -rl ./*`
sed -i "s/db.tars.com/${your machine ip}/g" `grep db.tars.com -rl ./*`
注意,192.168.2.131这个ip是tars开发团队当时部署服务测试的ip信息,替换成自己数据库的部署地址即可,不要是127.0.0.1
注意,db.tars.com是tars框架数据库部署的地址信息,替换成自己数据库的部署地址即可
执行.
chmod u+x exec-sql.sh
./exec-sql.sh
如果exec-sql.sh脚本执行出错,需要脚本里修改数据库用户名root对应的密码
脚本执行后,会创建3个数据库,分别是db_tars、tars_stat、tars_property。
其中db_tars是框架运行依赖的核心数据库,里面包括了服务部署信息、服务模版信息、服务配置信息等等;
tars_stat是服务监控数据存储的数据库;
tars_property是服务属性监控数据存储的数据库;

Tars框架运行环境搭建

框架基础服务打包

框架服务的安装分两种:
一种是核心基础服务(必须的),必须手工部署的,
一种是普通基础服务(可选的),可以通过管理平台发布的(和普通服务一样)。
手工部署的核心基础服务:tarsAdminRegistry, tarsregistry, tarsnode, tarsconfig, tarspatch
 
通过管理平台部署的普通基础服务:tarsstat, tarsproperty,tarsnotify, tarslog,tarsquerystat,tarsqueryproperty
首先准备第一种服务的安装包,在cpp/build/目录下输入:
cd /usr/local/Tars-master/cpp/build
make framework-tar
会在当前目录生成framework.tgz 包 这个包包含了 tarsAdminRegistry, tarsregistry, tarsnode, tarsconfig, tarspatch 部署相关的文件
第二种服务安装包可以单独准备:
make tarsstat-tar
make tarsnotify-tar
make tarsproperty-tar
make tarslog-tar
make tarsquerystat-tar
make tarsqueryproperty-tar
生成的发布包,在管理平台部署发布完成后,进行部署发布,具体参见4.4章节。
注意在管理平台进行部署时,选择正确的服务模板即可(默认是有的,若没有相应的模版,可以在管理平台上创建,具体服务的模版内容可以tars_template.md)!

安装框架核心基础服务

# 安装核心基础服务

切换至root用户,创建基础服务的部署目录,如下:
mkdir -p /usr/local/app/tars
cd /usr/local/app
chown mysql:mysql ./tars/
将已打好的框架服务包复制到/usr/local/app/tars/,然后解压,如下:
cd /usr/local/Tars-master/cpp/build
cp  framework.tgz /usr/local/app/tars/
cd /usr/local/app/tars
tar xzfv framework.tgz
修改各个服务对应conf目录下配置文件,注意将配置文件中的ip地址修改为本机ip地址,如下:
cd /usr/local/app/tars

sed -i "s/192.168.2.131/${your_machine_ip}/g" `grep 192.168.2.131 -rl ./*`
sed -i "s/db.tars.com/${your_machine_ip}/g" `grep db.tars.com -rl ./*`
sed -i "s/registry.tars.com/${your_machine_ip}/g" `grep registry.tars.com -rl ./*`
sed -i "s/web.tars.com/${your_machine_ip}/g" `grep web.tars.com -rl ./*`
注意,192.168.2.131这个ip是tars开发团队当时部署服务测试的ip信息,替换成自己数据库的部署地址即可,不要是127.0.0.1
注意,db.tars.com是tars框架数据库部署的地址信息,替换成自己数据库的部署地址即可
注意,registry.tars.com是tars框架主控tarsregistry服务部署的地址信息,替换成自己主控tarsregistry符的部署地址即可
注意,web.tars.com是rsync使用的地址信息,替换成自己的部署机器地址即可
然后在/usr/local/app/tars/目录下,执行脚本,启动tars框架服务
chmod u+x tars_install.sh
tars_install.sh
注意如果几个服务不是部署在同一台服务器上,需要自己手工copy以及处理tars_install.sh脚本
部署管理平台并启动web管理平台(管理平台必须和tarspatch部署在同一台服务器上)部署tarspatch,切换至root用户,并执行
tarspatch/util/init.sh
**注意,上面脚本执行后,看看rsync进程是否起来了,若没有看看rsync使用的配置中的ip是否正确(即把web.tars.com替换成本机ip)
在管理平台上面配置tarspatch,注意需要配置服务的可执行目录(/usr/local/app/tars/tarspatch/bin/tarspatch)
在管理平台上面配置tarsconfig,注意需要配置服务的可执行目录(/usr/local/app/tars/tarsconfig/bin/tarsconfig)
tarsnode需要配置监控,避免不小心挂了以后会启动,需要在crontab里面配置
crontab -e 

* * * * * /usr/local/app/tars/tarsnode/util/monitor.sh


#######################################################################
# 服务扩容前安装tarsnode
核心基础服务的安装成功后,如果需要在其他机器也能部署基于tars框架的服务,那么在管理平台扩容部署前,需要安装tarsnode服务。
如果只是在一台机器部署服务进行测试,这一步可以先忽略,等到需要扩容时再执行。
具体步骤跟上一节很像,如下:
切换至root用户,创建基础服务的部署目录,如下:
cd /usr/local/app
mkdir tars
chown ${普通用户}:${普通用户} ./tars/

groupadd mysql
useradd -g mysql mysql
mkdir -p /usr/local/app/tars
cd /usr/local/app/tars
chown mysql:mysql ../tars/

将已打好的框架服务包复制到/usr/local/app/tars/,然后解压,如下:
cp build/framework.tgz /usr/local/app/tars/
cd /usr/local/app/tars
tar xzfv framework.tgz
修改各个服务对应conf目录下配置文件,注意将配置文件中的ip地址修改为本机ip地址,如下:
cd /usr/local/app/tars
sed -i "s/192.168.2.131/${your_machine_ip}/g" `grep 192.168.2.131 -rl ./*`
sed -i "s/db.tars.com/${your_machine_ip}/g" `grep db.tars.com -rl ./*`
sed -i "s/registry.tars.com/${your_machine_ip}/g" `grep registry.tars.com -rl ./*`
sed -i "s/web.tars.com/${your_machine_ip}/g" `grep web.tars.com -rl ./*`
注意,192.168.2.131这个ip是tars开发团队当时测试的ip信息,替换成自己扩容机器的ip地址即可,不要是127.0.0.1
注意,db.tars.com是tars框架数据库部署的地址信息,替换成数据库的部署ip地址即可
注意,registry.tars.com是tars框架主控tarsregistry服务部署的地址信息,替换成自己主控tarsregistry的部署地址即可
注意,web.tars.com是rsync使用的地址信息,替换成web的部署机器地址即可

然后在/usr/local/app/tars/目录下,执行脚本,启动tars框架服务
chmod u+x tarsnode_install.sh
tarsnode_install.sh

ps -ef|grep tars
crontab -e 

配置监控,避免不小心挂了以后会启动,需要在crontab里面配置
* * * * * /usr/local/app/tars/tarsnode/util/monitor.sh


#######################################################################
# 安装web管理系统
执行之前先安装tars java语言框架到本地仓库,参见2.2章节 管理系统源代码目录名称为web
cd  /usr/local/Tars-master/web
修改配置文件,文件存放的路径在web/src/main/resources/目录下。
•    app.config.properties
修改为实际的数据库配置
# 数据库(db_tars)
tarsweb.datasource.tars.addr={$your_db_ip}:3306
tarsweb.datasource.tars.user=tars
tarsweb.datasource.tars.pswd=tars2015

# 发布包存储路径
upload.tgz.path=/usr/local/app/patchs/tars.upload/
•    tars.conf
替换registry1.tars.com,registry2.tars.com为实际IP。可以只配置一个地址,多个地址用冒号“:”连接
<tars>
    <application>
        #proxy需要的配置
        <client>
            #地址
            locator = tars.tarsregistry.QueryObj@tcp -h registry1.tars.com -p 17890:tars.tarsregistry.QueryObj@tcp -h registry2.tars.com -p 17890
            sync-invoke-timeout = 30000
            #最大超时时间(毫秒)
            max-invoke-timeout = 30000
            #刷新端口时间间隔(毫秒)
            refresh-endpoint-interval = 60000
            #模块间调用[可选]
            stat = tars.tarsstat.StatObj
            #网络异步回调线程个数
            asyncthread = 3
            modulename = tars.system
        </client>
    </application>
</tars>
打包,在web目录下执行命令,会在web/target目录下生成tars.war
mvn clean package
web发布 将tars.war放置到/usr/local/resin/webapps/中
cp /usr/local/Tars-master/web/target/tars.war /usr/local/resin/webapps/
创建日志目录
mkdir -p /data/log/tars
修改Resin安装目录下的conf/resin.xml配置文件 将默认的配置
cd /usr/local/resin/conf
vim  resin.xml
<host id="" root-directory=".">
    <web-app id="/" root-directory="webapps/ROOT"/>
</host>
修改为
<host id="" root-directory=".">
    <web-app id="/" document-directory="webapps/tars"/>
</host>
启动resin
 /usr/local/resin/bin/resin.sh start
访问站点 浏览器输入${your machine ip}:8080,即可看到,如下:
(●゚ω゚●)