Merge branch '3.0' into feature/TD-11274-3.0
This commit is contained in:
commit
dd5ef4efe5
|
@ -22,6 +22,7 @@ ELSEIF (TD_WINDOWS)
|
||||||
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taos.exe DESTINATION .)
|
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taos.exe DESTINATION .)
|
||||||
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taosd.exe DESTINATION .)
|
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taosd.exe DESTINATION .)
|
||||||
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/udfd.exe DESTINATION .)
|
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/udfd.exe DESTINATION .)
|
||||||
|
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taosBenchmark.exe DESTINATION .)
|
||||||
|
|
||||||
IF (TD_MVN_INSTALLED)
|
IF (TD_MVN_INSTALLED)
|
||||||
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos-jdbcdriver-2.0.38-dist.jar DESTINATION connector/jdbc)
|
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos-jdbcdriver-2.0.38-dist.jar DESTINATION connector/jdbc)
|
||||||
|
|
|
@ -97,13 +97,13 @@ IF ("${CPUTYPE}" STREQUAL "")
|
||||||
ELSE ()
|
ELSE ()
|
||||||
# if generate ARM version:
|
# if generate ARM version:
|
||||||
# cmake -DCPUTYPE=aarch32 .. or cmake -DCPUTYPE=aarch64
|
# cmake -DCPUTYPE=aarch32 .. or cmake -DCPUTYPE=aarch64
|
||||||
IF (${CPUTYPE} MATCHES "aarch32" or ${CPUTYPE} MATCHES "arm32")
|
IF (${CPUTYPE} MATCHES "aarch32" OR ${CPUTYPE} MATCHES "arm32")
|
||||||
SET(PLATFORM_ARCH_STR "arm")
|
SET(PLATFORM_ARCH_STR "arm")
|
||||||
MESSAGE(STATUS "input cpuType: aarch32")
|
MESSAGE(STATUS "input cpuType: aarch32")
|
||||||
ADD_DEFINITIONS("-D_TD_ARM_")
|
ADD_DEFINITIONS("-D_TD_ARM_")
|
||||||
ADD_DEFINITIONS("-D_TD_ARM_32")
|
ADD_DEFINITIONS("-D_TD_ARM_32")
|
||||||
SET(TD_ARM_32 TRUE)
|
SET(TD_ARM_32 TRUE)
|
||||||
ELSEIF (${CPUTYPE} MATCHES "aarch64" or ${CPUTYPE} MATCHES "arm64")
|
ELSEIF (${CPUTYPE} MATCHES "aarch64" OR ${CPUTYPE} MATCHES "arm64")
|
||||||
SET(PLATFORM_ARCH_STR "arm64")
|
SET(PLATFORM_ARCH_STR "arm64")
|
||||||
MESSAGE(STATUS "input cpuType: aarch64")
|
MESSAGE(STATUS "input cpuType: aarch64")
|
||||||
ADD_DEFINITIONS("-D_TD_ARM_")
|
ADD_DEFINITIONS("-D_TD_ARM_")
|
||||||
|
|
|
@ -3,27 +3,11 @@ sidebar_label: Kubernetes
|
||||||
title: 在 Kubernetes 上部署 TDengine 集群
|
title: 在 Kubernetes 上部署 TDengine 集群
|
||||||
---
|
---
|
||||||
|
|
||||||
## 配置 ConfigMap
|
以下配置文件可以从 [GitHub 仓库](https://github.com/taosdata/TDengine-Operator/tree/3.0/src/tdengine) 下载。
|
||||||
|
|
||||||
为 TDengine 创建 `taoscfg.yaml`,此文件中的配置将作为环境变量传入 TDengine 镜像,更新此配置将导致所有 TDengine POD 重启。
|
## 配置 Service 服务
|
||||||
|
|
||||||
```yaml
|
创建一个 Service 配置文件:`taosd-service.yaml`,服务名称 `metadata.name` (此处为 "taosd") 将在下一步中使用到。添加 TDengine 所用到的所有端口:
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: taoscfg
|
|
||||||
labels:
|
|
||||||
app: tdengine
|
|
||||||
data:
|
|
||||||
CLUSTER: "1"
|
|
||||||
TAOS_KEEP: "3650"
|
|
||||||
TAOS_DEBUG_FLAG: "135"
|
|
||||||
```
|
|
||||||
|
|
||||||
## 配置服务
|
|
||||||
|
|
||||||
创建一个 service 配置文件:`taosd-service.yaml`,服务名称 `metadata.name` (此处为 "taosd") 将在下一步中使用到。添加 TDengine 所用到的所有端口:
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
|
@ -38,45 +22,9 @@ spec:
|
||||||
- name: tcp6030
|
- name: tcp6030
|
||||||
protocol: "TCP"
|
protocol: "TCP"
|
||||||
port: 6030
|
port: 6030
|
||||||
- name: tcp6035
|
|
||||||
protocol: "TCP"
|
|
||||||
port: 6035
|
|
||||||
- name: tcp6041
|
- name: tcp6041
|
||||||
protocol: "TCP"
|
protocol: "TCP"
|
||||||
port: 6041
|
port: 6041
|
||||||
- name: udp6030
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6030
|
|
||||||
- name: udp6031
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6031
|
|
||||||
- name: udp6032
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6032
|
|
||||||
- name: udp6033
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6033
|
|
||||||
- name: udp6034
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6034
|
|
||||||
- name: udp6035
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6035
|
|
||||||
- name: udp6036
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6036
|
|
||||||
- name: udp6037
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6037
|
|
||||||
- name: udp6038
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6038
|
|
||||||
- name: udp6039
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6039
|
|
||||||
- name: udp6040
|
|
||||||
protocol: "UDP"
|
|
||||||
port: 6040
|
|
||||||
selector:
|
selector:
|
||||||
app: "tdengine"
|
app: "tdengine"
|
||||||
```
|
```
|
||||||
|
@ -109,7 +57,7 @@ spec:
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: "tdengine"
|
- name: "tdengine"
|
||||||
image: "zitsen/taosd:develop"
|
image: "tdengine/tdengine:3.0.0.0"
|
||||||
imagePullPolicy: "Always"
|
imagePullPolicy: "Always"
|
||||||
envFrom:
|
envFrom:
|
||||||
- configMapRef:
|
- configMapRef:
|
||||||
|
@ -118,45 +66,9 @@ spec:
|
||||||
- name: tcp6030
|
- name: tcp6030
|
||||||
protocol: "TCP"
|
protocol: "TCP"
|
||||||
containerPort: 6030
|
containerPort: 6030
|
||||||
- name: tcp6035
|
|
||||||
protocol: "TCP"
|
|
||||||
containerPort: 6035
|
|
||||||
- name: tcp6041
|
- name: tcp6041
|
||||||
protocol: "TCP"
|
protocol: "TCP"
|
||||||
containerPort: 6041
|
containerPort: 6041
|
||||||
- name: udp6030
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6030
|
|
||||||
- name: udp6031
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6031
|
|
||||||
- name: udp6032
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6032
|
|
||||||
- name: udp6033
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6033
|
|
||||||
- name: udp6034
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6034
|
|
||||||
- name: udp6035
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6035
|
|
||||||
- name: udp6036
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6036
|
|
||||||
- name: udp6037
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6037
|
|
||||||
- name: udp6038
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6038
|
|
||||||
- name: udp6039
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6039
|
|
||||||
- name: udp6040
|
|
||||||
protocol: "UDP"
|
|
||||||
containerPort: 6040
|
|
||||||
env:
|
env:
|
||||||
# POD_NAME for FQDN config
|
# POD_NAME for FQDN config
|
||||||
- name: POD_NAME
|
- name: POD_NAME
|
||||||
|
@ -190,14 +102,13 @@ spec:
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
- taos
|
- taos-check
|
||||||
- -s
|
|
||||||
- "show mnodes"
|
|
||||||
initialDelaySeconds: 5
|
initialDelaySeconds: 5
|
||||||
timeoutSeconds: 5000
|
timeoutSeconds: 5000
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
tcpSocket:
|
exec:
|
||||||
port: 6030
|
command:
|
||||||
|
- taos-check
|
||||||
initialDelaySeconds: 15
|
initialDelaySeconds: 15
|
||||||
periodSeconds: 20
|
periodSeconds: 20
|
||||||
volumeClaimTemplates:
|
volumeClaimTemplates:
|
||||||
|
@ -206,44 +117,78 @@ spec:
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- "ReadWriteOnce"
|
- "ReadWriteOnce"
|
||||||
storageClassName: "csi-rbd-sc"
|
storageClassName: "standard"
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: "10Gi"
|
storage: "10Gi"
|
||||||
```
|
```
|
||||||
|
|
||||||
## 启动集群
|
## 使用 kubectl 命令部署 TDengine 集群
|
||||||
|
|
||||||
将前述三个文件添加到 Kubernetes 集群中:
|
顺序执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl apply -f taoscfg.yaml
|
|
||||||
kubectl apply -f taosd-service.yaml
|
kubectl apply -f taosd-service.yaml
|
||||||
kubectl apply -f tdengine.yaml
|
kubectl apply -f tdengine.yaml
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
上面的配置将生成一个两节点的 TDengine 集群,dnode 是自动配置的,可以使用 `show dnodes` 命令查看当前集群的节点:
|
上面的配置将生成一个三节点的 TDengine 集群,dnode 是自动配置的,可以使用 show dnodes 命令查看当前集群的节点:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes"
|
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes"
|
||||||
kubectl exec -i -t tdengine-1 -- taos -s "show dnodes"
|
kubectl exec -i -t tdengine-1 -- taos -s "show dnodes"
|
||||||
|
kubectl exec -i -t tdengine-2 -- taos -s "show dnodes"
|
||||||
```
|
```
|
||||||
|
|
||||||
输出如下:
|
输出如下:
|
||||||
|
|
||||||
```
|
```
|
||||||
Welcome to the TDengine shell from Linux, Client Version:2.1.1.0
|
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
|
||||||
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
|
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
|
||||||
|
|
||||||
taos> show dnodes
|
taos> show dnodes
|
||||||
id | end_point | vnodes | cores | status | role | create_time | offline reason |
|
id | endpoint | vnodes | support_vnodes | status | create_time | note |
|
||||||
======================================================================================================================================
|
============================================================================================================================================
|
||||||
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 17:13:24.181 | |
|
1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
|
||||||
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 17:14:09.257 | |
|
2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
|
||||||
Query OK, 2 row(s) in set (0.000997s)
|
3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
|
||||||
|
Query OK, 3 rows in database (0.003655s)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 使能端口转发
|
||||||
|
|
||||||
|
利用 kubectl 端口转发功能可以使应用可以访问 Kubernetes 环境运行的 TDengine 集群。
|
||||||
|
|
||||||
|
```
|
||||||
|
kubectl port-forward tdengine-0 6041:6041 &
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 curl 命令验证 TDengine REST API 使用的 6041 接口。
|
||||||
|
|
||||||
|
```
|
||||||
|
$ curl -u root:taosdata -d "show databases" 127.0.0.1:6041/rest/sql
|
||||||
|
Handling connection for 6041
|
||||||
|
{"code":0,"column_meta":[["name","VARCHAR",64],["create_time","TIMESTAMP",8],["vgroups","SMALLINT",2],["ntables","BIGINT",8],["replica","TINYINT",1],["strict","VARCHAR",4],["duration","VARCHAR",10],["keep","VARCHAR",32],["buffer","INT",4],["pagesize","INT",4],["pages","INT",4],["minrows","INT",4],["maxrows","INT",4],["comp","TINYINT",1],["precision","VARCHAR",2],["status","VARCHAR",10],["retention","VARCHAR",60],["single_stable","BOOL",1],["cachemodel","VARCHAR",11],["cachesize","INT",4],["wal_level","TINYINT",1],["wal_fsync_period","INT",4],["wal_retention_period","INT",4],["wal_retention_size","BIGINT",8],["wal_roll_period","INT",4],["wal_segment_size","BIGINT",8]],"data":[["information_schema",null,null,16,null,null,null,null,null,null,null,null,null,null,null,"ready",null,null,null,null,null,null,null,null,null,null],["performance_schema",null,null,10,null,null,null,null,null,null,null,null,null,null,null,"ready",null,null,null,null,null,null,null,null,null,null]],"rows":2}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 使用 dashboard 进行图形化管理
|
||||||
|
|
||||||
|
minikube 提供 dashboard 命令支持图形化管理界面。
|
||||||
|
|
||||||
|
```
|
||||||
|
$ minikube dashboard
|
||||||
|
* Verifying dashboard health ...
|
||||||
|
* Launching proxy ...
|
||||||
|
* Verifying proxy health ...
|
||||||
|
* Opening http://127.0.0.1:46617/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
|
||||||
|
http://127.0.0.1:46617/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
|
||||||
|
```
|
||||||
|
|
||||||
|
对于某些公有云环境,minikube 绑定在 127.0.0.1 IP 地址上无法通过远程访问,需要使用 kubectl proxy 命令将端口映射到 0.0.0.0 IP 地址上,再通过浏览器访问虚拟机公网 IP 和端口以及相同的 dashboard URL 路径即可远程访问 dashboard。
|
||||||
|
|
||||||
|
```
|
||||||
|
$ kubectl proxy --accept-hosts='^.*$' --address='0.0.0.0'
|
||||||
```
|
```
|
||||||
|
|
||||||
## 集群扩容
|
## 集群扩容
|
||||||
|
@ -252,14 +197,12 @@ TDengine 集群支持自动扩容:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl scale statefulsets tdengine --replicas=4
|
kubectl scale statefulsets tdengine --replicas=4
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
上面命令行中参数 `--replica=4` 表示要将 TDengine 集群扩容到 4 个节点,执行后首先检查 POD 的状态:
|
上面命令行中参数 `--replica=4` 表示要将 TDengine 集群扩容到 4 个节点,执行后首先检查 POD 的状态:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl get pods -l app=tdengine
|
kubectl get pods -l app=tdengine
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
输出如下:
|
输出如下:
|
||||||
|
@ -270,102 +213,112 @@ tdengine-0 1/1 Running 0 161m
|
||||||
tdengine-1 1/1 Running 0 161m
|
tdengine-1 1/1 Running 0 161m
|
||||||
tdengine-2 1/1 Running 0 32m
|
tdengine-2 1/1 Running 0 32m
|
||||||
tdengine-3 1/1 Running 0 32m
|
tdengine-3 1/1 Running 0 32m
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
此时 POD 的状态仍然是 Running,TDengine 集群中的 dnode 状态要等 POD 状态为 `ready` 之后才能看到:
|
此时 POD 的状态仍然是 Running,TDengine 集群中的 dnode 状态要等 POD 状态为 `ready` 之后才能看到:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes"
|
kubectl exec -i -t tdengine-3 -- taos -s "show dnodes"
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
扩容后的四节点 TDengine 集群的 dnode 列表:
|
扩容后的四节点 TDengine 集群的 dnode 列表:
|
||||||
|
|
||||||
```
|
```
|
||||||
Welcome to the TDengine shell from Linux, Client Version:2.1.1.0
|
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
|
||||||
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
|
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
|
||||||
|
|
||||||
taos> show dnodes
|
taos> show dnodes
|
||||||
id | end_point | vnodes | cores | status | role | create_time | offline reason |
|
id | endpoint | vnodes | support_vnodes | status | create_time | note |
|
||||||
======================================================================================================================================
|
============================================================================================================================================
|
||||||
1 | tdengine-0.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:12.915 | |
|
1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
|
||||||
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:33.127 | |
|
2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
|
||||||
3 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 14:07:27.078 | |
|
3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
|
||||||
4 | tdengine-3.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 14:07:48.362 | |
|
4 | tdengine-3.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:33:16.039 | |
|
||||||
Query OK, 4 row(s) in set (0.001293s)
|
Query OK, 4 rows in database (0.008377s)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 集群缩容
|
## 集群缩容
|
||||||
|
|
||||||
TDengine 的缩容并没有自动化,我们尝试将一个三节点集群缩容到两节点。
|
由于 TDengine 集群在扩缩容时会对数据进行节点间迁移,使用 kubectl 命令进行缩容需要首先使用 "drop dnodes" 命令,节点删除完成后再进行 Kubernetes 集群缩容。
|
||||||
|
|
||||||
首先,确认一个三节点 TDengine 集群正常工作,在 TDengine CLI 中查看 dnode 的状态:
|
注意:由于 Kubernetes Statefulset 中 Pod 的只能按创建顺序逆序移除,所以 TDengine drop dnode 也需要按照创建顺序逆序移除,否则会导致 Pod 处于错误状态。
|
||||||
|
|
||||||
|
```
|
||||||
|
$ kubectl exec -i -t tdengine-0 -- taos -s "drop dnode 4"
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
$ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
|
||||||
|
|
||||||
|
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
|
||||||
|
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
|
||||||
|
|
||||||
taos> show dnodes
|
taos> show dnodes
|
||||||
id | end_point | vnodes | cores | status | role | create_time | offline reason |
|
id | endpoint | vnodes | support_vnodes | status | create_time | note |
|
||||||
======================================================================================================================================
|
============================================================================================================================================
|
||||||
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 16:27:24.852 | |
|
1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
|
||||||
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:27:53.339 | |
|
2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
|
||||||
3 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:28:49.787 | |
|
3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
|
||||||
Query OK, 3 row(s) in set (0.001101s)
|
Query OK, 3 rows in database (0.004861s)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
想要安全的缩容,首先需要将节点从 dnode 列表中移除,也即从集群中移除:
|
确认移除成功后(使用 kubectl exec -i -t tdengine-0 -- taos -s "show dnodes" 查看和确认 dnode 列表),使用 kubectl 命令移除 POD:
|
||||||
|
|
||||||
|
```
|
||||||
|
kubectl scale statefulsets tdengine --replicas=3
|
||||||
|
```
|
||||||
|
|
||||||
|
最后一个 POD 将会被删除。使用命令 kubectl get pods -l app=tdengine 查看POD状态:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ kubectl get pods -l app=tdengine
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
tdengine-0 1/1 Running 0 4m7s
|
||||||
|
tdengine-1 1/1 Running 0 3m55s
|
||||||
|
tdengine-2 1/1 Running 0 2m28s
|
||||||
|
```
|
||||||
|
|
||||||
|
POD删除后,需要手动删除PVC,否则下次扩容时会继续使用以前的数据导致无法正常加入集群。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl exec -i -t tdengine-0 -- taos -s "drop dnode 'tdengine-2.taosd.default.svc.cluster.local:6030'"
|
$ kubectl delete pvc taosdata-tdengine-3
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
通过 `show dondes` 命令确认移除成功后,移除相应的 POD:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl scale statefulsets tdengine --replicas=2
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
最后一个 POD 会被删除,使用 `kubectl get pods -l app=tdengine` 查看集群状态:
|
|
||||||
|
|
||||||
```
|
|
||||||
NAME READY STATUS RESTARTS AGE
|
|
||||||
tdengine-0 1/1 Running 0 3h40m
|
|
||||||
tdengine-1 1/1 Running 0 3h40m
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
POD 删除后,需要手动删除 PVC,否则下次扩容时会继续使用以前的数据导致无法正常加入集群。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl delete pvc taosdata-tdengine-2
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
此时的集群状态是安全的,需要时还可以再次进行扩容:
|
此时的集群状态是安全的,需要时还可以再次进行扩容:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl scale statefulsets tdengine --replicas=3
|
$ kubectl scale statefulsets tdengine --replicas=4
|
||||||
|
statefulset.apps/tdengine scaled
|
||||||
|
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl get pods -l app=tdengine
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
tdengine-0 1/1 Running 0 35m
|
||||||
|
tdengine-1 1/1 Running 0 34m
|
||||||
|
tdengine-2 1/1 Running 0 12m
|
||||||
|
tdengine-3 0/1 ContainerCreating 0 4s
|
||||||
|
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl get pods -l app=tdengine
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
tdengine-0 1/1 Running 0 35m
|
||||||
|
tdengine-1 1/1 Running 0 34m
|
||||||
|
tdengine-2 1/1 Running 0 12m
|
||||||
|
tdengine-3 0/1 Running 0 7s
|
||||||
|
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
|
||||||
|
|
||||||
|
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
|
||||||
|
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
|
||||||
|
|
||||||
```
|
Server is Community Edition.
|
||||||
|
|
||||||
`show dnodes` 输出如下:
|
|
||||||
|
|
||||||
```
|
|
||||||
taos> show dnodes
|
taos> show dnodes
|
||||||
id | end_point | vnodes | cores | status | role | create_time | offline reason |
|
id | endpoint | vnodes | support_vnodes | status | create_time | offline reason |
|
||||||
======================================================================================================================================
|
======================================================================================================================================
|
||||||
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 16:27:24.852 | |
|
1 | tdengine-0.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 17:38:49.012 | |
|
||||||
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:27:53.339 | |
|
2 | tdengine-1.taosd.default.sv... | 1 | 4 | ready | 2022-07-25 17:39:01.517 | |
|
||||||
4 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:40:49.177 | |
|
5 | tdengine-2.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 18:01:36.479 | |
|
||||||
|
6 | tdengine-3.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 18:13:54.411 | |
|
||||||
|
Query OK, 4 row(s) in set (0.001348s)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 删除集群
|
## 清理 TDengine 集群
|
||||||
|
|
||||||
完整移除 TDengine 集群,需要分别清理 statefulset、svc、configmap、pvc。
|
完整移除 TDengine 集群,需要分别清理 statefulset、svc、configmap、pvc。
|
||||||
|
|
||||||
|
@ -381,26 +334,26 @@ kubectl delete configmap taoscfg
|
||||||
|
|
||||||
### 错误一
|
### 错误一
|
||||||
|
|
||||||
扩容到四节点之后缩容到两节点,删除的 POD 会进入 offline 状态:
|
未进行 "drop dnode" 直接进行缩容,由于 TDengine 尚未删除节点,缩容 pod 导致 TDengine 集群中部分节点处于 offline 状态。
|
||||||
|
|
||||||
```
|
```
|
||||||
Welcome to the TDengine shell from Linux, Client Version:2.1.1.0
|
$ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
|
||||||
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
|
|
||||||
|
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
|
||||||
|
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
|
||||||
|
|
||||||
|
Server is Community Edition.
|
||||||
|
|
||||||
taos> show dnodes
|
taos> show dnodes
|
||||||
id | end_point | vnodes | cores | status | role | create_time | offline reason |
|
id | endpoint | vnodes | support_vnodes | status | create_time | offline reason |
|
||||||
======================================================================================================================================
|
======================================================================================================================================
|
||||||
1 | tdengine-0.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:12.915 | |
|
1 | tdengine-0.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 17:38:49.012 | |
|
||||||
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:33.127 | |
|
2 | tdengine-1.taosd.default.sv... | 1 | 4 | ready | 2022-07-25 17:39:01.517 | |
|
||||||
3 | tdengine-2.taosd.default.sv... | 0 | 40 | offline | any | 2021-06-01 14:07:27.078 | status msg timeout |
|
5 | tdengine-2.taosd.default.sv... | 0 | 4 | offline | 2022-07-25 18:01:36.479 | status msg timeout |
|
||||||
4 | tdengine-3.taosd.default.sv... | 1 | 40 | offline | any | 2021-06-01 14:07:48.362 | status msg timeout |
|
6 | tdengine-3.taosd.default.sv... | 0 | 4 | offline | 2022-07-25 18:13:54.411 | status msg timeout |
|
||||||
Query OK, 4 row(s) in set (0.001236s)
|
Query OK, 4 row(s) in set (0.001323s)
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
但 `drop dnode` 的行为按不会按照预期进行,且下次集群重启后,所有的 dnode 节点将无法启动 dropping 状态无法退出。
|
|
||||||
|
|
||||||
### 错误二
|
### 错误二
|
||||||
|
|
||||||
TDengine 集群会持有 replica 参数,如果缩容后的节点数小于这个值,集群将无法使用:
|
TDengine 集群会持有 replica 参数,如果缩容后的节点数小于这个值,集群将无法使用:
|
||||||
|
|
|
@ -32,6 +32,7 @@ extern "C" {
|
||||||
typedef struct TdCmd *TdCmdPtr;
|
typedef struct TdCmd *TdCmdPtr;
|
||||||
|
|
||||||
TdCmdPtr taosOpenCmd(const char* cmd);
|
TdCmdPtr taosOpenCmd(const char* cmd);
|
||||||
|
int64_t taosGetsCmd(TdCmdPtr pCmd, int32_t maxSize, char *__restrict buf);
|
||||||
int64_t taosGetLineCmd(TdCmdPtr pCmd, char** __restrict ptrBuf);
|
int64_t taosGetLineCmd(TdCmdPtr pCmd, char** __restrict ptrBuf);
|
||||||
int32_t taosEOFCmd(TdCmdPtr pCmd);
|
int32_t taosEOFCmd(TdCmdPtr pCmd);
|
||||||
int64_t taosCloseCmd(TdCmdPtr* ppCmd);
|
int64_t taosCloseCmd(TdCmdPtr* ppCmd);
|
||||||
|
|
|
@ -11,13 +11,13 @@ if !%2==! GOTO USAGE
|
||||||
if "%1" == "cluster" (
|
if "%1" == "cluster" (
|
||||||
set work_dir=%internal_dir%
|
set work_dir=%internal_dir%
|
||||||
set packagServerName_x64=TDengine-enterprise-server-%2-beta-Windows-x64
|
set packagServerName_x64=TDengine-enterprise-server-%2-beta-Windows-x64
|
||||||
set packagServerName_x86=TDengine-enterprise-server-%2-beta-Windows-x86
|
@REM set packagServerName_x86=TDengine-enterprise-server-%2-beta-Windows-x86
|
||||||
set packagClientName_x64=TDengine-enterprise-client-%2-beta-Windows-x64
|
set packagClientName_x64=TDengine-enterprise-client-%2-beta-Windows-x64
|
||||||
set packagClientName_x86=TDengine-enterprise-client-%2-beta-Windows-x86
|
set packagClientName_x86=TDengine-enterprise-client-%2-beta-Windows-x86
|
||||||
) else (
|
) else (
|
||||||
set work_dir=%community_dir%
|
set work_dir=%community_dir%
|
||||||
set packagServerName_x64=TDengine-server-%2-Windows-x64
|
set packagServerName_x64=TDengine-server-%2-Windows-x64
|
||||||
set packagServerName_x86=TDengine-server-%2-Windows-x86
|
@REM set packagServerName_x86=TDengine-server-%2-Windows-x86
|
||||||
set packagClientName_x64=TDengine-client-%2-Windows-x64
|
set packagClientName_x64=TDengine-client-%2-Windows-x64
|
||||||
set packagClientName_x86=TDengine-client-%2-Windows-x86
|
set packagClientName_x86=TDengine-client-%2-Windows-x86
|
||||||
)
|
)
|
||||||
|
@ -59,8 +59,8 @@ rd /s /Q C:\TDengine
|
||||||
cmake --install .
|
cmake --install .
|
||||||
if not %errorlevel% == 0 ( call :RUNFAILED build x86 failed & exit /b 1)
|
if not %errorlevel% == 0 ( call :RUNFAILED build x86 failed & exit /b 1)
|
||||||
cd %package_dir%
|
cd %package_dir%
|
||||||
iscc /DMyAppInstallName="%packagServerName_x86%" /DMyAppVersion="%2" /DMyAppExcludeSource="" tools\tdengine.iss /O..\release
|
@REM iscc /DMyAppInstallName="%packagServerName_x86%" /DMyAppVersion="%2" /DMyAppExcludeSource="" tools\tdengine.iss /O..\release
|
||||||
if not %errorlevel% == 0 ( call :RUNFAILED package %packagServerName_x86% failed & exit /b 1)
|
@REM if not %errorlevel% == 0 ( call :RUNFAILED package %packagServerName_x86% failed & exit /b 1)
|
||||||
iscc /DMyAppInstallName="%packagClientName_x86%" /DMyAppVersion="%2" /DMyAppExcludeSource="taosd.exe" tools\tdengine.iss /O..\release
|
iscc /DMyAppInstallName="%packagClientName_x86%" /DMyAppVersion="%2" /DMyAppExcludeSource="taosd.exe" tools\tdengine.iss /O..\release
|
||||||
if not %errorlevel% == 0 ( call :RUNFAILED package %packagClientName_x86% failed & exit /b 1)
|
if not %errorlevel% == 0 ( call :RUNFAILED package %packagClientName_x86% failed & exit /b 1)
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,6 @@ int32_t syncNodeAppendEntriesPeersSnapshot2(SSyncNode* pSyncNode) {
|
||||||
|
|
||||||
// send msg
|
// send msg
|
||||||
syncNodeAppendEntriesBatch(pSyncNode, pDestId, pMsg);
|
syncNodeAppendEntriesBatch(pSyncNode, pDestId, pMsg);
|
||||||
syncAppendEntriesBatchDestroy(pMsg);
|
|
||||||
|
|
||||||
// speed up
|
// speed up
|
||||||
if (pMsg->dataCount > 0 && pSyncNode->commitIndex - pMsg->prevLogIndex > SYNC_SLOW_DOWN_RANGE) {
|
if (pMsg->dataCount > 0 && pSyncNode->commitIndex - pMsg->prevLogIndex > SYNC_SLOW_DOWN_RANGE) {
|
||||||
|
@ -216,6 +215,8 @@ int32_t syncNodeAppendEntriesPeersSnapshot2(SSyncNode* pSyncNode) {
|
||||||
} while (0);
|
} while (0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
syncAppendEntriesBatchDestroy(pMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#define ALLOW_FORBID_FUNC
|
#define ALLOW_FORBID_FUNC
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
#include "tdef.h"
|
||||||
#include "pthread.h"
|
#include "pthread.h"
|
||||||
|
|
||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
|
@ -57,7 +58,7 @@ int32_t taosGetAppName(char* name, int32_t* len) {
|
||||||
end = filepath;
|
end = filepath;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(name, end);
|
tstrncpy(name, end, TSDB_APP_NAME_LEN);
|
||||||
|
|
||||||
if (len != NULL) {
|
if (len != NULL) {
|
||||||
*len = (int32_t)strlen(end);
|
*len = (int32_t)strlen(end);
|
||||||
|
@ -625,7 +626,7 @@ int32_t taosGetAppName(char *name, int32_t *len) {
|
||||||
buf[PATH_MAX] = '\0';
|
buf[PATH_MAX] = '\0';
|
||||||
size_t n = strlen(buf);
|
size_t n = strlen(buf);
|
||||||
if (len) *len = n;
|
if (len) *len = n;
|
||||||
if (name) strcpy(name, buf);
|
if (name) tstrncpy(name, buf, TSDB_APP_NAME_LEN);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -668,7 +669,7 @@ int32_t taosGetAppName(char* name, int32_t* len) {
|
||||||
|
|
||||||
++end;
|
++end;
|
||||||
|
|
||||||
strcpy(name, end);
|
tstrncpy(name, end, TSDB_APP_NAME_LEN);
|
||||||
|
|
||||||
if (len != NULL) {
|
if (len != NULL) {
|
||||||
*len = strlen(name);
|
*len = strlen(name);
|
||||||
|
|
|
@ -398,7 +398,7 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
|
||||||
if (line != NULL) taosMemoryFree(line);
|
if (line != NULL) taosMemoryFree(line);
|
||||||
taosCloseFile(&pFile);
|
taosCloseFile(&pFile);
|
||||||
|
|
||||||
if (code != 0) {
|
if (code != 0 && (done & 1) == 0) {
|
||||||
TdFilePtr pFile1 = taosOpenFile("/proc/device-tree/model", TD_FILE_READ | TD_FILE_STREAM);
|
TdFilePtr pFile1 = taosOpenFile("/proc/device-tree/model", TD_FILE_READ | TD_FILE_STREAM);
|
||||||
if (pFile1 == NULL) return code;
|
if (pFile1 == NULL) return code;
|
||||||
taosGetsFile(pFile1, maxLen, cpuModel);
|
taosGetsFile(pFile1, maxLen, cpuModel);
|
||||||
|
@ -407,6 +407,16 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
|
||||||
done |= 1;
|
done |= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (code != 0 && (done & 1) == 0) {
|
||||||
|
TdCmdPtr pCmd = taosOpenCmd("uname -a");
|
||||||
|
if (pCmd == NULL) return code;
|
||||||
|
if (taosGetsCmd(pCmd, maxLen, cpuModel) > 0) {
|
||||||
|
code = 0;
|
||||||
|
done |= 1;
|
||||||
|
}
|
||||||
|
taosCloseCmd(&pCmd);
|
||||||
|
}
|
||||||
|
|
||||||
if ((done & 2) == 0) {
|
if ((done & 2) == 0) {
|
||||||
*numOfCores = coreCount;
|
*numOfCores = coreCount;
|
||||||
done |= 2;
|
done |= 2;
|
||||||
|
|
|
@ -248,6 +248,16 @@ TdCmdPtr taosOpenCmd(const char* cmd) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t taosGetsCmd(TdCmdPtr pCmd, int32_t maxSize, char *__restrict buf) {
|
||||||
|
if (pCmd == NULL || buf == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (fgets(buf, maxSize, (FILE*)pCmd) == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return strlen(buf);
|
||||||
|
}
|
||||||
|
|
||||||
int64_t taosGetLineCmd(TdCmdPtr pCmd, char** __restrict ptrBuf) {
|
int64_t taosGetLineCmd(TdCmdPtr pCmd, char** __restrict ptrBuf) {
|
||||||
if (pCmd == NULL || ptrBuf == NULL) {
|
if (pCmd == NULL || ptrBuf == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue