​分分钟教你在阿里云 K8s 上部署流数据库 RisingWave

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 本文主要介绍如何在阿里云【容器服务 Kubernetes 版 ACK】上部署 RisingWave 集群。RisingWave当前提供单机试玩模式,以及基于 K8s 的分布式部署模式,生产中我们只推荐后者。K8s 虽然上手门槛高,但只需按照本篇文章的步骤依次操作,你依然能轻松驾驭一个生产集群。

本文主要介绍如何在阿里云【容器服务 Kubernetes 版 ACK】上部署 RisingWave 集群。RisingWave当前提供单机试玩模式,以及基于 K8s 的分布式部署模式,生产中我们只推荐后者。K8s 虽然上手门槛高,但只需按照本篇文章的步骤依次操作,你依然能轻松驾驭一个生产集群。


安装组件

这里首先介绍一个成功部署的 RisingWave 集群在 K8s 上会运行哪些组件:

> kubectl get pods -l app.kubernetes.io/instance=my-risingwave
NAME                                       READY   STATUS    RESTARTS       AGE
my-risingwave-compactor-5c4469c979-njqmd   1/1     Running   1 (107s ago)   2m49s
my-risingwave-compute-0                    2/2     Running   1 (106s ago)   2m49s
my-risingwave-etcd-0                       1/1     Running   0              2m49s
my-risingwave-frontend-7d85dd748b-9hft6    1/1     Running   1 (107s ago)   2m49s
my-risingwave-meta-0                       1/1     Running   0              2m49s
my-risingwave-minio-649b57ddcc-xrvft       1/1     Running   0              2m49s
  • Compactor:负责数据的清理及压缩。在生产中 Compactor 的运行很大程度影响了流计算的性能。
  • Compute:负责流计算以及状态维护等。
  • Etcd:负责元数据存储。
  • Frontend:负责响应用户的 SQL 请求。
  • Meta:用于集群的元信息管理,包括节点健康状态,数据库对象信息,流计算快照点(Checkpoint)的维护等。
  • MinIO(可选):兼容 S3 的对象存储。如用户部署在诸如阿里云,腾讯云等云厂商上,则可直接使用云厂商提供的对象存储服务,无需安装 MinIO。


阿里云 ACK 服务配置

用户在购买及配置阿里云 ACK 服务时,基本可以完全采用默认项。

但需注意,为了稳定流畅运行,RisingWave 对生产中的机器规格有一定要求。具体可参考官方文档 Hardware requirements。这里建议用户购买高于文档中推荐配置的阿里云机型。

除去对 CPU 和内存的要求外,RisingWave 也建议用户选择相对较快的本地磁盘存储以搭配 etcd,避免生产中由于 etcd 的服务异常导致整个集群故障。这里具体的操作如下:

  1. 查询当前K8s中已存在的存储类。阿里云提供数个存储类可供选择(参考),具体如下:
> kubectl get storageclass
NAME                             PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
alicloud-disk-available          diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-efficiency         diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-essd               diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-ssd                diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-topology           diskplugin.csi.alibabacloud.com   Delete          WaitForFirstConsumer   true                   5h37m
alicloud-disk-topology-alltype   diskplugin.csi.alibabacloud.com   Delete          WaitForFirstConsumer   true                   5h37m
  1. 我们直接将 alicloud-disk-essd 设置为默认存储类:
> kubectl annotate storageclass alicloud-disk-essd storageclass.kubernetes.io/is-default-class=true
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"alicloud-disk-ssd"},"parameters":{"type":"cloud_ssd"},"provisioner":"diskplugin.csi.alibabacloud.com","reclaimPolicy":"Delete"}
    storageclass.kubernetes.io/is-default-class: "true"
  1. 请在 metadata → annotations 的子项中加上 storageclass.kubernetes.io/is-default-class: "true",这将会设置该存储类为默认。这意味着它会自动购买并挂载阿里云ESSD云盘


集群安装

接着按照 RisingWave Helm 部署文档 的步骤来进行安装部署即可。需注意的是,该流程要求使用 Helm 3.7+ 版本,而**阿里云 CloudShell** 所预装的 Helm 版本仅为 3.5,因此我们不建议通过CloudShell来执行操作。

  1. 首先安装 RisingWave 的 Helm Chart
helm repo add risingwavelabs <https://risingwavelabs.github.io/helm-charts/>
  1. 确保你正在使用最新的 Helm Chart
helm repo update
  1. 注意!!:本地编辑 values.yml 文件并配置 etcd 的存储空间为 20GB。这是因为阿里云不允许申请小于 20GB 的块存储。
etcd:
  persistence:
    size: 20Gi
  1. 本地编辑 values.yml 并配置后端存储为**阿里云 OSS 对象存储服务**。请按注释正确填入:
tags:
  minio: false
stateStore:
  minio:
    enabled: false
  oss:
    enabled: true
    region: # OSS 地域,如 cn-beijing
    bucket: # OSS bucket name
    root: risingwave
    useInternalEndpoint: false
    authentication:
      useServiceAccount: false
      # 具体请参考 <https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair>
      accessKey: # 阿里云 Access Key
      secretKey: # 阿里云 Secret Key
  1. 通过 Helm 安装 RisingWave 集群:
helm install --set wait=true -f values.yml my-risingwave risingwavelabs/risingwave
  1. 你可以将 my-risingwave 替代为任何其他合法名字。
  2. 确认 RisingWave 是否已被成功安装。往往完成安装需花费 3-5 分钟。
> kubectl get pods -l app.kubernetes.io/instance=my-risingwave
NAME                                      READY   STATUS    RESTARTS        AGE
my-risingwave-compactor-8dd799db6-hdjjz   1/1     Running   1 (8m33s ago)   11m
my-risingwave-compute-0                   2/2     Running   0               11m
my-risingwave-etcd-0                      1/1     Running   0               11m
my-risingwave-frontend-7bd7b8c856-czdgd   1/1     Running   1 (8m33s ago)   11m
my-risingwave-meta-0                      1/1     Running   0               11m


访问集群

K8s 提供多种网络访问模式,分别为:

  • ClusterIP
  • NodePort
  • LoadBalancer

RisingWave 默认采用 ClusterIP,即仅允许同一K8s集群内的服务之间相互联通

为便于测试和开发,用户可以借 API Server 路由来访问  RisingWave:

kubectl port-forward svc/my-risingwave 4567:svc

随后用户即可通过psql或其他Postgres客户端来访问 RisingWave:

psql -h localhost -p 4567 -d dev -U root


卸载集群

如要完整下线该 RisingWave 集群,您需要执行以下操作:

  1. 下线所有的 Pod
helm uninstall my-risingwave
  1. 删除所有的 存储卷(PersistenVolume)
kubectl delete pvc -l app.kubernetes.io/instance=my-risingwave
  1. 参考 OSS 文档 删除 OSS 中的数据
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
98 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
27天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
13天前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
32 0
|
2月前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
2月前
|
安全 NoSQL 关系型数据库
阿里云数据库:助力企业数字化转型的强大引擎
阿里云数据库:助力企业数字化转型的强大引擎
|
2月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
2月前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
|
Kubernetes 开发者 微服务
简化Kubernetes应用部署工具-Helm之Hook
本文讲的是简化Kubernetes应用部署工具-Helm之Hook【编者的话】微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。
2561 0
|
14天前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
49 1