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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 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 中的数据
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
存储 NoSQL Redis
阿里云高性能数据库Tair(兼容 Redis)收费价格,稳定可靠成本低
阿里云高性能云数据库Tair兼容Redis,提供Redis开源版和Tair企业版,支持多种存储介质与灵活扩展,适用于高并发场景。Tair具备亚毫秒级稳定延迟,保障业务连续性。价格方面,Redis开源版年费从72元起,Tair企业版年费从1224元起,具体费用根据配置不同有所变化。
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
330 2
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
容器 Kubernetes Perl
阿里云Kubernetes平台构建和管理实践(上)
阿里云智能容器平台解决方案架构师徐征讲解阿里云Kubernetes平台构建和管理实践,徐征主要从事帮助企业在面向云原生的应用转型的过程中提供解决方案和相应的工作。
11109 0
|
容器 Perl 监控
阿里云Kubernetes平台构建和管理实践(下)
阿里云智能容器平台解决方案架构师徐征讲解阿里云Kubernetes平台构建和管理实践,徐征主要从事帮助企业在面向云原生的应用转型的过程中提供解决方案和相应的工作。
3462 0
|
1月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
210 1

推荐镜像

更多