TDengine 고가용성 배포¶
1. 개요¶
TDengine은 고성능 분산형 SQL 지원 시계열 데이터베이스(Time-Series Database)로, 핵심 코드에는 클러스터 기능을 포함한 모든 기능이 오픈소스(라이선스: AGPL v3.0)로 제공됩니다. TDengine은 IoT, 산업 인터넷, 커넥티드 카, IT 운영, 금융 등 다양한 분야에서 널리 사용됩니다. 핵심 시계열 데이터베이스 기능 외에도 캐시, 데이터 구독, 스트림 컴퓨팅 등 빅데이터 플랫폼에 필요한 다양한 기능을 제공하여 개발 및 운영 복잡성을 최대한 줄여줍니다.
2. 사전 조건¶
- Kubernetes 클러스터가 배포되어 있어야 합니다.
- OpenEBS 스토리지 플러그인 드라이버가 배포되어 있어야 합니다.
root@k8s-node01 ]# kubectl get pods -n kube-system|grep openebs
openebs-localpv-provisioner-6b56b5567c-k5r9l 1/1 Running 0 23h
openebs-ndm-jqxtr 1/1 Running 0 23h
openebs-ndm-operator-5df6ffc98-cplgp 1/1 Running 0 23h
openebs-ndm-qtjxm 1/1 Running 0 23h
openebs-ndm-vlcrv 1/1 Running 0 23h
3. 설치 준비¶
TDengine은 리소스를 많이 소모하므로 클러스터 리소스를 전용으로 사용해야 하므로 사전에 클러스터 스케줄링을 구성해야 합니다.
4. 클러스터 레이블 설정¶
다음 명령을 실행하여 클러스터에 레이블을 지정합니다.
# 클러스터 계획에 따라 TDengine 서비스를 배포할 k8s 노드에 레이블을 지정합니다. 3개 노드를 사용하는 것이 좋습니다.
# xxx는 실제 클러스터 노드를 나타내며, 여러 노드는 공백으로 구분합니다.
kubectl label nodes xxx tdengine=true
레이블 확인
5. 클러스터 테인트 설정¶
다음 명령을 실행하여 클러스터 테인트를 설정합니다.
팁
TDengine 서비스 실행을 위한 전용 노드를 계획하지 않은 경우 노드에 테인트를 설정할 필요가 없으며 이 단계는 생략할 수 있습니다.
6. StorageClass 구성¶
TDengine 전용 스토리지 클래스를 구성합니다.
# 다음 yaml 내용을 k8s 클러스터에 sc-td.yaml로 저장하고 실제 상황에 맞게 수정한 후 배포합니다.
apiVersion: storage.k8s.io/v1
allowVolumeExpansion: true
kind: StorageClass
metadata:
annotations:
cas.openebs.io/config: |
- name: StorageType
value: "hostpath"
- name: BasePath
value: "/data/tdengine" # 이 경로는 실제 상황에 따라 수정 가능하며, 저장 공간이 충분하고 경로가 존재하는지 확인하세요.
name: openebs-tdengine # 이름은 클러스터 내에서 고유해야 하며, 설치 전에 배포 파일 /etc/kubeasz/guance/infrastructure/yaml/taos.yaml 을 함께 수정해야 합니다.
provisioner: openebs.io/local
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
/data/tdengine디렉터리의 디스크 용량이 충분한지 확인하세요.
스토리지 공간 크기 구성
volumeClaimTemplates:
- metadata:
name: taos-tdengine-taosdata
spec:
accessModes:
- "ReadWriteOnce"
storageClassName: "openebs-tdengine"
resources:
requests:
storage: "50Gi" ## 데이터 저장 공간 할당, 실제 필요에 따라 설정
- metadata:
name: taos-tdengine-taoslog
spec:
accessModes:
- "ReadWriteOnce"
storageClassName: "openebs-tdengine"
resources:
requests:
storage: "1Gi" ## 로그 저장 공간 할당, 실제 필요에 따라 설정
7. 설치¶
# 네임스페이스 생성
kubectl create ns middleware
# TDengine 서비스 배포
kubectl apply -f /etc/kubeasz/guance/infrastructure/yaml/taos.yaml -n middleware
8. 배포 및 구성 확인¶
8.1 컨테이너 상태 확인¶
[root@ecs-788c ~]# kubectl get pods -n middleware |grep taos
taos-tdengine-0 1/1 Running 0 5m32s
taos-tdengine-arbitrator-5bfd76b7bd-8jtmd 1/1 Running 0 5m32s
8.2 서비스 확인¶
TDengine 서비스 가용성 확인
# 설치 후 다음 명령을 사용하여 로그인 확인
[root@ecs-788c ~]# kubectl exec -it -n middleware taos-tdengine-0 -- taos
Welcome to the TDengine shell from Linux, Client Version:2.6.0.18
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
********************* How to Use TAB in TAOS Shell ******************************
* Taos shell supports pressing TAB key to complete word. You can try it. *
* Press TAB key anywhere, You'll get surprise. *
* KEYBOARD SHORTCUT: *
* [ TAB ] ...... Complete the word or show help if no input *
* [ Ctrl + A ] ...... move cursor to [A]head of line *
* [ Ctrl + E ] ...... move cursor to [E]nd of line *
* [ Ctrl + W ] ...... move cursor to line of middle *
* [ Ctrl + L ] ...... clean screen *
* [ Ctrl + K ] ...... clean after cursor *
* [ Ctrl + U ] ...... clean before cursor *
* *
**********************************************************************************
taos> show mnodes;
id | end_point | role | role_time | create_time |
=============================================================================================================
1 | taos-tdengine-0.taos-tdengi... | leader | 2022-11-03 08:52:13.219 | 2022-11-03 08:52:13.219 |
Query OK, 1 row(s) in set (0.000748s)
taos> show dnodes;
id | end_point | vnodes | cores | status | role | create_time | offline reason |
======================================================================================================================================
1 | taos-tdengine-0.taos-tdengi... | 1 | 8 | ready | any | 2022-11-03 08:52:13.219 | |
0 | taos-tdengine-arbitrator | 0 | 0 | ready | arb | 2022-11-03 08:52:14.044 | - |
Query OK, 2 row(s) in set (0.000451s)
taos> show databases;
name | created_time | ntables | vgroups | replica | quorum | days | keep | cache(MB) | blocks | minrows | maxrows | wallevel | fsync | comp | cachelast | precision | update | status |
====================================================================================================================================================================================================================================================================================
log | 2022-11-03 08:52:14.221 | 12 | 1 | 1 | 1 | 10 | 30 | 1 | 3 | 100 | 4096 | 1 | 3000 | 2 | 0 | us | 0 | ready |
Query OK, 1 row(s) in set (0.000493s)
taos> show users;
name | privilege | create_time | account | tags |
=======================================================================================================================
_root | writable | 2022-11-03 08:52:13.219 | root | |
monitor | writable | 2022-11-03 08:52:13.219 | root | |
root | super | 2022-11-03 08:52:13.219 | root | |
Query OK, 3 row(s) in set (0.000691s)
8.3 클러스터 확장¶
참고
선택 사항이며, 실제 리소스 계획에 따라 확장 여부를 결정합니다.
[root@ecs-788c ~]# kubectl scale --replicas=3 -n middleware statefulset taos-tdengine
statefulset.apps/taos-tdengine scaled
확장 성공 확인
[root@ecs-788c ~]# kubectl exec -it -n middleware taos-tdengine-0 -- taos -uroot
Welcome to the TDengine shell from Linux, Client Version:2.6.0.18
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
********************* How to Use TAB in TAOS Shell ******************************
* Taos shell supports pressing TAB key to complete word. You can try it. *
* Press TAB key anywhere, You'll get surprise. *
* KEYBOARD SHORTCUT: *
* [ TAB ] ...... Complete the word or show help if no input *
* [ Ctrl + A ] ...... move cursor to [A]head of line *
* [ Ctrl + E ] ...... move cursor to [E]nd of line *
* [ Ctrl + W ] ...... move cursor to line of middle *
* [ Ctrl + L ] ...... clean screen *
* [ Ctrl + K ] ...... clean after cursor *
* [ Ctrl + U ] ...... clean before cursor *
* *
**********************************************************************************
taos> show dnodes;
id | end_point | vnodes | cores | status | role | create_time | offline reason |
======================================================================================================================================
1 | taos-tdengine-0.taos-tdengi... | 0 | 8 | ready | any | 2022-11-03 09:46:02.087 | |
2 | taos-tdengine-1.taos-tdengi... | 0 | 8 | ready | any | 2022-11-03 09:46:40.592 | |
3 | taos-tdengine-2.taos-tdengi... | 1 | 8 | ready | any | 2022-11-03 09:49:44.772 | |
0 | taos-tdengine-arbitrator | 0 | 0 | ready | arb | 2022-11-03 09:46:02.905 | - |
Query OK, 4 row(s) in set (0.000708s)
taos> show mnodes;
id | end_point | role | role_time | create_time |
=============================================================================================================
1 | taos-tdengine-0.taos-tdengi... | leader | 2022-11-03 09:46:02.087 | 2022-11-03 09:46:02.087 |
2 | taos-tdengine-1.taos-tdengi... | follower | 2022-11-03 09:47:02.166 | 2022-11-03 09:46:53.208 |
3 | taos-tdengine-2.taos-tdengi... | follower | 2022-11-03 09:50:02.214 | 2022-11-03 09:49:57.378 |
Query OK, 3 row(s) in set (0.000542s)
taos> show databases;
name | created_time | ntables | vgroups | replica | quorum | days | keep | cache(MB) | blocks | minrows | maxrows | wallevel | fsync | comp | cachelast | precision | update | status |
====================================================================================================================================================================================================================================================================================
log | 2022-11-03 09:46:03.089 | 24 | 1 | 1 | 1 | 10 | 30 | 1 | 3 | 100 | 4096 | 1 | 3000 | 2 | 0 | us | 0 | ready |
Query OK, 1 row(s) in set (0.000449s)
[root@ecs-788c ~]# kubectl get pods -n middleware |grep taos
taos-tdengine-0 1/1 Running 0 41m
taos-tdengine-1 1/1 Running 0 41m
taos-tdengine-2 1/1 Running 0 40m
taos-tdengine-arbitrator-5bfd76b7bd-925wf 1/1 Running 0 41m
8.4 사용자 관리¶
시스템 관리자는 CLI 인터페이스에서 사용자를 추가, 삭제하고 비밀번호를 변경할 수 있습니다. CLI에서의 SQL 구문은 다음과 같습니다.
사용자를 생성하고 사용자 이름과 비밀번호를 지정합니다. 비밀번호는 작은따옴표로 묶어야 하며, 작은따옴표는 영문 반각 문자입니다.
사용자를 삭제합니다. root 사용자만 사용할 수 있습니다.
사용자 비밀번호를 변경합니다. 소문자로 변환되는 것을 방지하기 위해 비밀번호는 작은따옴표로 묶어야 하며, 작은따옴표는 영문 반각 문자입니다.
사용자 권한을 write 또는 read로 변경합니다. 작은따옴표를 추가할 필요가 없습니다.
참고
시스템에는 super/write/read의 세 가지 권한 수준이 있지만, 현재 alter 명령을 통해 사용자에게 super 권한을 부여할 수는 없습니다.
모든 사용자를 표시합니다.
SQL 구문에서 < >는 사용자가 입력해야 하는 부분을 나타내지만, < > 자체는 입력하지 마십시오.
8.4.1 계정 관리¶
# 새 계정 생성
taos> CREATE USER zhuyun PASS 'dfjdljf12341@3$';
Query OK, 0 of 0 row(s) in database (0.002040s)
# 계정 권한 변경
taos> ALTER USER zhuyun PRIVILEGE write;
# 계정 비밀번호 변경
taos> ALTER USER zhuyun PASS 'hjdkaGHJH123#';
Query OK, 0 of 0 row(s) in database (0.001996s)
8.4.2 사용자 확인¶
TDengine 서비스 가용성 확인
[root@ecs-788c ~]# kubectl exec -it -n middleware taos-tdengine-0 -- taos -u zhuyun -p
Welcome to the TDengine shell from Linux, Client Version:2.6.0.18
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
Enter password:
********************* How to Use TAB in TAOS Shell ******************************
* Taos shell supports pressing TAB key to complete word. You can try it. *
* Press TAB key anywhere, You'll get surprise. *
* KEYBOARD SHORTCUT: *
* [ TAB ] ...... Complete the word or show help if no input *
* [ Ctrl + A ] ...... move cursor to [A]head of line *
* [ Ctrl + E ] ...... move cursor to [E]nd of line *
* [ Ctrl + W ] ...... move cursor to line of middle *
* [ Ctrl + L ] ...... clean screen *
* [ Ctrl + K ] ...... clean after cursor *
* [ Ctrl + U ] ...... clean before cursor *
* *
**********************************************************************************
taos> show users;
name | privilege | create_time | account | tags |
=======================================================================================================================
_root | writable | 2022-11-03 08:52:13.219 | root | |
monitor | writable | 2022-11-03 08:52:13.219 | root | |
zhuyun | writable | 2022-11-03 09:06:41.294 | root | |
root | super | 2022-11-03 08:52:13.219 | root | |
Query OK, 4 row(s) in set (0.000730s)