tarscloud/tars
Tars, a highly performance rpc framework
10K+
Tars See here
Before deploy Tars, Please Read here
Directory Intro:
Install Docker in Centos:
sudo su
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
systemctl enable docker
see Docker version:
docker version
Install mysql by docker
docker pull mysql:5.6
docker run --name mysql --net=host -e MYSQL_ROOT_PASSWORD='root@appinside' -d -p 3306:3306 \
-v /data/mysql-data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
mysql:5.6
If you want build docker yourself, Seehere
docker pull tarscloud/framework
docker run -d --net=host -e MYSQL_HOST=xxxxx -e MYSQL_ROOT_PASSWORD=xxxxx \
-eREBUILD=false -eINET=enp3s0 -eSLAVE=false \
-v/data/tars:/data/tars \
-v/etc/localtime:/etc/localtime \
tarscloud/framework
MYSQL_HOST: mysql ip address
MYSQL_ROOT_PASSWORD: mysql root password
INET: The name of the network interface (as you can see in ifconfig, such as eth0) indicates the native IP bound by the framework. Note that it cannot be 127.0.0.1
REBUILD: Whether to rebuild the database is usually false. If there is an error in the intermediate installation and you want to reset the database, you can set it to true
SLAVE: slave node
Map directory to the host:
If you want to deploy multiple nodes, just execute docker run... On different machines. Pay attention to the parameter settings
Here, you must use --net=host to indicate that the docker and the host are on the same network
Access http://${your_machine_ip}:3000
open tars web
After the tars framework is installed, tarsnode can be deployed to other nodes, so that business services can be deployed to these nodes through the management platform.
There are several ways to expand node machines:
Web provides the function of online installation of tarsnode. When installing, you need to input the IP, password and other information of the node machine to complete the installation of automatic tarsnode (you need to add crontab to monitor tarsnode)
NOTICE:
- Compile framework, make install
cd /usr/local/tars/cpp/framework/servers
tar czf tarsnode.tgz tarsnode
cp tarsnode.tgz yourweb/files
Node machine needs to support WGet command
Tarsnode can also be installed automatically on the node machine, provided that the node can access the web normally and the web supports online installation.
Run on node machine:
wget http://webhost/get_tarsnode?ip=xxx&runuser=root
chmod a+x get_tarsnode
./get_tarsnode
NOTICE:
After install tarsnode, add monitor in crontab:
* * * * * /usr/local/app/tars/tarsnode/util/monitor.sh
If you want the business service to run in a docker, you can use this method:
docker pull tarscloud/tars-node
docker run -d --net=host -eINET=eth0 -eWEB_HOST=xxxxx \
-v/data/tars:/data/tars \
-v/etc/localtime:/etc/localtime \
tarscloud/tars-node
#for example:
docker run -d --net=host -eINET=eth0 -eWEB_HOST=http://172.16.0.7:3000 \
-v/data/tars:/data/tars \
-v/etc/localtime:/etc/localtime \
tarscloud/tars-node
NOTICE: http://172.16.0.7:3000 is the url of Tars Web
This method is usually used in k8s deployment. At this time, it does not need to --net=host. Docker is managed by k8s
Compared with the old version, the image of tars and tarsnode removes the logic of updating dB after IP changes. It is recommended to deploy the stateful headless mode, and the node machines are managed by domain names.
You can also use docker-compose to start tars by these steps:
$ cd ${your_path}/TarsDocker/docker-compose/mysql
$ docker-compose up -d
$ cd ${your_path}/TarsDocker/docker-compose/framework
$ docker-compose up -d
The building of this repository is based on some people's work.
Thanks for tattoo, panjen, luocheng812.
docker pull tarscloud/tars