暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

StarRocks 2023-07-28
673

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

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
🎞️ 视频:手动构建高可用 StarRocks 集群环境

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

用 Docker & K8s 快速部署 StarRocks 集群

01


Docker--快速性能测试


❗️小贴士:


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

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

  • Docker [1]

  • MySQL(作为连接到 StarRocks 的客户端)


第一步:部署 StarRocks

请访问 StarRocks Dockerhub 存储库[2],并根据版本标签选择一个版本。

    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

      02


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

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

      • StarRocks Kubernetes (K8s) Operator[3]


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

      准备工作

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

      快速验证测试:

      • 带有 Kubernetes 的 Docker 桌面版[4]

      • Minikube[5]

      或是你也可以使用公有云上的托管 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[6] 并将所有命名空间从 "starrocks" 更改为所需的自定义命名空间的名称。

            kubectl apply -f custom-namespace-operator.yaml


            第二步:部署 StarRocks

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

            你可以修改示例模板或创建一个新模板,以更好地适应你的用例。Starrocks-kubernetes-operator[8] 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 环境的密码,可以参考文档[9]


                        链接合集:
                        [1]https://docs.docker.com/engine/install/
                        [2]https://hub.docker.com/r/starrocks/allin1-ubuntu/tags
                        [3]https://github.com/StarRocks/starrocks-kubernetes-operator
                        [4]https://docs.docker.com/desktop/kubernetes/
                        [5]:https://minikube.sigs.k8s.io/docs/start/
                        [6]https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yaml
                        [7]https://github.com/StarRocks/starrocks-kubernetes-operator/blob/main/examples/starrocks
                        [8]https://github.com/StarRocks/starrocks-kubernetes-operator/tree/main
                        [9]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

                        StarRocks 实战系列第一期--部署&导入

                        也欢迎你加入到 StarRocks 用户交流群!👇


                        关于 StarRocks 

                        Linux 基金会项目 StarRocks 是数据分析新范式的开创者、新标准的领导者。面世三年来,StarRocks 一直专注打造世界顶级的新一代极速全场景 MPP 数据库,帮助企业构建极速统一的湖仓分析新范式,是实现数字化转型和降本增效的关键基础设施。
                        StarRocks 持续突破既有框架,以技术创新全面驱动用户业务发展。当前全球超过 260 家市值 70 亿元以上的头部企业都在基于 StarRocks 构建新一代数据分析能力,包括腾讯、携程、平安银行、中原银行、中信建投、招商证券、众安保险、大润发、百草味、顺丰、京东物流、TCL、OPPO 等,并与全球云计算领导者亚马逊云、阿里云、腾讯云等达成战略合作伙伴。
                        拥抱开源,StarRocks 全球开源社区飞速成长。截至 2022 年底,已有超过 200 位贡献者,社群用户近万人,吸引几十家国内外行业头部企业参与共建。项目在 GitHub 星数已超 4900 个,成为年度开源热力值增速第一的项目,市场渗透率跻身中国前十名。




                        👇 阅读原文了解   产品详细信息

                        文章转载自StarRocks,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论