01-deploy.md 7.6 KB
Newer Older
D
dingbo 已提交
1 2 3
---
title: 集群部署
---
B
Bo Ding 已提交
4 5 6 7

## 准备工作

### 第零步
B
Bo Ding 已提交
8

9
规划集群所有物理节点的 FQDN,将规划好的 FQDN 分别添加到每个物理节点的 /etc/hostname;修改每个物理节点的 /etc/hosts,将所有集群物理节点的 IP 与 FQDN 的对应添加好。【如部署了 DNS,请联系网络管理员在 DNS 上做好相关配置】
B
Bo Ding 已提交
10

B
Bo Ding 已提交
11
### 第一步
B
Bo Ding 已提交
12

13
如果搭建集群的物理节点中,存有之前的测试数据、装过 1.X 的版本,或者装过其他版本的 TDengine,请先将其删除,并清空所有数据(如果需要保留原有数据,请联系涛思交付团队进行旧版本升级、数据迁移),具体步骤请参考博客[《TDengine 多种安装包的安装和卸载》](https://www.taosdata.com/blog/2019/08/09/566.html)
B
Bo Ding 已提交
14

15
:::note
B
Bo Ding 已提交
16
因为 FQDN 的信息会写进文件,如果之前没有配置或者更改 FQDN,且启动了 TDengine。请一定在确保数据无用或者备份的前提下,清理一下之前的数据(rm -rf /var/lib/taos/\*);
17
:::
B
Bo Ding 已提交
18

19 20 21
:::note
客户端也需要配置,确保它可以正确解析每个节点的 FQDN 配置,不管是通过 DNS 服务,还是修改 hosts 文件。
:::
B
Bo Ding 已提交
22

B
Bo Ding 已提交
23
### 第二步
24 25 26

建议关闭所有物理节点的防火墙,至少保证端口:6030 - 6042 的 TCP 和 UDP 端口都是开放的。强烈建议先关闭防火墙,集群搭建完毕之后,再来配置端口;

B
Bo Ding 已提交
27
### 第三步
28

29
在所有物理节点安装 TDengine,且版本必须是一致的,但不要启动 taosd。安装时,提示输入是否要加入一个已经存在的 TDengine 集群时,第一个物理节点直接回车创建新集群,后续物理节点则输入该集群任何一个在线的物理节点的 FQDN:端口号(默认 6030);
30

B
Bo Ding 已提交
31
### 第四步
32 33

检查所有数据节点,以及应用程序所在物理节点的网络设置:
B
Bo Ding 已提交
34

35
每个物理节点上执行命令 `hostname -f`,查看和确认所有节点的 hostname 是不相同的(应用驱动所在节点无需做此项检查);
B
Bo Ding 已提交
36

37
每个物理节点上执行 ping host,其中 host 是其他物理节点的 hostname,看能否 ping 通其它物理节点;如果不能 ping 通,需要检查网络设置,或 /etc/hosts 文件(Windows 系统默认路径为 C:\Windows\system32\drivers\etc\hosts),或 DNS 的配置。如果无法 ping 通,是无法组成集群的;
B
Bo Ding 已提交
38 39 40

从应用运行的物理节点,ping taosd 运行的数据节点,如果无法 ping 通,应用是无法连接 taosd 的,请检查应用所在物理节点的 DNS 设置或 hosts 文件;

B
Bo Ding 已提交
41
每个数据节点的 End Point 就是输出的 hostname 外加端口号,比如 h1.taosdata.com:6030。
B
Bo Ding 已提交
42

B
Bo Ding 已提交
43
### 第五步
44

45
修改 TDengine 的配置文件(所有节点的文件 /etc/taos/taos.cfg 都需要修改)。假设准备启动的第一个数据节点 End Point 为 h1.taosdata.com:6030,其与集群配置相关参数如下:
B
Bo Ding 已提交
46

B
Bo Ding 已提交
47
```c
B
Bo Ding 已提交
48 49 50
// firstEp 是每个数据节点首次启动后连接的第一个数据节点
firstEp               h1.taosdata.com:6030

51
// 必须配置为本数据节点的 FQDN,如果本机只有一个 hostname,可注释掉本项
B
Bo Ding 已提交
52 53
fqdn                  h1.taosdata.com

54
// 配置本数据节点的端口号,缺省是 6030
B
Bo Ding 已提交
55 56
serverPort            6030

57
// 副本数为偶数的时候,需要配置,请参考《Arbitrator 的使用》的部分
B
Bo Ding 已提交
58 59
arbitrator            ha.taosdata.com:6042
```
B
Bo Ding 已提交
60

B
Bo Ding 已提交
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
一定要修改的参数是 firstEp 和 fqdn。在每个数据节点,firstEp 需全部配置成一样,但 fqdn 一定要配置成其所在数据节点的值。其他参数可不做任何修改,除非你很清楚为什么要修改。

加入到集群中的数据节点 dnode,涉及集群相关的下表 9 项参数必须完全相同,否则不能成功加入到集群中。

| **#** | **配置参数名称**   | **含义**                                    |
| ----- | ------------------ | ------------------------------------------- |
| 1     | numOfMnodes        | 系统中管理节点个数                          |
| 2     | mnodeEqualVnodeNum | 一个 mnode 等同于 vnode 消耗的个数          |
| 3     | offlineThreshold   | dnode 离线阈值,超过该时间将导致 Dnode 离线 |
| 4     | statusInterval     | dnode 向 mnode 报告状态时长                 |
| 5     | arbitrator         | 系统中裁决器的 End Point                    |
| 6     | timezone           | 时区                                        |
| 7     | balance            | 是否启动负载均衡                            |
| 8     | maxTablesPerVnode  | 每个 vnode 中能够创建的最大表个数           |
| 9     | maxVgroupsPerDb    | 每个 DB 中能够使用的最大 vgroup 个数        |

77 78
:::note
在 2.0.19.0 及更早的版本中,除以上 9 项参数外,dnode 加入集群时,还会要求 locale 和 charset 参数的取值也一致。
B
Bo Ding 已提交
79

80
:::
B
Bo Ding 已提交
81 82 83 84 85

## 启动集群

### 启动第一个数据节点

86
按照《立即开始》里的步骤,启动第一个数据节点,例如 h1.taosdata.com,然后执行 taos,启动 taos shell,从 shell 里执行命令“SHOW DNODES”,如下所示:
B
Bo Ding 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

```
Welcome to the TDengine shell from Linux, Client Version:2.0.0.0


Copyright (c) 2017 by TAOS Data, Inc. All rights reserved.

taos> show dnodes;
 id |       end_point    | vnodes | cores | status | role |      create_time        |
=====================================================================================
  1 |  h1.taos.com:6030  |      0 |     2 |  ready |  any | 2020-07-31 03:49:29.202 |
Query OK, 1 row(s) in set (0.006385s)

taos>
```

103
上述命令里,可以看到刚启动的数据节点的 End Point 是:h1.taos.com:6030,就是这个新集群的 firstEp。
B
Bo Ding 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116

### 启动后续数据节点

将后续的数据节点添加到现有集群,具体有以下几步:

按照《立即开始》一章的方法在每个物理节点启动 taosd;(注意:每个物理节点都需要在 taos.cfg 文件中将 firstEp 参数配置为新集群首个节点的 End Point——在本例中是 h1.taos.com:6030)

在第一个数据节点,使用 CLI 程序 taos,登录进 TDengine 系统,执行命令:

```sql
CREATE DNODE "h2.taos.com:6030";
```

117
将新数据节点的 End Point(准备工作中第四步获知的)添加进集群的 EP 列表。“fqdn:port”需要用双引号引起来,否则出错。请注意将示例的“h2.taos.com:6030” 替换为这个新数据节点的 End Point。
B
Bo Ding 已提交
118 119 120 121 122 123 124 125 126

然后执行命令

```sql
SHOW DNODES;
```

查看新节点是否被成功加入。如果该被加入的数据节点处于离线状态,请做两个检查:

127 128
查看该数据节点的 taosd 是否正常工作,如果没有正常运行,需要先检查为什么?
查看该数据节点 taosd 日志文件 taosdlog.0 里前面几行日志(一般在 /var/log/taos 目录),看日志里输出的该数据节点 fqdn 以及端口号是否为刚添加的 End Point。如果不一致,需要将正确的 End Point 添加进去。
B
Bo Ding 已提交
129 130 131 132 133 134 135 136 137 138
按照上述步骤可以源源不断的将新的数据节点加入到集群。

:::tip

任何已经加入集群在线的数据节点,都可以作为后续待加入节点的 firstEp。
firstEp 这个参数仅仅在该数据节点首次加入集群时有作用,加入集群后,该数据节点会保存最新的 mnode 的 End Point 列表,不再依赖这个参数。
接下来,配置文件中的 firstEp 参数就主要在客户端连接的时候使用了,例如 taos shell 如果不加参数,会默认连接由 firstEp 指定的节点。
两个没有配置 firstEp 参数的数据节点 dnode 启动后,会独立运行起来。这个时候,无法将其中一个数据节点加入到另外一个数据节点,形成集群。无法将两个独立的集群合并成为新的集群。

:::