当前位置: 首页 > news >正文

【四】k8s部署 TDengine集群

k8s部署 TDengine集群

目录

k8s部署 TDengine集群

一、在 Kubernetes 上部署 TDengine 集群

第一步:创建命名空间

第二步:从yaml创建有状态服务 StatefulSet

第三步:配置 Service 服务

二、集群测试


一、在 Kubernetes 上部署 TDengine 集群

本文适用 Kubernetes v1.19 以上版本

为了满足高可用的需求,集群需要满足如下要求:

3个及以上 dnode :TDengine 的同一个 vgroup 中的多个 vnode ,不允许同时分布在一个 dnode ,所以如果创建3副本的数据库,则 dnode 数大于等于3

3个 mnode :mnode 负责整个集群的管理工作,TDengine 默认是一个 mnode。如果这个 mnode 所在的 dnode 掉线,则整个集群不可用。

数据库的3副本:TDengine 的副本配置是数据库级别,所以数据库3副本可满足在3个 dnode 的集群中,任意一个 dnode 下线,都不影响集群的正常使用。如果下线 dnode 个数为2时,此时集群不可用,因为RAFT无法完成选举**

请特别注意startupProbe的配置,在 dnode 的 Pod 掉线一段时间后,再重新启动,这个时候新上线的 dnode 会短暂不可用。如果startupProbe配置过小,Kubernetes 会认为该 Pod 处于不正常的状态,并尝试重启该 Pod,该 dnode 的 Pod 会频繁重启,始终无法恢复到正常状态。

这里我们使用 kuboard 平台部署 TDengine 集群。

第一步:创建命名空间

第二步:从yaml创建有状态服务 StatefulSet

其中创建文件 tdengine.yaml,其中 replicas 定义集群节点的数量为 3。节点时区为中国(Asia/Shanghai),每个节点分配 5G 标准(standard)存储,你也可以根据实际情况进行相应修改。

---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: "tdengine"labels:app: "tdengine"
spec:serviceName: "taosd"replicas: 3updateStrategy:type: RollingUpdateselector:matchLabels:app: "tdengine"template:metadata:name: "tdengine"labels:app: "tdengine"spec:containers:- name: "tdengine"image: "tdengine/tdengine:3.2.3.0"imagePullPolicy: "IfNotPresent"ports:- name: tcp6030protocol: "TCP"containerPort: 6030- name: tcp6041protocol: "TCP"containerPort: 6041env:# POD_NAME for FQDN config- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name# SERVICE_NAME and NAMESPACE for fqdn resolve- name: SERVICE_NAMEvalue: "taosd"- name: STS_NAMEvalue: "tdengine"- name: STS_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace# TZ for timezone settings, we recommend to always set it.- name: TZvalue: "Asia/Shanghai"# Environment variables with prefix TAOS_ will be parsed and converted into corresponding parameter in taos.cfg. For example, serverPort in taos.cfg should be configured by TAOS_SERVER_PORT when using K8S to deploy- name: TAOS_SERVER_PORTvalue: "6030"# Must set if you want a cluster.- name: TAOS_FIRST_EPvalue: "$(STS_NAME)-0.$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local:$(TAOS_SERVER_PORT)"# TAOS_FQND should always be set in k8s env.- name: TAOS_FQDNvalue: "$(POD_NAME).$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local"volumeMounts:- name: taosdatamountPath: /var/lib/taosstartupProbe:exec:command:- taos-checkfailureThreshold: 360periodSeconds: 10readinessProbe:exec:command:- taos-checkinitialDelaySeconds: 5timeoutSeconds: 5000livenessProbe:exec:command:- taos-checkinitialDelaySeconds: 15periodSeconds: 20volumeClaimTemplates:- metadata:name: taosdataspec:accessModes:- "ReadWriteOnce"storageClassName: "standard"resources:requests:storage: "5Gi"

可以看到部署成功如下图所示:

第三步:配置 Service 服务

其中创建了一个 Service 配置文件:taosd-service.yaml,内容如下:

---
apiVersion: v1
kind: Service
metadata:name: "taosd"labels:app: "tdengine"
spec:ports:- name: tcp6030protocol: "TCP"port: 6030- name: tcp6041protocol: "TCP"port: 6041selector:app: "tdengine"

部署成功如下图所示:

二、集群测试

输出如下:

taos> show dnodes

id | endpoint | vnodes | support_vnodes | status | create_time | reboot_time | note | active_code | c_active_code |

=============================================================================================================================================================================================================================================

1 | tdengine-0.ta... | 0 | 16 | ready | 2023-07-19 17:54:18.552 | 2023-07-19 17:54:18.469 | | | |

2 | tdengine-1.ta... | 0 | 16 | ready | 2023-07-19 17:54:37.828 | 2023-07-19 17:54:38.698 | | | |

3 | tdengine-2.ta... | 0 | 16 | ready | 2023-07-19 17:55:01.141 | 2023-07-19 17:55:02.039 | | | |

Query OK, 3 row(s) in set (0.001853s)

查看当前mnode

kubectl exec -it tdengine-1 -n tdengine-test -- taos -s "show mnodes\G"

taos> show mnodes\G

*************************** 1.row ***************************

id: 1

endpoint: tdengine-0.taosd.tdengine-test.svc.cluster.local:6030

role: leader

status: ready

create_time: 2023-07-19 17:54:18.559

reboot_time: 2023-07-19 17:54:19.520

Query OK, 1 row(s) in set (0.001282s)

创建mnode

kubectl exec -it tdengine-0 -n tdengine-test -- taos -s "create mnode on dnode 2"

kubectl exec -it tdengine-0 -n tdengine-test -- taos -s "create mnode on dnode 3"

查看mnode

kubectl exec -it tdengine-1 -n tdengine-test -- taos -s "show mnodes\G"

taos> show mnodes\G

*************************** 1.row ***************************

id: 1

endpoint: tdengine-0.taosd.tdengine-test.svc.cluster.local:6030

role: leader

status: ready

create_time: 2023-07-19 17:54:18.559

reboot_time: 2023-07-20 09:19:36.060

*************************** 2.row ***************************

id: 2

endpoint: tdengine-1.taosd.tdengine-test.svc.cluster.local:6030

role: follower

status: ready

create_time: 2023-07-20 09:22:05.600

reboot_time: 2023-07-20 09:22:12.838

*************************** 3.row ***************************

id: 3

endpoint: tdengine-2.taosd.tdengine-test.svc.cluster.local:6030

role: follower

status: ready

create_time: 2023-07-20 09:22:20.042

reboot_time: 2023-07-20 09:22:23.271

Query OK, 3 row(s) in set (0.003108s)


http://www.mrgr.cn/news/27150.html

相关文章:

  • TCP套接字【网络】
  • 2-94 基于matlab的最佳维纳滤波器的盲解卷积算法
  • 《论网络安全体系设计》写作框架,软考高级系统架构设计师
  • xmake vscode+clangd实现c/c++程序更精确跳转、补全
  • 小琳AI课堂:o1系列模型
  • Python 中的高并发 I/O
  • 什么是幂等
  • Coggle数据科学 | 科大讯飞AI大赛:人岗匹配挑战赛 赛季3
  • Java多线程编程-基础篇
  • 利士策分享,细品礼仪之美:在日常中优雅相处的艺术
  • 【FATFS】FATFS简介及下载
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ET 框架问题集合(请收藏,不定时更新)
  • 【例题】lanqiao1331 二进制中 1 的个数
  • MySQL聚合统计
  • Nginx:Web架构中的全能战士
  • 一分钟教你 全平台隔空投送文件 LoaclSend保姆级教程
  • Git换行符自动转换参数core.autocrlf的用法
  • 【零成本】七日杀 服务器搭建 异地联机 无需公网IP、服务器
  • 看Threejs好玩示例,学习创新与技术(二)