云耀服务器L实例快速部署ByConity
文章目录
- 云耀服务器L实例快速部署ByConity
- 前言
- 1. 云耀云服务器L实例简介
- 1.2 云耀云服务器与弹性云服务器区别
- 1.3 云耀负载均衡
- 2. 云耀云服务器L实例购买
- 2.1 云耀服务器L实例购买
- 2.1.1 云耀服务器L实例初始化配置
- 2.1.2 远程登录云耀服务器L实例
- ByConity 配置部署
- 2.1 资源准备
- 2.2 服务器基础配置
- 2.2.1 在本地环境中安装和设置 kubectl
- 2.2.2 在本地环境中安装 [helm](https://helm.sh/)
- 2.2.3 安装[kind](https://kind.sigs.k8s.io/)和[Docker](https://www.docker.com/)
- 2.2.3.1 kind安装
- 2.2.3.2 Docker安装
- 3 .本地 Kubernetes 集群
- 3.1 使用 Kind 配置本地 Kubernetes 集群
- 3.2 初始化 Byconity 演示集群
- 4. 总结
前言
ByConity 是字节跳动面向现代数据栈的一款开源数仓系统,应用了大量数据库成熟技术,如列存引擎,MPP 执行,智能查询优化,向量化执行,Codegen,indexing,数据压缩,适合用于 Online Analytical Processing(OLAP) 场景和轻载数仓的场景,包括但不限于交互式分析、实时 APP 监控、流数据处理和分析等。本文整体云资源部署在华为云云耀服务器L实例
下面我们通过详细图文内容介绍如何在华为云云耀服务器L实例上部署并运行ByConity
1. 云耀云服务器L实例简介
云耀云服务器(Hyper Elastic Cloud Server,HECS)是可以快速搭建简单应用的新一代云服务器,具备独立、完整的操作系统和网络功能。提供快速应用部署和简易的管理能力,适用于网站搭建、开发测试环境、企业应用等低负载应用场景。具有易搭建、更实惠、易维护、更安全的特点。
云耀云服务器L实例是华为云基于瑶光智慧云脑推出的新一代云服务器,具备独立、完整的操作系统和网络功能,可以快速搭建简单应用。它适用于多种低负载应用场景,如网站搭建、开发环境等,也可以用于中小企业和开发者的业务部署,如小程序、跨境电商、音视频服务端和私有云盘等场景。云耀云服务器L实例提供了快速的应用部署和简易的管理能力,同时集成了多个华为云产品的功能来帮助搭建和管理应用,使得管理和运维更加便捷。
1.2 云耀云服务器与弹性云服务器区别
与弹性云服务器相比,云耀云服务器简化了购买ECS过程中的一些高级配置,一站式融合购买、登录、磁盘配置、网络配置、云监控、主机安全等多种功能,帮助您更加便捷高效的部署、配置和管理应用。
说明:
HECS底层使用的物理硬件资源与ECS一致,同CPU、内存的HECS与ECS计算能力在同一标准。
云耀云服务器与弹性云服务器的主要区别:
- 云耀云服务器:云耀云服务器是可以快速搭建简单应用的新一代云服务器,按已搭配的套餐售卖,适用于低负载应用场景,可以更加便捷、更加高效的部署、配置和管理应用。
说明:
高负载应用场景推荐使用弹性云服务器ECS,性能更稳定。 - 弹性云服务器:弹性云服务器提供多种计费模式、规格类型、镜像类型、磁盘类型,针对不同的业务场景,自定义配置弹性云服务器。
1.3 云耀负载均衡
弹性负载均衡(Elastic Load Balance,简称ELB)是将访问流量根据分配策略分发到后端多台服务器的流量分发控制服务。弹性负载均衡可以通过流量分发扩展应用系统对外的服务能力,同时通过消除单点故障提升应用系统的可用性。
如下图所示,弹性负载均衡将访问流量分发到后端三台应用服务器,每个应用服务器只需分担三分之一的访问请求。同时,结合健康检查功能,流量只分发到后端正常工作的服务器,从而提升了应用系统的可用性。
弹性负载均衡由以下3部分组成:
- 负载均衡器:接受来自客户端的传入流量并将请求转发到一个或多个可用区中的后端服务器。
- 监听器:您可以向您的弹性负载均衡器添加一个或多个监听器。监听器使用您配置的协议和端口检查来自客户端的连接请求,并根据您定义的分配策略和转发策略将请求转发到一个后端服务器组里的后端服务器。
- 后端服务器
每个监听器会绑定一个后端服务器组,后端服务器组中可以添加一个或多个后端
2. 云耀云服务器L实例购买
2.1 云耀服务器L实例购买
进入华为云官网
进入控制台
搜索云耀服务器HECS
选择登录L实例控制台
如果没有应用实例,则可以选择购买资源
云耀服务器L实例在购买阶段相对于传统的华为云ECS服务器购买十分简单便捷
关于区域选择,可以按照下面规则选择合适的区域
- 地理位置就近原则。根据用户群所在位置,应就近选择区域以减少网络时延,提高访问速度。
- 不同区域价格差异。不同区域的服务器价格可能会有所不同,因此需考虑预算和成本效益。
- 备案考虑。根据所在的行业和业务需求,有些区域可能需要特定的备案或审批手续,应该提前了解和考虑。
- 多产品同区域内网互通。如果需要将多个华为云产品部署在同一区域内,以便实现内网互通,可以提高访问速度和数据传输效率。
本次我选择的是Centos7.8版本
关于实例规格选择,这要根据大家的实际业务需求和资金进行综合考虑
综上考虑,我现在的区域为华北-北京四,系统镜像为Centos7.8,实例规格为2c-2G,先购买一个月
大家也可以根据自己需求选择增配数据盘,主机安全,云备份等功能
点击立即购买并支付费用,支付成功后回到云耀服务器L实例控制台等待机器创建成功。
2.1.1 云耀服务器L实例初始化配置
进入云耀服务器L实例控制台,可以看到我们购买的实例
单击实例,进入控制界面
在这里可以看到此服务器的一些基本信息
首先需要重置密码
对于我们是下个步骤安装宝塔过程中需要开放一些端口,所以还需要配置安全组规则
选择更改安全组,选择自己认为合适的安全组或者新建安全组规则
2.1.2 远程登录云耀服务器L实例
每个人的喜好不太一样,常用的shell登录终端有很多,这里我使用的是MobaXterm
MobaXterm是一款强大的终端工具,它集成了SSH客户端、X服务器和Unix命令集工具箱。在Windows操作系统下,MobaXterm可以帮助用户轻松地连接并操作Linux服务器。
MobaXterm具有以下特点:
- 集成了SSH客户端:MobaXterm通过内嵌SSH客户端,可以快速建立与Linux服务器的安全连接,实现远程登录和管理。
- 支持X服务器:MobaXterm集成了X服务器,可以在Windows上运行Unix/Linux环境,并支持图形界面应用程序。
- 提供Unix命令集:MobaXterm集成了Unix命令集(GNU/Cygwin),用户可以在Windows上运行大多数Linux命令,实现高效的终端操作。
- 多终端视窗:MobaXterm支持开启多个终端视窗,可以同时连接多个Linux服务器,并进行灵活的终端管理。
- 可扩展性强:MobaXterm可以通过集成插件来扩展功能,例如运行Gcc、Perl、Curl、Tcl/Tk/Expect等程序。
- 免费开源:MobaXterm分为免费开源版和收费专业版,用户可以免费使用开源版,并根据需求选择专业版以获得更多的功能和更好的技术支持。
新建ssh登录,填写云耀服务器L实例的ip和用户名并输入密码
登录成功
ByConity 配置部署
2.1 资源准备
根据官方建议,在测试环境中
使用操作系统版本: Centos8.2并使用公网yum源
硬件规格中,Worker 和 Server 的本地磁盘主要用于存储写入时的临时数据和日志文件,同时 Worker 的本地磁盘中还会存储数据的 Cache,因此磁盘的大小需要根据配置的 DiskCache 大小及写入的数据量来确定。
我的部署见下图,为满足各个组件性能要求
组件名称 |
CPU |
内存 |
硬盘 |
网络 |
实例数 |
TSO |
1 |
1G |
5G |
千兆网卡 |
1 |
Server |
8 |
32G |
100G |
千兆网卡 |
1 |
Worker |
4 |
16G |
110G |
千兆网卡 |
1 |
DaemonManager |
1 |
2G |
40G |
千兆网卡 |
1 |
ResourceManager |
1 |
2G |
40G |
千兆网卡 |
1 |
整体云资源部署在华为云
2.2 服务器基础配置
2.2.1 在本地环境中安装和设置 kubectl
kubectl是Kubernetes命令行工具,可以通过命令行界面或脚本与Kubernetes集群进行通信,并执行各种操作,包括:
- 部署和管理应用程序:kubectl可以使用YAML或JSON文件定义和创建Kubernetes资源对象,例如部署、服务、Pod、副本集、配置映射等。可以使用kubectl创建、更新、删除和查看这些资源,以及监控其状态和日志。
- 扩展和管理集群:kubectl可以通过命令行管理Kubernetes集群的各个组件,例如节点、命名空间、存储卷、服务账户等。可以使用kubectl扩展集群的规模、添加或删除节点,以及执行与集群管理相关的操作。
- 调试和故障排除:kubectl提供了各种命令和选项,用于诊断和调试Kubernetes集群中的问题。可以查看Pod的日志、执行进入容器的命令、获取集群事件等。
- 资源监控和调整:kubectl可以用于查看Kubernetes集群和资源的状态、监控资源使用情况、扩展或缩减资源的副本数量等。
kubectl提供了强大的功能和灵活性,能够有效地管理和操作Kubernetes集群。
用以下命令下载最新发行版:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
下载 kubectl 校验和文件:
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
基于校验和文件,验证 kubectl 的可执行文件:
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
验证通过时,输出为:
kubectl: OK
验证失败时,sha256 将以非零值退出,并打印如下输出:
kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
安装 kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
执行测试,以保障安装的版本是最新的:
kubectl version --client
为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 kubeconfig 文件, 该文件在 kube-up.sh 创建集群时,或成功部署一个 Minikube 集群时,均会自动生成。 通常,kubectl 的配置信息存放于文件 ~/.kube/config 中。
通过获取集群状态的方法,检查是否已恰当地配置了 kubectl:
kubectl cluster-info
如果返回一个 URL,则意味着 kubectl 成功地访问到集群。
2.2.2 在本地环境中安装 helm
Helm使用称为chart的包装格式。chart是描述相关的一组Kubernetes资源的文件集合。单个chart可能用于部署简单的东西,比如memcached pod,或者一些复杂的东西,比如完整的具有HTTP服务,数据库,缓存等的Web应用程序堆栈。
chart通过创建为特定目录树的文件,将它们打包到版本化的压缩包,然后进行部署。
Helm有安装脚本可以自动拉取最新的Helm版本并在 本地安装
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
如果想直接执行安装,运行
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
2.2.3 安装kind和Docker
2.2.3.1 kind安装
Kind,即Kubernetes-in-docker的简写,是一个使用docker容器作为“节点”实现部署K8S集群环境的工具。Kind工具主要用于Kubernetes本身的测试,目前很多需要部署到Kubernetes环境测试的项目在CI流程中,都会选择用Kind快速创建一个Kubernetes环境,然后运行相关的测试用例,之后删除即可。
输入下面命令安装kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind
2.2.3.2 Docker安装
安装docker-ce
yum clean all yum makecache fastyum -y install docker-ce
通过systemctl启动服务
systemctl start docker
3 .本地 Kubernetes 集群
3.1 使用 Kind 配置本地 Kubernetes 集群
将代码保存在本地
git clone git@github.com:ByConity/byconity-deploy.git
cd byconity-deploy
创建一个 1-control-plane、3-worker 的 Kubernetes 集群。.
kind create cluster --config examples/kind/kind-byconity.yaml
测试以确保本地 kind 集群已准备就绪:
kubectl cluster-info
3.2 初始化 Byconity 演示集群
# Install with fdb CRD first
helm upgrade --install --create-namespace --namespace byconity -f ./examples/kind/values-kind.yaml byconity ./chart/byconity --set fdb.enabled=false
# Install with fdb cluster
helm upgrade --install --create-namespace --namespace byconity -f ./examples/kind/values-kind.yaml byconity ./chart/byconity
等到所有 Pod 准备就绪。
kubectl -n byconity get po
进行测试
kubectl -n byconity exec -it sts/byconity-server -- bash
root@byconity-server-0:/# clickhouse client
172.16.1.1 :)
执行sql
CREATE DATABASE IF NOT EXISTS test;
USE test;
DROP TABLE IF EXISTS test.lc;
CREATE TABLE test.lc (b LowCardinality(String)) engine=CnchMergeTree ORDER BY b;
INSERT INTO test.lc SELECT '0123456789' FROM numbers(100000000);
SELECT count(), b FROM test.lc group by b;
DROP TABLE IF EXISTS test.lc;
DROP DATABASE test;
4. 总结
该文介绍了云耀云服务器L实例和与弹性云服务器的区别,以及云耀负载均衡。还介绍了云耀云服务器L实例购买及MobaXterm多终端视窗和免费开源的特性。同时阐述了kubectl在Kubernetes集群部署和管理中的重要作用,ByConity是基于ClickHouse构建的一个为现代云架构变化设计的数据仓库。它采用云原生架构设计,满足数据仓库用户对灵活扩展、读写分离、资源隔离和强数据一致性的需求。同时,它提供了卓越的查询和写入性能。采用大量成熟的OLAP技术,如列存储引擎、MPP执行、智能查询优化、向量化执行、Codegen、索引和数据压缩;同时也为云场景和存储计算分离架构做了特殊技术创新。