云原生是一种现代化的软件开发和部署方法论。相较于传统的应用开发和部署方式,云原生带来了显著的优势,包括弹性伸缩、应用程序可移植性、高可靠性和自动化部署与管理等方面,从而极大地提升了成本效益和开发效率。
StarRocks 从 3.0 版本开始支持了云原生存储分离架构,有越来越多用户在云上环境部署 StarRocks。Docker 容器化部署是当前最常见的部署方式之一,Docker 利用容器技术打包了 StarRocks 运行环境,简化了部署和运行过程,可以帮助用户实现快速功能验证;Kubernetes 则提供高级的容器编排和管理功能,可用来高效地扩缩容 StarRocks 集群。
接下来,就让我们带大家用一个更简捷的部署方式,通过 Docker/K8s 快速开启 StarRocks 旅程!🚀
准备工作
在正式开始前我们建议你先熟悉 StarRocks 的架构。 StarRocks 的基本架构相当简洁,包括 FE(前端)节点和 BE(后端)节点:FE 负责元数据管理、客户端连接管理、查询计划和查询调度;BE 负责数据存储和 SQL 执行。
如果你想了解更多,欢迎利用以下的学习资源:
📝 文档:https://docs.mirrorship.cn/zh-cn/latest/introduction/Architecture
🎞️ 视频:https://www.bilibili.com/video/BV1Hs4y1975F/?spm_id_from=333.788&vd_source=1cb452610138142d1300dd37a6162a88
接下来,我们要正式启程了!
用 Docker & K8s 快速部署 StarRocks 集群
1.Docker ——快速功能测试
小贴士: 你可以依照以下步骤部署一个简单的 StarRocks 集群,其中包含一个 FE 节点和一个 BE 节点。 使用 Docker 部署的方式目前只建议用在快速功能测试上,适用于小数据集验证 DEMO 的情况。不建议你将其用于大规模测试或生产环境。 此快速入门部署了一个 BE 节点。在 CREATE TABLE 子句中,你需要添加属性("replication_num" = "1"),以便只有一个数据副本持久保存在 BE 节点中。
以下操作需要使用的软件:
-
Docker (https://docs.docker.com/engine/install/)
-
MySQL(作为连接到 StarRocks 的客户端)
第一步:部署 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 (K8s) Operator (https://github.com/StarRocks/starrocks-kubernetes-operator)
StarRocks Kubernetes Operator 是由 StarRocks 社区开发的一个实用工具。它可以帮助你使用几行简单的命令将StarRocks 的 FE、BE 和 CN(计算节点)组件部署到你的 K8s 环境中。这种部署方法支持在两个简单步骤中部署任意数量的 FE(至少需要一个 FE)、BE 和 CN 节点。
准备工作
你需要一个可运行的 Kubernetes 环境,如果你没有这样的环境,你可以选择以下几个选项:
快速验证测试:
-
带有 Kubernetes 的 Docker 桌面版 (https://docs.docker.com/desktop/kubernetes/)
-
Minikube (https://minikube.sigs.k8s.io/docs/start/)
或是你也可以使用公有云上的托管 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 <namespace>命令找到连接的 IP 地址。例如,如果 StarRocks 部署的命名空间是 starrocks,你可以执行以下命令:
kubectl get svc -n starrocks
<your-StarRocksCluster-name>-fe-service的 clusterIP 是连接到 StarRocks FE 的 IP 地址。然后,你可以使用以下命令访问新创建的 StarRocks 集群:
mysql -h <FE-IP> -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 <namespace> 命令找到连接的 IP 地址。例如,如果 StarRocks 部署的命名空间是starrocks,你可以执行以下命令:
kubectl get svc -n starrocks
<your-StarRocksCluster-name>-fe-service的 ExternalIP 是连接到 StarRocks FE 的 IP 地址。然后,你可以使用以下命令访问新创建的 StarRocks 集群:
mysql -h <FE-IP> -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/collectiondetail?sid=1319703
https://www.bilibili.com/video/BV1JM4y1Q7c2/?spm_id_from=333.999.0.0&vd_source=1cb452610138142d1300dd37a6162a88
也欢迎你加入到 StarRocks 用户交流群!👇 https://842372.ma3you.cn/articles/Oz4kpdl/