Skip to content

用户指南|使用 Helm Chart 部署单机版 GreptimeDB

本篇文章将讲解如何使用 Helm Chart 部署单机版 GreptimeDB,并将数据保存在AWS S3 以及阿里云 OSS 等对象存储上。
用户指南|使用 Helm Chart 部署单机版 GreptimeDB
本页内容

GreptimeDB 作为云时代基础设施的时序数据库,从第一天开始就积极拥抱云原生技术,将数据库部署在 Kubernetes 上可以提供可伸缩性、自愈能力和简化的部署和管理,从而为应用程序提供了强大的弹性和可靠性。

Helm 是一个用于管理 Kubernetes 应用程序的包管理器,通过使用 Helm Chart,可以轻松地将应用程序打包、配置和部署到 Kubernetes 集群中。

本篇文章将讲解如何使用 Helm Chart 部署单机版 GreptimeDB,并将数据保存在AWS S3 以及阿里云 OSS 等对象存储上。

配置 Helm Chart 环境 ​

首先需要安装 Helm 工具,可以根据 安装文档 中的说明进行安装。

在部署应用程序之前,需要将 greptime 仓库 添加到 Helm 中,仓库包含了一系列可用的 Helm Charts。使用以下命令将 greptime 仓库添加到 Helm:

helm repo add greptime https://greptimeteam.github.io/helm-charts/
helm repo update

使用以下命令浏览可用的 Helm Charts:

helm search repo greptime --devel -l

安装 Greptime Chart ​

sql
helm install greptimedb-standalone greptime/greptimedb-standalone -n default

要安装特定版本的 Chart,使用以下命令:

helm install greptimedb-standalone greptime/greptimedb-standalone -n default --version

使用 kubectl 命令行工具查看 GreptimeDB:

sql
kubectl get po
NAME                      READY   STATUS    RESTARTS   AGE
greptimedb-standalone-0   1/1     Running   0          15s

将数据保存到 AWS S3 ​

在之前的教程中,我们分享过如何运行 GreptimeDB 二进制,并将数据保存至 AWS S3 或阿里云 OSS同样,我们也可以通过使用容器化方式部署 GreptimeDB 并将数据存储到云上,以获得更大弹性和可靠性。详细步骤如下:

sql
helm upgrade greptimedb-standalone greptime/greptimedb-standalone -n default \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__TYPE="S3" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__BUCKET="bucket-name" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__ROOT="/test-data" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__REGION="s3-region" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__ACCESS_KEY_ID="your-access-key-id" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__SECRET_ACCESS_KEY="your-secret-access-key"

这里有一些参数,可以替换成你的 S3 信息:

  • GREPTIMEDB_STANDALONE__STORAGE__TYPE:指定存储类型为 S3

  • GREPTIMEDB_STANDALONE__STORAGE__BUCKET:S3 Bucket 名字

  • GREPTIMEDB_STANDALONE__STORAGE__ROOT:数据存储目录,这里设定为 /test-data

  • GREPTIMEDB_STANDALONE__STORAGE__REGION:S3 的 Region

  • GREPTIMEDB_STANDALONE__STORAGE__ACCESS_KEY_ID:访问S3的Access Key

  • GREPTIMEDB_STANDALONE__STORAGE__SECRET_ACCESS_KEY:访问 S3 的 Secret Key

当 Pod 启动之后,执行测试将数据写入 S3:

sql
kubectl port-forward svc/greptimedb-standalone 4002:4002 > a.out &

可以使用 MySQL 协议连接 GreptimeDB:

sql
mysql -h 127.0.0.1 -P 4002

执行建表语句,这里的表名为 s3_test_table:

sql
CREATE TABLE s3_test_table (
  host STRING,
  idc STRING,
  cpu_util DOUBLE,
  memory_util DOUBLE,
  disk_util DOUBLE,
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY(host, idc),
  TIME INDEX(ts)
);

往 s3_test_table 中插入数据:

sql
INSERT INTO s3_test_table
VALUES
    ("host1", "idc_a", 11.8, 10.3, 10.3, 1667446797450),
    ("host1", "idc_a", 80.1, 70.3, 90.0, 1667446797550),
    ("host1", "idc_b", 50.0, 66.7, 40.6, 1667446797650),
    ("host1", "idc_b", 51.0, 66.5, 39.6, 1667446797750),
    ("host1", "idc_b", 52.0, 66.9, 70.6, 1667446797850),
    ("host1", "idc_b", 53.0, 63.0, 50.6, 1667446797950),
    ("host1", "idc_b", 78.0, 66.7, 20.6, 1667446798050),
    ("host1", "idc_b", 68.0, 63.9, 50.6, 1667446798150),
    ("host1", "idc_b", 90.0, 39.9, 60.6, 1667446798250);

登陆 AWS S3 的控制台查看写入的数据:

(图 1:AWS S3 控制台)
(图 1:AWS S3 控制台)

还可以通过 Dashboard[5] 访问 GreptimeDB:

sql
Ikubectl port-forward svc/greptimedb-standalone 4000:4000 > a.out &

在浏览器访问 http://localhost:4000/dashboard/query 浏览 Dashboard,执行 select *from s3_test_table; 查看写入的数据:

(图 2:查看写入数据)
(图 2:查看写入数据)

将数据保存到阿里云 OSS ​

sql
helm upgrade greptimedb-standalone greptime/greptimedb-standalone -n default \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__TYPE="Oss" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__BUCKET="bucket-name" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__ROOT="/test-data" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__REGION="oss-region" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__ACCESS_KEY_ID="your-access-key-id" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__ACCESS_KEY_SECRET="your-access-key-secret" \
  --set env.GREPTIMEDB_STANDALONE__STORAGE__ENDPOINT="oss-endpoint"

这里有一些参数,可以替换成你的 OSS 信息:

  • GREPTIMEDB_STANDALONE__STORAGE__TYPE:指定存储类型为 OSS

  • GREPTIMEDB_STANDALONE__STORAGE__BUCKET:OSS Bucket 名字

  • GREPTIMEDB_STANDALONE__STORAGE__ROOT:数据存储目录,这里设定为 /test-data

  • GREPTIMEDB_STANDALONE__STORAGE__REGION:OSS 的 Region

  • GREPTIMEDB_STANDALONE__STORAGE__ACCESS_KEY_ID:访问OSS的Access Key

  • GREPTIMEDB_STANDALONE__STORAGE__ACCESS_KEY_SECRET:访问 OSS 的 Secret Key

  • GREPTIMEDB_STANDALONE__STORAGE__ENDPOINT:访问 OSS 的 Endpoint

当 Pod 启动之后,执行测试将数据写入 OSS:

kubectl port-forward svc/greptimedb-standalone 4002:4002 > a.out &

通过 MySQL 协议连接 GreptimeDB:

mysql -h 127.0.0.1 -P 4002

执行建表语句,这里的表名为 oss_test_table:

sql
CREATE TABLE oss_test_table (
  host STRING,
  idc STRING,
  cpu_util DOUBLE,
  memory_util DOUBLE,
  disk_util DOUBLE,
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY(host, idc),
  TIME INDEX(ts)
);

往 oss_test_table 中插入数据:

sql
INSERT INTO oss_test_table
VALUES
    ("host1", "idc_a", 11.8, 10.3, 10.3, 1667446797450),
    ("host1", "idc_a", 80.1, 70.3, 90.0, 1667446797550),
    ("host1", "idc_b", 50.0, 66.7, 40.6, 1667446797650),
    ("host1", "idc_b", 51.0, 66.5, 39.6, 1667446797750),
    ("host1", "idc_b", 52.0, 66.9, 70.6, 1667446797850),
    ("host1", "idc_b", 53.0, 63.0, 50.6, 1667446797950),
    ("host1", "idc_b", 78.0, 66.7, 20.6, 1667446798050),
    ("host1", "idc_b", 68.0, 63.9, 50.6, 1667446798150),
    ("host1", "idc_b", 90.0, 39.9, 60.6, 1667446798250);

查看写入的数据:

sql
mysql> select *from oss_test_table;
+-------+-------+----------+-------------+-----------+-------------------------+
| host  | idc   | cpu_util | memory_util | disk_util | ts                      |
+-------+-------+----------+-------------+-----------+-------------------------+
| host1 | idc_a |     11.8 |        10.3 |      10.3 | 2022-11-03 03:39:57.450 |
| host1 | idc_a |     80.1 |        70.3 |        90 | 2022-11-03 03:39:57.550 |
| host1 | idc_b |       50 |        66.7 |      40.6 | 2022-11-03 03:39:57.650 |
| host1 | idc_b |       51 |        66.5 |      39.6 | 2022-11-03 03:39:57.750 |
| host1 | idc_b |       52 |        66.9 |      70.6 | 2022-11-03 03:39:57.850 |
| host1 | idc_b |       53 |          63 |      50.6 | 2022-11-03 03:39:57.950 |
| host1 | idc_b |       78 |        66.7 |      20.6 | 2022-11-03 03:39:58.050 |
| host1 | idc_b |       68 |        63.9 |      50.6 | 2022-11-03 03:39:58.150 |
| host1 | idc_b |       90 |        39.9 |      60.6 | 2022-11-03 03:39:58.250 |
+-------+-------+----------+-------------+-----------+-------------------------+
9 rows in set (0.04 sec)

登陆阿里云 OSS 的控制台查看写入的数据:

(图 3:阿里云 OSS 控制台)
(图 3:阿里云 OSS 控制台)

总结 ​

本文介绍了通过使用 Helm Chart 部署单机版 GreptimeDB,并配置数据存储在 AWS S3 或阿里云 OSS 的方法,在云原生时代下,此方法不仅提高了数据管理的弹性和可靠性,还简化了部署和管理过程。在下一篇文章中,我们将继续介绍如何用 Helm Chart 部署分布式 GreptimeDB,敬请期待。

关于 Greptime ​

Greptime 格睿科技专注于为可观测、物联网及车联网等领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前基于云原生的时序数据库 GreptimeDB 已经衍生出多款适合不同用户的解决方案,更多信息或 demo 展示请联系下方小助手(微信号:greptime)。

欢迎对开源感兴趣的朋友们参与贡献和讨论,从带有 good first issue 标签的 issue 开始你的开源之旅吧~期待在开源社群里遇见你!添加小助手微信即可加入“技术交流群”与志同道合的朋友们面对面交流哦~

Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb

官网:https://greptime.cn/

文档:https://docs.greptime.cn/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/

Stay in the loop

加入我们的社区