容器化 | ClickHouse on K8s 基础篇
作者:苏厚镇 青云科技数据库研发工程师
目前从事 RadonDB ClickHouse 相关工作,热衷于研究数据库内核。
ClickHouse[1] 是一款用于联机分析(OLAP)的列式数据库管理系统(DBMS)。由号称“俄罗斯 Google”的 Yandex 公司开发,并于 2016 年开源,近年在计算引擎技术领域受到越来越多的关注,算是数据库后起之秀。
Kubernetes[2] 是 Google 公司于 2014 年 6 月开源的一款容器集群管理系统。适用于管理云平台多个主机的容器化应用,旨在让部署容器化的应用简单并且高效,努力成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。
借助 K8s 和容器化技术,我们不仅可以使得应用的部署和管理更加简单高效、提高硬件资源利用率等,还可以实现健康检查和自修复、自动扩缩容、负载均衡等高级功能。
那么,如果黑马数据库 ClickHouse 遇上火热的容器化管理技术 K8s,会擦出怎样的火花呢?
| ClickHouse 容器化方案概览
当前 ClickHouse 的主流容器化方案包括 原生(Kubectl)部署 和 Helm 部署 两种,而每种又包括 是否使用 Operator 两种情况。
部署方式 | Kubectl 原生部署 | Kubectl 原生部署 | Helm 部署 | Helm 部署 |
---|---|---|---|---|
是否使用Operator | × | √ | × | √ |
部署方便程度 | 难 | 中 | 易 | 易 |
管理方便程度 | 难 | 中 | 难 | 易 |
| Helm 部署方案
Kubernetes 基于服务力度提供了很多资源类型,比如 Service、Deployment 等。当需要部署一个应用时,尤其是有状态应用,需要组合使用大量的 Kubernetes 资源,部署之后还需要管理它们,包括升级、更新换代、删除等等。这时我们会想,是否有这样一个工具可以在更上层的维度去管理这些应用呢?这个时候就有了社区的一个包管理工具:Helm[3]。
简单来讲,可把 Helm 看作是 Linux 中的 Yum,Java 中的 Maven。 对于应用发布者而言,可以通过 Helm 打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。对于使用者而言,使用 Helm 后不用需要了解 Kubernetes 的 Yaml 语法并编写应用部署文件,可以通过 Helm 下载并在 Kubernetes 上安装需要的应用。
| ClickHouse Operator 管理方案
Operator in Kubernetes 是一个 Kubernetes 扩展,可以简化应用的配置、管理和监控等。目前已经有很多应用开发了其 Operator in Kubernetes,比如 MySQL、PostgreSQL、MongoDB 等等,ClickHouse 也启动了 ClickHouse Operator [4] 项目,用于在 K8s 上部署和管理 ClickHouse。
可提供如下功能:
- 创建 Replicated 集群;
- 管理用户、配置文件;
- 管理版本升级;
- 管理数据持久化的存储卷;
- 导出 ClickHouse metrics 到 Prometheus;
- 配置 Pod Deployment,如 Pod 模板,关联规则等;
- ……
通过这些功能,可以让 ClickHouse 集群部署和管理过程不再繁琐,用户只需关心如何创建以及管理 CR 即可。
| RadonDB ClickHouse
RadonDB ClickHouse[5] 是由 RadonDB 研发团队研发并开源的,基于原生 ClickHouse 的高可用、云原生集群解决方案。RadonDB ClickHouse 实现了将 Operator 管理和 Helm 部署方案相结合,并支持在 Kubernetes 上轻便快速地创建和管理 ClickHouse 集群。
简单说,如果想在 Kubernetes 上使用 ClickHouse 集群,那么 RadonDB ClickHouse 是一个不错的选择。
结语
本文介绍了 Kubernetes 平台上搭建 ClickHouse 集群的几种方案,以及 Operator 和 Helm 的基本概念等内容。
下期预告
下期【部署篇】我们将 具体实践 文中提到的几种 ClickHouse + K8s 的部署方案。
尽请期待……
参考
[1]. ClickHouse:https://clickhouse.tech/
[2]. Kubernetes:https://kubernetes.io/
[3]. Helm:https://helm.sh/docs/
[4]. ClickHouse Operator:https://github.com/Altinity/clickhouse-operator/tree/master/docs
[5]. RadonDB ClickHouse:https://github.com/radondb/radondb-clickhouse-kubernetes
关于 RadonDB
RadonDB开源社区 是一个面向云原生、容器化的数据库开源社区。为数据库技术爱好者提供围绕主流开源数据库(MySQL、PostgreSQL、Redis、MongoDB、ClickHouse 等)的技术分享平台,并提供企业级 RadonDB 开源产品及服务。
目前 RadonDB 开源数据库系列产品已被 光大银行、浦发硅谷银行、哈密银行、泰康保险、太平保险、安盛保险、阳光保险、百年人寿、安吉物流、安畅物流、蓝月亮、天财商龙、罗克佳华、升哲科技、无锡汇跑体育、北京电信、江苏交通控股、四川航空、昆明航空、国控生物 等上千家企业及社区用户采用。
RadonDB 可基于云平台与 Kubernetes 容器平台交付,不仅提供覆盖多场景的数据库产品解决方案,而且提供专业的集群管理和自动化运维能力,主要功能特性包括:高可用主从切换、数据强一致性、读写分离、一键安装部署、多维指标监控&告警、弹性扩容&缩容、横向自由扩展、自动备份&恢复、同城多活、异地灾备 等。RadonDB 仅需企业及社区用户专注于业务层逻辑开发,无需关注集群高可用选型、管理和运维等复杂问题,帮助企业及社区用户大幅度提升业务开发与价值创新的效率!
GitHub:https://github.com/radondb
微信群: 请搜索添加群助手微信号 radondb

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
深入浅出CMS垃圾收集器
听说微信搜索《Java鱼仔》会变更强哦! 本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦 (一)CMS垃圾收集器 CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的老年代收集器。CMS是基于标记-清除算法的老年代垃圾回收器,CMS是目前应用最广泛的老年代垃圾回收器。 CMS的使用只需要在JVM的启动参数中增加(-XX:+UseConcMarkSweepGC)参数即可激活使用CMS垃圾收集器。 CMS基于“标记-清除”算法实现,是HotSpot虚拟机的第一款真正意义上的并发收集器,基本上实现了垃圾收集线程与用户线程同时工作。 (二)CMS垃圾收集器的步骤 CMS的运行过程主要分为四个阶段: 1、初始标记:标记GC Roots可以直接关联到的对象,速度很快(stop the world) 2、并发标记:根搜索算法的过程 3、重新标记:为了修正并发标记期间,因程序运行导致标记产生变动的对象。(stop the world) 4、并发清除:清除垃圾 我画了一个图更加形象地展示上面四个流程,红色表示CMS线程...
-
下一篇
新唐科技 (Nuvoton) 正式成为 RT-Thread 高级会员
微控制器领导厂商新唐科技(Nuvoton)与知名物联网操作系统厂商睿赛德科技(RT-Thread)签署会员合作协议,新唐科技正式成为RT-Thread高级会员。双方将携手深度合作、充分发挥各自优势,为开发者和终端客户提供更加丰富的、灵活的软硬件开发生态系统和产品组合选择,加速产品开发效率,共筑物联网产业生态发展。 中美贸易战和新冠疫情给全球产业带来巨变,多个行业对应用创新的需求空前强烈,新唐科技持续创新推出满足不同应用场景需求的多样控制器平台,产品线覆盖了Cortex-M0、Cortex-M23、 Cortex-M4、Arm9 内核。 当前,新唐科技已将RT-Thread移植适配其Cortex-M0(M032系列)、Cortex-M23(M2354系列)、 Cortex-M4(M487系列)、ARM9(NUC980系列)内核MCU/MPU(微控制器/处理器),并提供完善的外设驱动支持,可让开发者开箱即用,从而免去繁杂的底层软件开发和固件整合工作。配合RT-Thread丰富的组件和软件包,可进一步提升开发效率,让开发者更多专注于应用创新上,提升产品在市场竞争力。为进一步提升开发者的开发体...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL数据库在高并发下的优化方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)