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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 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 中的数据
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
Kubernetes 网络协议 应用服务中间件
K8S二进制部署实践-1.15.5
K8S二进制部署实践-1.15.5
35 0
|
1月前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
7天前
|
关系型数据库 Apache 流计算
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
本文介绍了如何将数据从 OceanBase 迁移到阿里云数据库 SelectDB 内核版 Apache Doris。提供 3 种数据同步方法 1. 使用 DataX,下载 DataX 并编写配置文件,通过 OceanBaseReader 和 DorisWriter 进行数据迁移。 2. 利用 Apache Doris 的 Catalog功 能,将 OceanBase 表映射到 Doris 并插入数据。 3. 通过Flink CDC,设置 OceanBase 环境,配置 Flink 连接器,实现实时数据同步。
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
|
8天前
|
敏捷开发 存储 缓存
云效产品使用常见问题之通过vpc内网部署到ack失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
11天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
11天前
|
弹性计算 Java Linux
阿里云服务器搭建部署宝塔详细流程
该内容是一个阿里云服务器和域名的配置指南。首先,需注册阿里云账号并进行企业实名认证。接着,选购服务器如2核2G1兆的Linux系统,并购买域名。完成域名备案后,进行域名解析和ICP备案。然后,通过远程连接登录服务器,重置密码,安装宝塔面板。在安全组中开启宝塔面板随机生成的端口。最后,登录宝塔面板安装LNMP环境,配置数据库如MySQL和Redis,部署JDK、Tomcat,上传前端和后端项目以实现上线。
|
12天前
|
弹性计算 JavaScript Java
阿里云服务器搭建部署宝塔详细流程
以下是内容的摘要: 本文主要介绍了在阿里云上创建和配置服务器环境的步骤,包括注册阿里云账号、实名认证、购买和设置服务器、域名的获取与备案、以及使用宝塔面板安装和配置环境。首先,用户需要注册阿里云账号并进行实名认证,选择合适的服务器配置。接着,购买服务器后,要准备并备案域名,以便通过友好的网址访问网站。在服务器上安装宝塔面板,可以方便地管理和配置LAMP/LNMP/Tomcat/Node.js等应用环境。完成这些步骤后,用户还需要在宝塔面板中安装MySQL、Redis等数据库,部署Java或Vue项目,并配置相关端口。最后,将前端项目打包上传至服务器,并设置站点,即可实现网站的上线。
|
12天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
14天前
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署项目流程
本文主要讲解阿里云服务器的部署,如何选择配置等
|
17天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat

推荐镜像

更多