TDengine | 01 | TDengine3.0部署

1 TDengine简介

TDengine 是一款开源、高性能、云原生的时序数据库,且针对物联网、车联网、工业互联网、金融、IT 运维等场景进行了优化。TDengine 的代码,包括集群功能,都在 GNU AGPL v3.0 下开源。除核心的时序数据库功能外,TDengine 还提供缓存、数据订阅、流式计算等其它功能以降低系统复杂度及研发和运维成本。

1.1 参考地址

https://docs.taosdata.com/get-started/package/

2 docker部署

2.1 安装docker

2.1.1 设置docker下载的镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.1.2 添加缓存

yum makecache fast

2.1.3 安装docker

yum install docker-ce docker-ce-cli containerd.io

2.1.4 启动docker并设置开机自启

systemctl start docker
systemctl enable docker

在这里插入图片描述

2.2 docker安装TDengine

2.2.1 下载tdengine

docker pull tdengine/tdengine:latest

在这里插入图片描述

2.2.2 映射端口

docker run -d -p 6030:6030 -p 6041:6041 -p 6043-6049:6043-6049 -p 6043-6049:6043-6049/udp tdengine/tdengine

在这里插入图片描述
注意:TDengine 3.0 服务端仅使用 6030 TCP 端口。6041 为 taosAdapter 所使用提供 REST 服务端口。6043-6049 为 taosAdapter 提供第三方应用接入所使用端口,可根据需要选择是否打开。

2.2.3 查看docker容器

docker ps

在这里插入图片描述

2.2.4 进入该容器并执行

docker exec -it 【容器id】6f87d240b428   bash

2.2.5 运行 TDengine CLI

taos

在这里插入图片描述

2.2.6 检测

2.2.6.1 使用 taosBenchmark 体验写入速度
taosBenchmark
2.2.6.2 使用 TDengine CLI 体验查询速度
SELECT COUNT(*) FROM test.meters;

3 k8s 上部署 TDengine 集群

3.1 搭建k8s集群

满足条件:

  • 适用 Kubernetes v1.5 以上版本
  • Kubernetes 已经安装部署并能正常访问使用或更新必要的容器仓库或其他服务

3.2 配置service

3.2.1 taosd-service.yaml

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

3.2.2 tdengine.yaml

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: "tdengine"
  labels:
    app: "tdengine"
spec:
  serviceName: "taosd"
  replicas: 3
  updateStrategy:
    type: RollingUpdate
  selector:
    matchLabels:
      app: "tdengine"
  template:
    metadata:
      name: "tdengine"
      labels:
        app: "tdengine"
    spec:
      containers:
        - name: "tdengine"
          image: "tdengine/tdengine:3.0.0.0"
          imagePullPolicy: "IfNotPresent"
          ports:
            - name: tcp6030
              protocol: "TCP"
              containerPort: 6030
            - name: tcp6041
              protocol: "TCP"
              containerPort: 6041
          env:
            # POD_NAME for FQDN config
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            # SERVICE_NAME and NAMESPACE for fqdn resolve
            - name: SERVICE_NAME
              value: "taosd"
            - name: STS_NAME
              value: "tdengine"
            - name: STS_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            # TZ for timezone settings, we recommend to always set it.
            - name: TZ
              value: "Asia/Shanghai"
            # TAOS_ prefix will configured in taos.cfg, strip prefix and camelCase.
            - name: TAOS_SERVER_PORT
              value: "6030"
            # Must set if you want a cluster.
            - name: TAOS_FIRST_EP
              value: "$(STS_NAME)-0.$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local:$(TAOS_SERVER_PORT)"
            # TAOS_FQND should always be setted in k8s env.
            - name: TAOS_FQDN
              value: "$(POD_NAME).$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local"
          volumeMounts:
            - name: taosdata
              mountPath: /var/lib/taos
          readinessProbe:
            exec:
              command:
                - taos-check
            initialDelaySeconds: 5
            timeoutSeconds: 5000
          livenessProbe:
            exec:
              command:
                - taos-check
            initialDelaySeconds: 15
            periodSeconds: 20
  volumeClaimTemplates:
    - metadata:
        name: taosdata
      spec:
        accessModes:
          - "ReadWriteOnce"
        storageClassName: "standard"
        resources:
          requests:
            storage: "10Gi"

3.2.3 创建集群

kubectl apply -f taosd-service.yaml
kubectl apply -f tdengine.yaml
  • 使用 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-2 -- taos -s "show dnodes"

3.2.4 dashboard 进行图形化管理

  • minikube 提供 dashboard 命令支持图形化管理界面
minikube dashboard
  • 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'

3.2.5 集群扩容

kubectl scale statefulsets tdengine --replicas=4

上面命令行中参数 --replica=4 表示要将 TDengine 集群扩容到 4 个节点,执行后首先检查 POD 的状态:

kubectl get pods -l app=tdengine

3.2.6 集群缩容

  • 由于 Kubernetes Statefulset 中 Pod 的只能按创建顺序逆序移除,所以 TDengine drop dnode
    也需要按照创建顺序逆序移除,否则会导致 Pod 处于错误状态。
kubectl exec -i -t tdengine-0 -- taos -s "drop dnode 4"
kubectl exec -it tdengine-0 -- taos -s "show dnodes"
kubectl scale statefulsets tdengine --replicas=3
 kubectl get pods -l app=tdengine
  • POD删除后,需要手动删除PVC,否则下次扩容时会继续使用以前的数据导致无法正常加入集群
kubectl delete pvc taosdata-tdengine-3

3.2.7 清理 TDengine 集群

  • 完整移除 TDengine 集群,需要分别清理 statefulset、svc、configmap、pvc。
kubectl delete statefulset -l app=tdengine
kubectl delete svc -l app=tdengine
kubectl delete pvc -l app=tdengine
kubectl delete configmap taoscfg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值