TDengine 高可用性デプロイ¶
1. はじめに¶
TDengine は、高性能で分散型、SQL をサポートする時系列データベースです。そのコアコードは、クラスター機能を含めてすべてオープンソース(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 の 3 つの権限レベルがありますが、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)