背景
上一篇詳細介紹了Tars的背景、優勢與架構等信息,本篇繼續介紹Tars安裝過程。
注:本篇採用CentOS 7(7.6)系統
環境[關閉selinux和清空防火牆規則]
[root@lisea ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@lisea ~]# uname -r
3.10.0-957.5.1.el7.x86_64
[root@lisea ~]# hostname
lisea
[root@lisea ~]# getenforce
Disabled
[root@lisea ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@lisea ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.21.0.15 netmask 255.255.240.0 broadcast 172.21.15.255
ether 52:54:00:09:b7:6e txqueuelen 1000 (Ethernet)
RX packets 9648 bytes 9083460 (8.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5327 bytes 524204 (511.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 2 bytes 272 (272.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2 bytes 272 (272.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
依賴準備
[root@lisea ~]# yum install gcc gcc-c++ -y
[root@lisea ~]# yum install bison -y
[root@lisea ~]# yum install flex -y
[root@lisea ~]# yum install cmake -y
[root@lisea ~]# yum install ncurses-devel -y
[root@lisea ~]# yum install zlib-devel -y
[root@lisea ~]# yum install glibc-devel -y
[root@lisea ~]# yum install numactl -y
[root@lisea ~]# yum install git -y
安裝MySql
這裏推薦mysql5.6或者5.7版本的二進制包安裝方式。
本次採用5.7版本安裝,MySQL5.6安裝方式查看歷史MySQL安裝篇幅。
經測試,在安裝8.0版本的MySQL,在後續無法成功編譯TarsFramework。
- 切換工作路徑至/usr/local/src
[root@lisea ~]# cd /usr/local/src/
- 下載MySQL
[root@lisea src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar
- 解壓 MySQL 5.7 二進制包
[root@lisea src]# tar xf mysql-5.7.25-linux-glibc2.12-x86_64.tar [root@lisea src]# tar xf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
- 移動 解壓好的MySQL 5.7目錄至/usr/local
[root@lisea src]# mv mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local
- 創建MySQL軟連接
[root@lisea src]# ln -s /usr/local/mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local/mysql
- 創建 mysql 應用運行用戶
[root@lisea src]# useradd -r -s /sbin/nologin mysql
- 創建 MySQL 數據存放目錄
[root@lisea src]# mkdir -vp /data/mysql_data mkdir: created directory `/data' mkdir: created directory `/data/mysql_data'
- 在 MySQL 二進制包目錄中創建 mysql-files 目錄 [MySQL 數據導入/導出數據專放目錄]
[root@lisea src]# mkdir -v /usr/local/mysql/mysql-files mkdir: created directory `/usr/local/mysql/mysql-files'
- 修改 MySQL 二進制包目錄的所屬用戶與所屬組
[root@lisea src]# chown root.mysql -R /usr/local/mysql-5.7.25-linux-glibc2.12-x86_64
- 修改 MySQL 數據目錄與 數據導入/導出專放目錄的所屬用戶與所屬組
[root@lisea src]# chown mysql.mysql /usr/local/mysql/mysql-files /data/mysql_data
- 重命名不使用系統自帶 MySQL 配置文件 /etc/my.cnf [ debian類系統在 /etc/mysql/my.cnf ]
[root@lisea src]# mv /etc/my.cnf{,.old}
- 初始化
[root@lisea src]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data 2019-02-03T13:56:34.415131Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-02-03T13:56:35.563289Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-02-03T13:56:35.835511Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-02-03T13:56:35.915147Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 853b8efd-27bb-11e9-9c8d-52540009b76e. 2019-02-03T13:56:35.925540Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-02-03T13:56:35.926081Z 1 [Note] A temporary password is generated for root@localhost: wKoMdt7<yNor
-
開啓 SSL 連接[可選]
[root@lisea src]# /usr/local/mysql/bin/mysql_ssl_rsa_setup -d /data/mysql_data
-
修改SSL證書文件所屬用戶和用戶組
[root@lisea src]# chown mysql.mysql -R /data/mysql_data
- 創建mysql systemctl啓動腳本[由於博客markdown語法支持問題,無法展示腳本內容,參考MySQL8.0啓動腳本]
[root@lisea src]# cat /usr/lib/systemd/system/mysqld.service
- systemd加載啓動配置文件
[root@lisea src]# systemctl daemon-reload
- 創建MySQL配置文件my.cnf, 指定數據目錄
[root@lisea src]# cat /etc/my.cnf [mysqld] user = mysql bind_address = 0.0.0.0 character_set_server=utf8mb4 skip_name_resolve = 1 max_connections = 800 max_connect_errors = 1000 datadir = /data/mysql_data
- 啓動MySQL服務
[root@lisea src]# systemctl start mysqld
- 添加MySQL bin目錄至path變量,並生效環境變量
[root@lisea src]# cat /etc/profile.d/mysql.sh export MYSQL_HOME=/usr/local/mysql export PATH=$MYSQL_HOME/bin:$PATH
[root@lisea src]# source /etc/profile
* 通過mysql命令連接mysql服務,並修改默認密碼(本次修改爲123), 默認密碼爲初始化時的隨機密碼
```bash
[root@lisea src]# mysql -uroot -p'wKoMdt7<yNor'
mysql> set password = '123';
Query OK, 0 rows affected (0.00 sec)
tars安裝
- 下載TarsFramework源碼
[root@lisea src]# git clone https://github.com/TarsCloud/TarsFramework.git Cloning into 'TarsFramework'... remote: Enumerating objects: 20, done. remote: Counting objects: 100% (20/20), done. remote: Compressing objects: 100% (16/16), done. remote: Total 465 (delta 6), reused 14 (delta 4), pack-reused 445 Receiving objects: 100% (465/465), 553.49 KiB | 192.00 KiB/s, done. Resolving deltas: 100% (174/174), done.
- TarsFramework編譯
[root@lisea src]# cd TarsFramework/build/ [root@lisea build]# chmod u+x build.sh [root@lisea build]# ./build.sh prepare [root@lisea build]# ./build.sh all
tars數據庫初始化
- 注意將${your machine ip}改爲部署機器的IP
- 如果exec-sql.sh腳本執行出錯,需要腳本里修改數據庫用戶名root對應的密碼
- 腳本執行後,會創建3個數據庫,分別是db_tars、tars_stat、tars_property。
- db_tars是框架運行依賴的核心數據庫,裏面包括了服務部署信息、服務模版信息、服務配置信息等等;
- tars_stat是服務監控數據存儲的數據庫;
- tars_property是服務屬性監控數據存儲的數據庫;
- 添加數據庫用戶
mysql> grant all on *.* to 'tars'@'%' identified by 'tars2015' with grant option; Query OK, 0 rows affected, 1 warning (0.08 sec) mysql> grant all on *.* to 'tars'@'localhost' identified by 'tars2015' with grant option; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> grant all on *.* to 'tars'@'172.21.0.15' identified by 'tars2015' with grant option; Query OK, 0 rows affected, 1 warning (0.00 sec)
- 修改部署數據庫的腳本ip信息[sql腳本在framework/sql目錄下,修改部署的ip信息]
注:172.21.0.15是測試環境地址,修改成你們本地地址即可。[root@lisea build]# cd ../sql [root@lisea sql]# sed -i "s/192.168.2.131/172.21.0.15/g" `grep 192.168.2.131 -rl ./*` [root@lisea sql]# sed -i "s/db.tars.com/172.21.0.15/g" `grep db.tars.com -rl ./*` [root@lisea sql]# sed -i "s/10.120.129.226/172.21.0.15/g" `grep 10.120.129.226 -rl ./*`
- 修改exec-sql.sh文件數據庫root密碼
[root@lisea sql]# cat exec-sql.sh mysql -uroot -p123 -e "create database db_tars" mysql -uroot -p123 -e "create database tars_stat" mysql -uroot -p123 -e "create database tars_property" mysql -uroot -p123 -e "create database db_tars_web" mysql -uroot -p123 db_tars < db_tars.sql
- 創建數據庫
[root@lisea sql]# chmod u+x exec-sql.sh [root@lisea sql]# ./exec-sql.sh mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure.
tars框架運行環境搭建
框架服務的安裝分兩種:
- 一種是核心基礎服務(必須的),必須手工部署的,
- tarsAdminRegistry
- tarsregistry
- tarsnode
- tarsconfig
- tarspatch
- 一種是普通基礎服務(可選的),可以通過管理平臺發佈的(和普通服務一樣)。
- tarsstat
- tarsproperty
- tarsnotify
- tarslog
- tarsquerystat
- tarsqueryproperty
- 準備核心基礎服務安裝包
會在當前目錄生成framework.tgz 包 這個包包含了 tarsAdminRegistry, tarsregistry, tarsnode, tarsconfig, tarspatch 部署相關的文件[root@lisea sql]# cd ../build/ [root@lisea build]# make framework-tar
- 普通基礎服務安裝包準備[可選]
生成的發佈包,在管理平臺部署發佈完成後[root@lisea build]# make tarsstat-tar [root@lisea build]# make tarsnotify-tar [root@lisea build]# make tarsproperty-tar [root@lisea build]# make tarslog-tar [root@lisea build]# make tarsquerystat-tar [root@lisea build]# make tarsqueryproperty-tar
安裝核心基礎服務
- 創建基礎服務的工作目錄
[root@lisea build]# mkdir -vp /usr/local/app/tars mkdir: created directory ‘/usr/local/app’ mkdir: created directory ‘/usr/local/app/tars’
- 將已打好的框架服務包複製到/usr/local/app/tars/,並解壓
[root@lisea build]# cp framework.tgz /usr/local/app/tars/ [root@lisea build]# cd /usr/local/app/tars [root@lisea tars]# tar xf /usr/local/app/tars/framework.tgz
-
修改各個服務對應conf目錄下配置文件,注意將配置文件中的ip地址修改爲本機ip地址
[root@lisea tars]# cd /usr/local/app/tars [root@lisea tars]# sed -i "s/192.168.2.131/172.21.0.15/g" `grep 192.168.2.131 -rl ./*` [root@lisea tars]# sed -i "s/db.tars.com/172.21.0.15/g" `grep db.tars.com -rl ./*` [root@lisea tars]# sed -i "s/registry.tars.com/172.21.0.15/g" `grep registry.tars.com -rl ./*` [root@lisea tars]# sed -i "s/web.tars.com/172.21.0.15/g" `grep web.tars.com -rl ./*`
- 啓動tars框架服務
[root@lisea tars]# chmod u+x tars_install.sh [root@lisea tars]# ./tars_install.sh
- 部署管理平臺並啓動web管理平臺(管理平臺必須和tarspatch部署在同一臺服務器上)部署tarspatch
看看rsync進程是否起來了,若沒有看看rsync使用的配置中的ip是否正確(即把web.tars.com替換成本機ip)[root@lisea tars]# tarspatch/util/init.sh
- tarsnode配置crontab監控[可選]
* * * * * /usr/local/app/tars/tarsnode/util/monitor.sh
安裝web管理系統
- 下載tars-web
[root@lisea tars]# cd /usr/local/app [root@lisea app]# git clone https://github.com/TarsCloud/TarsWeb.git
- 修改配置文件,將配置文件中的ip地址修改爲本機ip(172.21.0.15)地址
[root@lisea app]# cd TarsWeb/ [root@lisea TarsWeb]# sed -i 's/db.tars.com/172.21.0.15/g' config/webConf.js [root@lisea TarsWeb]# sed -i 's/registry.tars.com/172.21.0.15/g' config/tars.conf
- 安裝npm環境
[root@lisea TarsWeb]# wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash [root@lisea TarsWeb]# source ~/.bashrc [root@lisea TarsWeb]# nvm install v8.11.3 [root@lisea TarsWeb]# npm install -g pm2 --registry=https://registry.npm.taobao.org
- 安裝web管理頁面依賴, 創建日誌目錄,啓動web
[root@lisea TarsWeb]# npm install --registry=https://registry.npm.taobao.org [root@lisea TarsWeb]# mkdir -p /data/log/tars [root@lisea TarsWeb]# npm run prd