用户指南|使用 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

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

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

helm install greptimedb-standalone greptime/greptimedb-standalone -n default --version <chart-version>

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

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

将数据保存到 AWS S3

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

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:

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

可以使用 MySQL 协议连接 GreptimeDB:

mysql -h 127.0.0.1 -P 4002

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

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` 中插入数据:

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 的控制台查看写入的数据:

还可以通过 Dashboard 访问 GreptimeDB:

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

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

将数据保存到阿里云 OSS 

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`:

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` 中插入数据:

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);

查看写入的数据:

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 的控制台查看写入的数据:

总结

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

关于 Greptime 的小知识:

Greptime 格睿科技于 2022 年创立,目前正在完善和打造时序数据库 GreptimeDB,格睿云 GreptimeCloud 和可观测工具 GreptimeAI 这三款产品。

GreptimeDB 是一款用 Rust 语言编写的时序数据库,具有分布式、开源、云原生和兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时降低长期存储成本;GreptimeCloud 可以为用户提供全托管的 DBaaS 服务,能够与可观测性、物联网等领域高度结合;GreptimeAI 为 LLM 量身打造,提供成本、性能和生成过程的全链路监控。

GreptimeCloud 和 GreptimeAI 已正式公测,欢迎关注公众号或官网了解最新动态!

官网:https://greptime.cn/

GitHub: https://github.com/GreptimeTeam/greptimedb

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

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

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

以下是使用 Helm 部署最新版 Hyperf 的简要步骤: 1. 首先,确保已经安装了 HelmKubernetes。如果还没有安装,可以参考官方文档进行安装。 2. 添加 Hyperf Helm 仓库。运行以下命令: ``` helm repo add hyperf https://hyperf.github.io/helm-charts/ ``` 3. 更新 Helm 仓库。运行以下命令: ``` helm repo update ``` 4. 创建一个 Helm chart。运行以下命令: ``` helm create my-hyperf-app ``` 这将创建一个名为 `my-hyperf-app` 的 Helm chart。 5. 修改 `my-hyperf-app/values.yaml` 文件,定义 Hyperf 应用程序的相关参数。可以参考上面的示例进行修改。 6. 安装 Helm chart。运行以下命令: ``` helm install my-hyperf-app hyperf/hyperf ``` 这将使用 `my-hyperf-app` 目录下的 Helm chart 安装 Hyperf 应用程序。 7. 等待安装完成。可以使用以下命令检查应用程序的状态: ``` kubectl get pods ``` 如果一切正常,应该会看到一个名为 `my-hyperf-app` 的 Pod 处于运行状态。 8. 访问应用程序。可以使用以下命令获取应用程序的服务地址: ``` kubectl get services ``` 然后在浏览器中访问该服务地址即可。 需要注意的是,这只是一个基本的部署流程,实际应用程序的部署可能会更加复杂,需要根据实际情况进行调整。同时,在使用 Helm 部署应用程序时,也需要了解 Helm 的一些基本概念和操作方法,例如 Helm chart、values 文件、release 等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值