使用 Helm Chart 部署分布式 GreptimeDB

2023-12-20

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

安装 Charts


安装 `etcd`

helm install etcd oci://registry-1.docker.io/bitnamicharts/etcd \
  --set replicaCount=1 \
  --set auth.rbac.create=false \
  --set auth.rbac.token.enabled=false \
  -n default

2.2 安装 `greptimedb-operator`

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

2.3 安装 `greptimedb-cluster`

helm install mycluster greptime/greptimedb-cluster -n default

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

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

使用 `kubectl` 命令行工具查看安装的 Pod:

kubectl get po -n default
NAME                                   READY   STATUS    RESTARTS   AGE
etcd-0                                 1/1     Running   0          2m18s
etcd-1                                 1/1     Running   0          2m18s
etcd-2                                 1/1     Running   0          2m18s
greptimedb-operator-546b5f9656-tz9gn   1/1     Running   0          2m1s
mycluster-datanode-0                   1/1     Running   0          32s
mycluster-datanode-1                   1/1     Running   0          27s
mycluster-datanode-2                   1/1     Running   0          21s
mycluster-frontend-76cbf55687-4drvx    1/1     Running   0          15s
mycluster-meta-6b7974464b-bbt4h        1/1     Running   0          33s

2.4 卸载 `greptimedb-cluster`

helm uninstall mycluster -n default

将数据保存到 AWS S3

helm install mycluster greptime/greptimedb-cluster \
  --set storage.s3.bucket="your-bucket" \
  --set storage.s3.region="region-of-bucket" \
  --set storage.s3.root="/greptimedb-data" \
  --set storage.credentials.secretName="s3-credentials" \
  --set storage.credentials.accessKeyId="your-access-key-id" \
  --set storage.credentials.secretAccessKey="your-secret-access-key"

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

  • bucket:S3 Bucket 名字
  • region:S3 Bucket Region
  • root:数据存储目录,这里设定为 `/greptimedb-data`
  • secretName:S3 Credentials Secret Name
  • accessKeyId:AWS Access Key ID
  • secretAccessKey:AWS Secret Access Key

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

kubectl port-forward svc/mycluster-frontend 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:

kubectl port-forward svc/mycluster-frontend 4000:4000 > a.out &

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

卸载 `greptimedb-cluster`

helm uninstall mycluster -n default

将数据保存到阿里云 OSS

helm install mycluster greptime/greptimedb-cluster -n default \
  --set storage.oss.bucket="bucket-name" \
  --set storage.oss.region="oss-region" \
  --set storage.oss.root="/greptimedb-data" \
  --set storage.oss.endpoint="oss-endpoint" \
  --set storage.credentials.secretName="oss-credentials" \
  --set storage.credentials.accessKeyId="your-access-key-id" \
  --set storage.credentials.secretAccessKey="your-secret-access-key"

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

  • bucket:OSS Bucket 名字
  • region:OSS Bucket Region
  • root:数据存储目录,这里设定为 `/greptimedb-data`
  • secretName:OSS Credentials Secret Name
  • endpoint: OSS Endpoint
  • accessKeyId:AliCloud Access Key ID
  • secretAccessKey:AliCloud Secret Key

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

kubectl port-forward svc/mycluster-frontend 4002:4002 > a.out &

通过 MySQL 协议连接 GreptimeDB:

```shell
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.01 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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Helm Chart 部署分布式 GreptimeDB 的相关文章

  • 【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付

    在前面我们业务功能篇98 99中 我们介绍了电商项目中的订单模块服务 那么最后就是需要进行支付动作 那么我们这里就通过订阅第三方平台支付宝的支付调用接口功能 来进一步完成订单提交后的支付动作 支付宝的接口使用可以登录官网开发指南详情去了解
  • RabbitMQ教程-重要参数&&API解释

    RabbitMQ的工作原理 下图是RabbitMQ的基本结构 生产者发送消息流程 1 生产者和Broker建立TCP连接 2 生产者和Broker建立通道 3 生产者通过通道消息发送给Broker 由Exchange将消息进行转发 4 Ex
  • Kraken:一款基于爆破技术的多平台分布式密码安全测试工具

    关于Kraken Kraken是一个功能强大的多平台在线分布式密码安全测试工具 该平台基于暴力破解技术来实现对密码安全性的测试 并允许广大研究人员在多台设备上以并行处理的方式遍历字典 基于crunch字典生成器 除此之外 该工具不仅可以通过
  • Kafka——Mac搭建kafka环境

    1 下载Kafka安装包 下载地址 将压缩包移动到 usr local mv kafka 2 12 3 1 0 tgz usr local 解压 tar zxvf kafka 2 12 3 1 0 tgz 2 启动 启动zookeeper
  • 安装并配置HBase集群(5个节点)

    安装并配置HBase 集群规划 HBase2 2 5安装 将安装包拷贝到5台机器上并解压缩 配置环境变量 配置HBase 时间同步 修改 usr local src hbase 2 2 5 conf hbase env sh 文件 修改 h
  • Zookeeper(三)—分布式锁实现

    一 独占锁原理 独占锁是利用zk同一目录下不能创建多个相同名称的节点这个特性 来实现分布式锁的功能 竞争锁的分布式系统 都在zk根目录下创建一个名为lock的节点 创建节点成功的系统 说明抢到了这把锁 没有创建成功的系统 说明这个节点已经被
  • Hadoop 完全分布式运行实战

    Hadoop运行模式包括 本地模式 伪分布式模式以及完全分布式模式 Hadoop官方网站 Apache Hadoop 流程步骤 准备3台客户机 关闭防火墙 静态ip 主机名称 安装JDK 配置环境变量 安装Hadoop 配置环境变量 配置集
  • Springboot结合Redis实现分布式定时任务

    一 背景 之前分享过分布式定时任务的技术选型方案 分布式定时任务技术选型方案 个人青睐xxl job 分享了搭建接入流程 xxl job搭建方案 本次项目需求较为简单 同时时间紧张 下面介绍利用Redis锁实现分布式定时任务的方案 二 Sc
  • 基于一致性理论的孤岛微电网分布式控制策略研究(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 仿真搭建 2 2 优化控制
  • 基于一致性理论的孤岛微电网分布式控制策略研究(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 仿真搭建 2 2 优化控制
  • 在异构系统中学习应用的流迭代分布式编码计算研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 基于一致性理论的孤岛微电网分布式控制策略研究(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 仿真搭建 2 2 优化控制
  • 在异构系统中学习应用的流迭代分布式编码计算研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 什么是自动化测试,看完你就懂了!

    随着互联网技术的飞速发展 软件本身的规模和复杂度也是逐步增加 为了保证软件项目能够保质保量交付到客户手中 软件测试环节就显得非常重要了 它可以看作是软件项目交付给客户最后一道安全保证 今天给大家聊聊软件测试当中自动化测试相关的知识 希望对大
  • AI分布式训练:DDP (数据并行)技术详解与实战

    编者按 如今传统的单机单卡模式已经无法满足超大模型进行训练的要求 如何更好地 更轻松地利用多个 GPU 资源进行模型训练成为了人工智能领域的热门话题 我们今天为大家带来的这篇文章详细介绍了一种名为 DDP Distributed Data
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • 终于找到了最新版的Zookeeper入门级教程,建议收藏!

    小熊学Java https javaxiaobear cn 1 分布式一致性 1 CAP 理论 CAP 理论指出对于一个分布式计算系统来说 不可能同时满足以下三点 一致性 在分布式环境中 一致性是指数据在多个副本之间是否能够保持一致的特性
  • 使用 Helm Chart 部署分布式 GreptimeDB

    GreptimeDB 作为云时代基础设施的时序数据库 从第一天开始就积极拥抱云原生技术 将数据库部署在 Kubernetes 上可以提供可伸缩性 自愈能力和简化的部署和管理 从而为应用程序提供了强大的弹性和可靠性 Helm 是一个用于管理
  • 网站被攻击了怎么恢复?如何在被攻击后第一时间接入高防恢复正常访问?

    网站受到攻击的原因是多种多样的 包括技术漏洞 人为疏忽 社会工程学等各种因素 保护网站的安全需要综合运用技术手段 当网站遭到攻击时 以下几个步骤可以帮助恢复网站的正常运行 1 分析攻击 首先要确认网站被攻击的类型和程度 以确定所需的恢复步骤
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门

随机推荐