tars C++ docker 环境配置

挺多小公司使用Tars作为rpc框架的。感觉主要原因有以下几点:1. Tars支持多语言,2. Tars的管理端,可以方便微服务管理和发布。3. 有现成的监控。不过说实在的,Tars 开源版本被阉割了很多,例如ci也没有集成,说明书烂得一逼,涉及的依赖也很多,相当简陋, 都无力吐槽了。anyway,有空只能研究一下源码。在这里主要引入docker,简化安装的流程,方便快速接入开发和调试。

0. 环境说明

centos 7.4 vb 虚拟机

enp0s3 nat
enp0s8 host-only(192.168.56.101)

1. 安装docker

参考https://www.cnblogs.com/yufeng218/p/8370670.html

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce 
sudo systemctl start docker
sudo systemctl enable docker
docker version

2. docker 镜像部署

参考:https://github.com/TarsCloud/TarsDocker

docker pull mysql:5.6
docker pull tarsdocker/tars
docker run --name mysql -e MYSQL_ROOT_PASSWORD='root@appinside' -d -p 3306:3306 -v /data/mysql-data:/var/lib/mysql mysql:5.6
docker run -d -it --name=tars --link mysql -e MOUNT_DATA=true -e DBIP=${your_mysql_ip} -e DBPort=3306 -e DBUser=root -e DBPassword=root@appinside -p 3000:3000 -v /data:/data tarsdocker/tars

其中${your_mysql_ip}=172.17.0.2

浏览器访问:http://192.168.56.101:3000/index.html#/server

扩容部分:

docker run -d -it --name tarsnode -e MASTER=172.17.0.3 -v /data:/data tarsdocker/tarsnode

其中${registry_ip} = 172.17.0.3

3. 开发环境搭建

依赖环境安装:

linux kernel:	2.6.18 and above
gcc:	4.1.2 and above glibc-devel
bison tool:	2.5 and above
flex tool:	2.5 and above
cmake:	2.8.8 and above
mysql:	4.1.17 and above

yum -y install https://repo.mysql.com/mysql-community-release-el7-7.noarch.rpm
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum install -y git gcc gcc-c++ make wget cmake mysql-server mysql-devel unzip iproute which glibc-devel flex bison ncurses-devel protobuf-devel zlib-devel kde-l10n-Chinese glibc-common expect
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
git clone https://github.com/TarsCloud/TarsCpp.git --recursive
cd TarsCpp
cmake .
make
make install

4. 部署应用

(1) 创建应用
在这里插入图片描述
按照上图,然后点击提交即可。

(2) 节点环境部署

如果需要部署一个新节点,只需要部署一个tarsnode即可使用。因为在某些环境下不能上外网,只能手动安装tarsnode了。具体流程如下:

  • 下载源码,打包上传到对应的机器。
https://github.com/TarsCloud/Tars.git --recursive
  • 安装依赖mysql和cmake

cmake

wget https://src.fedoraproject.org/lookaside/pkgs/cmake/cmake-2.8.8.tar.gz/ba74b22c788a0c8547976b880cd02b17/cmake-2.8.8.tar.gz
./bootstrap(如果系统还没有安装CMake,源码中提供了一个 bootstrap 脚本)
make
make install(如果make install失败,一般是权限不够,切换root进行安装)

mysql

yum install ncurses-devel
yum install zlib-devel
yum install bison
yum install flex
cd /usr/local
mkdir mysql-5.6.26
ln -s /usr/local/mysql-5.6.26 /usr/local/mysql
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

其中mysql下载链接:https://download.csdn.net/download/al_xin/11232671, 名字稍微改一下。

  • 框架准备
    到framework目录下
cd {$source_folder}/build
chmod u+x build.sh
./build.sh prepare
./build.sh all
make framework-tar
cp build/framework.tgz /usr/local/app/tars/
cd /usr/local/app/tars
tar xzfv framework.tgz
cd /usr/local/app/tars
sed -i "s/192.168.2.131/${your_machine_ip}/g" `grep 192.168.2.131 -rl ./*`

需要注意的是配置文件的locator需要指向tars控制端。

  • 安装
chmod u+x tarsnode_install.sh
./tarsnode_install.sh
  • 监控
* * * * * /usr/local/app/tars/tarsnode/util/monitor.sh

部署完之后,tarsnode即可和tars控制端获取联系,进行发布和部署。

(3) 打包发布流程

如果需要将服务通过管理端进行部署,需要将包打包成HelloServer.tgz的形式, 其中目录路径为:HelloServer/HelloServer, 必须是两层结构的,不然会部署失败。

tar czvf  HelloServer.tgz HelloServer

(4) pb协议的server端示例代码

(5) pb协议的client端示例代码

5. 常用工具使用

pb java 客户端生成工具:

protoc --plugin=protoc-gen-tars-java=./protoc-gen-tars-java --tars-java_out=./ --java_out=./ Search.proto

pb cpp 客户端生成工具:

protoc hello.proto --plugin=protoc-gen-tars-cpp=./pb2tarscpp --tars-cpp_out=./  --cpp_out=./ 

6. centos 8编译TarsCpp

git clone git://github.com/TarsCloud/TarsCpp.git
cd TarsCpp
vim util/include/util/tc_mysql.h (#include "mysql/mysql.h")
vim util/src/tc_mysql.cpp  (#include "mysql/errmsg.h") 
yum install mysql-devel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值