コンテンツにスキップ

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

ラベルを確認します。

kubectl get nodes --show-labels  | grep 'tdengine'

5. クラスターのテイント設定

以下のコマンドを実行してクラスターにテイントを設定します。

ヒント

TDengine サービスを実行するための専用ノードを計画していない場合は、ノードにテイントを設定する必要はありません。この手順はスキップできます。

kubectl taint node  xxxx infrastructure=middleware:NoExecute

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 構文は以下のとおりです。

CREATE USER <user_name> PASS <'password'>;

ユーザーを作成し、ユーザー名とパスワードを指定します。パスワードはシングルクォーテーション(半角)で囲む必要があります。

DROP USER <user_name>;

ユーザーを削除します。root ユーザーのみ使用できます。

ALTER USER <user_name> PASS <'password'>;

ユーザーパスワードを変更します。小文字に変換されるのを防ぐため、パスワードはシングルクォーテーション(半角)で囲む必要があります。

ALTER USER <user_name> PRIVILEGE <write|read>;

ユーザー権限を write または read に変更します。シングルクォーテーションは不要です。

説明

システムには super/write/read の 3 つの権限レベルがありますが、alter コマンドで super 権限をユーザーに付与することはできません。

SHOW USERS;

すべてのユーザーを表示します。

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)

フィードバック

このページは役に立ちましたか?