Skip to content

Commit

Permalink
update pro
Browse files Browse the repository at this point in the history
  • Loading branch information
ruanshudong committed Jul 19, 2024
1 parent 4a74703 commit 72a96e5
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 49 deletions.
3 changes: 2 additions & 1 deletion SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@

## 企业版本介绍 <span id="pro"></span>
- [企业版说明](pro/tars-pro.md)
- [主控集群化](pro/tars-raft.md)
- [框架集群化机制](pro/tars-single.md)
- [框架单节点机制](pro/tars-cluster.md)
- [使用二进制包部署](pro/tars-deploy-bin.md)
- [使用容器部署](pro/tars-deploy-container.md)
- [业务服务一主多备机制](pro/tars-master-slave.md)
Expand Down
9 changes: 5 additions & 4 deletions pro/tars-raft.md → pro/tars-cluster.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
## 主控集群化
## 框架集群化机制

企业版本框架中, 不再依赖数据, 此时tarsregistry采用了raft机制来实现集群化, 从而达到了2n+1台节点来完成故障容灾.

通常情况下, 由于采用了raft集群化设计, 必须至少部署三台tarsregistry(逻辑节点)才可以满足需求, 当然由于企业版本框架可以在同一台节点上部署多个tarsnode, 因此三台tarsregistry可以部署在同一个服务服务器.

**注意, 框架也可以单节点部署, 请参考框架单节点机制**

### 集群化优势

- 不再依赖第三方mysql数据库, 因此在部署, 运维上更加方便;
Expand All @@ -13,17 +15,16 @@

### 数据目录

tarsregistry的数据文件目录在: `/usr/local/app/tars/tarsnode/data/tars.tarsregistry/data/DBLog` 目录下
tarsregistry的数据文件目录在: `/usr/local/app/tars/tarsnode/data/tars.tarsregistry/data/DB` 目录下

### 框架扩容

扩容主控节点非常简单, 只需要启动一个新的framework即可, 只是这时候locator需要增加自己当前主控的节点即可, 框架会自动感知并添加这个节点.

可以使用:
可以使用查看所有主控的信息:
```shell
tarsctl framework registry
```
查看所有主控的信息

### 框架缩容

Expand Down
15 changes: 10 additions & 5 deletions pro/tars-deploy-bin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

- 正常情况下, 需要选取2n+1节点服务器, 从而完成框架组件的容灾;
- 如果有需要, 也可以在同一个服务器上安装三次, 每次安装在不同目录, 使用不同的节点名称;
- 也可以将框架部署成单节模式;

**tars企业版本可以在同一台节点上安装多个tarsnode, 只需要每个tarsnode的节点名称不同即可!**

Expand All @@ -15,19 +16,18 @@
### 安装framework

- 得到安装包: framework.tgz, 源码下可以执行: `make publish`, 得到安装包: framework.tgz
- 得到tarsctl
>- 源码编译, 执行: `make tarsctl`, 得到tarsctl
>- 源码情况下, 可以远程下载: wget http://cdn.tarsyun.com/src/tarsctl -O tarsctl && chmod a+x tarsctl && cp tarsctl -rf /usr/bin/
- 解压framework.tgz, 目录下得到tarsctl
- 通常至少在2n+1台节点(建议3台)的运行以下命令安装framework
```shell
tarsctl install framework --install-path=/usr/local/app --file=framework.tgz --locator="tcp -h xxx1 -p yyy1:tcp -h xxx2 -p yyy2:tcp -h xxx3 -p yyy3" --localip=[xxx] --node-name=tarsnode-0 --registry=\"tcp -h xxx1 -p xxx2\"
tarsctl install framework --mode=cluster --install-path=/usr/local/app --file=framework.tgz --locator="tcp -h xxx1 -p yyy1:tcp -h xxx2 -p yyy2:tcp -h xxx3 -p yyy3" --localip=[xxx] --node-name=tarsnode-0 --registry=\"tcp -h xxx1 -p xxx2\"
```
>- file: 制定了安装包文件, 如果是源码编译出来的, 通过`make publish`来生成
>- mode: 集群机制, 默认是集群机制, 如果希望只部署一个节点(单节点机制), 则mode设置为single
>- install-path: 指定了安装目录, 当前用户需要有这个目录的权限, 缺省为: /usr/local/app
>- locator: 指定了主控的地址, 指定了三个地址, 必须和三台节点相匹配
>- localip: 本节点的ip
>- node-name: 当前安装的节点名称, 指定了`tarsnode`的节点名称(必须唯一)
>- registry: 当前安装的主控节点QueryObj绑定的地址, 必须是locator中的一个
>- registry: 当前安装的主控节点QueryObj绑定的地址, 必须是locator中的一个(如果是单节点机制, registry不需要设置)
>- tarslog只部署在第一台节点`xxx1`上, 其他服务都是部署了三台节点
**注意: 可以在同一台机器上安装三个framework, 注意每次的安装目录(install-path)和节点名称(node-name)要不同, 另外注意locator和registry的地址要争取(比如ip相同, 端口不同)**
Expand Down Expand Up @@ -57,6 +57,11 @@ tarsctl install web --install-path=/usr/local/app --file=web.tgz --locator="tcp
你可以在多台机器上安装台web管理平台, 前面配置负载均衡即可.

启动管理平台:
```shell
cd /usr/local/app/web

```
## 框架启动方式

启动组件服务有两种方式, 一种是手动拉起, 一种是自动拉起
Expand Down
89 changes: 52 additions & 37 deletions pro/tars-deploy-container.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,105 +12,103 @@

```shell

docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h $ip1 -p $port1:tcp -h $ip2 -p $port2:tcp -h $ip3 -p $port3" \
-e TARS_NODENAME="$nodename" \
-e TARS_REGISTRY="tcp -h $ip1 -p 7891" \
-e TARS_LOCALIP="$localip" \
-e TARS_OPEN_WEB=true \
-e TARS_START_PORT=9999 \
-e TARS_MODE=cluster \
-v /data/tars:/data/tars \
--name framework-pro \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro
```

说明:
- 至少需要启动三个容器, 组成framework集群
- `TARS_LOCATOR`指定了每个framework的地址, 需要自己配置好ip, port
- `TARS_REGISTRY`指定了当前启动的这个容器的tarsregistry地址, 必须是`TARS_LOCATOR`中的一个
- `TARS_LOCALIP`指定本机的ip, 如果支持多网卡, 可以使用"0.0.0.0"
- `TARS_NODENAME`指定当前节点的名称, 注意nodename必须不同, 而且唯一
- `TARS_OPEN_WEB`是否启动web管理平台
- `TARS_START_PORT`组件启用的起始端口, 如果不指定则随机分配端口
- `TARS_OPEN_FRAMEWORK`: 部署framework, 如果设置为false, 则只启动节点(请参考后续)
- `TARS_LOCATOR`: 多节点的framework的tarsregistry.QueryObj的地址, 需要自己配置ip:port
- `TARS_REGISTRY`: :当前框架的的tarsregistry地址, 必须是`TARS_LOCATOR`中的一个
- `TARS_LOCALIP`: 本机的ip, 如果支持多网卡, 可以使用"0.0.0.0"
- `TARS_NODENAME`: 当前节点的名称, 注意nodename必须不同, 而且唯一
- `TARS_START_PORT`: 组件启用的起始端口, 如果不指定则随机分配端口, 否则从这个端口开始分配端口
- `TARS_MODE`: 运行模式, 默认是集群模式(cluster), 也可以设置为单节点方式(single)
- 可以在同一机器上启动三个容器, 注意自己控制好地址接口
- 除了核心组件`tars.tarsregistry.QueryObj`的端口是分配的, 这里是: port1, port2, port3, 其他端口都是随机分配的
- 每台节点, 都启动了web管理平台, 你可以通过: `http://${框架ip}:3000`, 打开管理平台

## 示例
### 示例

- 在三台机器上启动容器
- 在三台机器上启动容器, 并且三台容器构建成一个集群

比如在ip分别为: `192.168.11.1, 192.168.11.2, 192.168.11.3` 上部署容器, 你可以分别在三台机器上启动

在节点`192.168.11.1`上启动:
```shell
docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890:tcp -h 192.168.11.2 -p 7890:tcp -h 192.168.11.3 -p 7890" \
-e TARS_NODENAME="tarsnode-1" \
-e TARS_REGISTRY="tcp -h 192.168.11.1 -p 7890" \
-e TARS_LOCALIP="192.168.11.1" \
-e TARS_OPEN_WEB=true \
-e TARS_START_PORT=9000 \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name framework-pro \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro
```

在节点`192.168.11.2`上启动:
```shell
docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890:tcp -h 192.168.11.2 -p 7890:tcp -h 192.168.11.3 -p 7890" \
-e TARS_NODENAME="tarsnode-2" \
-e TARS_REGISTRY="tcp -h 192.168.11.2 -p 7890" \
-e TARS_LOCALIP="192.168.11.2" \
-e TARS_OPEN_WEB=true \
-e TARS_START_PORT=9100 \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name framework-pro \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro
```

在节点`192.168.11.3`上启动:
```shell
docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890:tcp -h 192.168.11.2 -p 7890:tcp -h 192.168.11.3 -p 7890" \
-e TARS_NODENAME="tarsnode-3" \
-e TARS_REGISTRY="tcp -h 192.168.11.3 -p 7890" \
-e TARS_LOCALIP="192.168.11.3" \
-e TARS_OPEN_WEB=true \
-e TARS_START_PORT=9200 \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name framework-pro \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro
```

- 在一台机器上启动三个容器
- 在一台机器上启动三个容器, 并且构建成集群

比如在ip为`192.168.11.1`的机器上启动三个容器:

```shell
docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890:tcp -h 192.168.11.1 -p 7891:tcp -h 192.168.11.1 -p 7892" \
-e TARS_NODENAME="tarsnode-1" \
-e TARS_REGISTRY="tcp -h 192.168.11.1 -p 7890" \
-e TARS_LOCALIP="192.168.11.1" \
-e TARS_OPEN_WEB=true \
-e TARS_START_PORT=9000 \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name framework-pro-1 \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro
```

```shell
docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890:tcp -h 192.168.11.1 -p 7891:tcp -h 192.168.11.1 -p 7892" \
-e TARS_NODENAME="tarsnode-2" \
Expand All @@ -120,12 +118,12 @@ docker run -d --rm --net=host \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name framework-pro-2 \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro
```


```shell
docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890:tcp -h 192.168.11.1 -p 7891:tcp -h 192.168.11.1 -p 7892" \
-e TARS_NODENAME="tarsnode-3" \
Expand All @@ -135,7 +133,7 @@ docker run -d --rm --net=host \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name framework-pro-3 \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro

```

Expand All @@ -144,31 +142,46 @@ ruanshudong/framework-pro
docker exec ${containid} tarsctl framework status
```

注意:
- 以上例子中只有framework-pro-1才启动了TARS_OPEN_WEB, 因为如果都启动, 会导致端口冲突, 因为在启动了三个容器, 且使用了--net=host模式
可以通过`http://192.168.11.1:3000`, `http://192.168.11.2:3000`,`http://192.168.11.3:3000`, 打开管理平台!

# 增加节点
- 在一台机器上以单节模式启动容器

```shell
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=true \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890" \
-e TARS_NODENAME="master" \
-e TARS_LOCALIP="192.168.11.1" \
-e TARS_START_PORT=9200 \
-e TARS_MODE=single \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name framework-pro \
docker.tarsyun.com/tars-pro/framework-pro

```

## 增加节点
当部署框架以后, 我们可以增加节点, 也以容器方式增加节点, 命令如下:

```shell

docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=false \
-e TARS_LOCATOR="tcp -h $ip1 -p $port1:tcp -h $ip2 -p $port2:tcp -h $ip3 -p $port3" \
-e TARS_NODENAME="$nodename" \
-e TARS_LOCALIP="$localip" \
-e TARS_OPEN_WEB=true \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name $nodename \
ruanshudong/framework-pro
docker.tarsyun.com/tars-pro/framework-pro
```

例如:

```shell

docker run -d --rm --net=host \
docker run -d --net=host --restart=always \
-e TARS_OPEN_FRAMEWORK=false \
-e TARS_LOCATOR="tcp -h 192.168.11.1 -p 7890:tcp -h 192.168.11.1 -p 7891:tcp -h 192.168.11.1 -p 7892" \
-e TARS_NODENAME="tarsnode-4" \
Expand All @@ -177,5 +190,7 @@ docker run -d --rm --net=host \
-v /data/tars:/data/tars \
-v /etc/localtime:/etc/localtime \
--name tarsnode-4 \
ruanshudong/framework-pro
```
docker.tarsyun.com/tars-pro/framework-pro
```


3 changes: 1 addition & 2 deletions pro/tars-pro.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
- 更高的可靠性
- 更优的可管理性

为了更好的长久维护Tars框架, 使用企业版本框架我们会收取一定的费用, 如果有需要请和管理员([email protected])联系!

### 基于raft构建集群高可用性

Expand Down Expand Up @@ -102,4 +101,4 @@ tars核心组件服务包括以下服务:
- 使用企业版, 如果碰到技术问题, 可以提供相关的技术支持;
- 提出的需求, 如果评估合适, 会纳入到开发计划中;

如果您有需要, 请联系`ruanshudong@qq.com`!
如果您有需要, 请联系`39067484@qq.com`!
14 changes: 14 additions & 0 deletions pro/tars-single.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## 框架单节点机制

企业版本框架除了支持集群化机制以外, 也支持单节点机制, 在某些轻量级场合可以使用.


### 数据目录

tarsregistry的数据文件目录在: `/usr/local/app/tars/tarsnode/data/tars.tarsregistry/data/DB` 目录下

### 框架扩容

单节点的框架如果希望扩容成集群化机制, 只需要将DB文件copy多其他节点, 然后启动时设置为集群模式启动即可(多台节点都需要重新启动).

注意: tarspatch, tarscollect也需要做同理处理, 当然你可以让tarsregistry是集群化机制, tarspatch, tarscollect仍然是单节点机制.

0 comments on commit 72a96e5

Please sign in to comment.