教程|如何用 Docker/K8s 快速部署 StarRocks 集群

云原生是一种现代化的软件开发和部署方法论。相较于传统的应用开发和部署方式,云原生带来了显著的优势,包括弹性伸缩、应用程序可移植性、高可靠性和自动化部署与管理等方面,从而极大地提升了成本效益和开发效率。

StarRocks 从 3.0 版本开始支持了云原生存储分离架构,有越来越多用户在云上环境部署 StarRocks。Docker 容器化部署是当前最常见的部署方式之一,Docker 利用容器技术打包了 StarRocks 运行环境,简化了部署和运行过程,可以帮助用户实现快速功能验证;Kubernetes 则提供高级的容器编排和管理功能,可用来高效地扩缩容 StarRocks 集群。

接下来,就让我们带大家用一个更简捷的部署方式,通过 Docker/K8s 快速开启 StarRocks 旅程!

准备工作

在正式开始前我们建议你先熟悉 StarRocks 的架构。 StarRocks 的基本架构相当简洁,包括 FE(前端)节点和 BE(后端)节点:FE 负责元数据管理、客户端连接管理、查询计划和查询调度;BE 负责数据存储和 SQL 执行。

教程|如何用 Docker/K8s 快速部署 StarRocks 集群_第1张图片

如果你想了解更多,欢迎利用以下的学习资源:
文档:https://docs.mirrorship.cn/zh-cn/latest/introduction/Architec...
️ 视频:https://www.bilibili.com/video/BV1Hs4y1975F/?spm_id_from=333....

接下来,我们要正式启程了!
 

用 Docker & K8s 快速部署 StarRocks 集群

1.Docker ——快速功能测试

 

小贴士: 你可以依照以下步骤部署一个简单的 StarRocks 集群,其中包含一个 FE 节点和一个 BE 节点。
使用 Docker 部署的方式目前只建议用在快速功能测试上,适用于小数据集验证 DEMO 的情况。不建议你将其用于大规模测试或生产环境。 此快速入门部署了一个 BE 节点。在 CREATE TABLE 子句中,你需要添加属性("replication_num" = "1"),以便只有一个数据副本持久保存在 BE 节点中。

以下操作需要使用的软件:

第一步:部署 StarRocks

请访问 StarRocks Dockerhub 存储库(https://hub.docker.com/r/starrocks/allin1-ubuntu/tags),并根据版本标签选择一个版本。

docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -itd starrocks/allin1-ubuntu:latest

第二步:连接到 StarRocks

由于部署是一个异步过程,建议在连接到集群之前等待一分钟。 使用 MySQL 客户端连接到 StarRocks 集群。

`mysql -h127.0.0.1 -uroot -P9030
`

2.StarRocks Kubernetes Operator——在 K8s 上完整运行 StarRocks

以下操作需要使用的软件:

StarRocks Kubernetes Operator 是由 StarRocks 社区开发的一个实用工具。它可以帮助你使用几行简单的命令将StarRocks 的 FE、BE 和 CN(计算节点)组件部署到你的 K8s 环境中。这种部署方法支持在两个简单步骤中部署任意数量的 FE(至少需要一个 FE)、BE 和 CN 节点。

教程|如何用 Docker/K8s 快速部署 StarRocks 集群_第2张图片

准备工作

你需要一个可运行的 Kubernetes 环境,如果你没有这样的环境,你可以选择以下几个选项:

快速验证测试:

或是你也可以使用公有云上的托管 K8s,像是:

  • 阿里云 ACK
  • 腾讯云 TKE
  • AWS EKS
  • GCP GKE

第一步:安装 StarRocks K8s Operator 安装 starrockscluster CRD:

kubectl apply -f 
https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/starrocks.com_starrocksclusters.yaml

你可以选择在默认的 "starrocks" 命名空间中安装 Operator,也可以选择在自定义的命名空间中安装。

在 StarRocks 命名空间中安装 Operator

默认情况下,Operator 配置为安装在 "starrocks" 命名空间中。你可以通过以下命令来安装:
 

kubectl apply -f 
https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yaml

在自定义命名空间中安装

然而,如果你想在自定义命名空间中安装 Operator,需要下载 Operator Manifest 并将所有命名空间从 "starrocks" 更改为所需的自定义命名空间的名称。

kubectl apply -f custom-namespace-operator.yaml

第二步:部署 StarRocks
 

你需要准备一个单独的 YAML 文件来部署 StarRocks 的 FE、BE 和 CN 组件。StarRocks Kubernetes Operator 的GitHub 代码库中包含一些示例,可以帮助你入门。

你可以修改示例模板或创建一个新模板,以更好地适应你的用例。Starrocks-kubernetes-operator GitHub 代码库的 README 上有关于如何用 configMap 配置 StarRocks 集群的各种参数以及如何配置存储卷的更多信息。

出于演示目的,我们使用 starrocks-fe-and-be.yaml 示例模板来启动一个 StarRocks 集群。这个 YAML 文件默认启动 3 个 FE 和 3 个 BE,你可以编辑 YAML 文件来更改 FE 的数量(设置为1)或者设置 BE 为其他数量 。

wget https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/examples/starrocks/starrocks-fe-and-be.yaml 
kubectl apply -f starrocks-fe-and-be.yaml

第三步:连接到 StarRocks 集群
从 Kubernetes 集群内部连接

在部署 StarRocks 集群后,你可以使用 kubectl get svc -n 命令找到连接的 IP 地址。例如,如果 StarRocks 部署的命名空间是 starrocks,你可以执行以下命令:

kubectl get svc -n starrocks

-fe-service的 clusterIP 是连接到 StarRocks FE 的 IP 地址。然后,你可以使用以下命令访问新创建的 StarRocks 集群:
`
mysql -h -P9030 -uroot`

从 Kubernetes 集群外部连接

如果你从 Kubernetes 网络之外进行访问,你需要将服务类型更改为 LoadBalancer 或 NodePort。你可以使用以下命令进行配置:

kubectl -n starrocks patch --type=merge src starrockscluster-sample -p '{"spec":{"starRocksFeSpec":{"service":{"type": "LoadBalancer"}}}}'

接下来,你可以使用 kubectl get svc -n 命令找到连接的 IP 地址。例如,如果 StarRocks 部署的命名空间是starrocks,你可以执行以下命令:

kubectl get svc -n starrocks

-fe-service的 ExternalIP 是连接到 StarRocks FE 的 IP 地址。然后,你可以使用以下命令访问新创建的 StarRocks 集群:
`
mysql -h -P9030 -uroot`

如果正式使用遇到问题,像是修改 K8s 环境的密码,可以参考文档 https://github.com/StarRocks/starrocks-kubernetes-operator/blob/main/doc/change_root_password_howto.md

现在你已经准备好部署 StarRocks 了,接下来你只需要亲自体验一下这个过程是多么简单!加入我们的社区,亲眼见证为什么越来越多的人选择使用 StarRocks!
下载最新版本:https://mirrorship.cn/zh-CN/download/community

⭐ StarRocks GitHub:https://github.com/StarRocks/starrocks (欢迎提 issue 反馈问题和点 star 支持!)

来 StarRocks 论坛寻求解答: https://forum.mirrorship.cn/ (搜 K8s/Docker 看常见问题)

新手视频教程:
https://space.bilibili.com/1273141509/channel/collectiondetai...
https://www.bilibili.com/video/BV1JM4y1Q7c2/?spm_id_from=333....

也欢迎你加入到 StarRocks 用户交流群! https://842372.ma3you.cn/articles/Oz4kpdl/

你可能感兴趣的:(教程|如何用 Docker/K8s 快速部署 StarRocks 集群)