随着云原生技术的发展,越来越多的业务场景需要使用容器来部署和管理应用程序,而Kubernetes作为容器编排平台的事实标准,自然也受到了越来越多的关注和使用。
但是如果想在Kubernetes上部署和运维大数据服务是有比较高的学习成本,需要专业的运维人员来进行管理和维护,在这种情况下,我们开发出CloudEon平台,致力于简化多种大数据服务在Kubernetes上的部署和管理,同时还能更好地利用Kubernetes的资源调度和管理能力,使用户更加简单、方便、高效地搭建和管理大数据集群。
特性
- 快速搭建大数据集群:在Kubernetes上快速搭建部署大数据集群,省去了手动安装和配置的繁琐过程
- 容器化运行大数据服务:大数据服务以容器方式运行,服务的部署和管理更加灵活和便捷,更好地利用Kubernetes的资源调度和管理能力
- 支持监控告警等功能:帮助用户实时监控集群运行状态,及时发现和解决问题
- 支持配置修改等功能:使用户能够更加灵活地管理和配置自己的大数据集群
- 自动化运维:降低集群管理的难度和人力成本,提高集群的可用性和稳定性
- 可视化管理界面:用户能够更加直观地管理和监控自己的大数据集群
- 灵活的扩展性:提供插件机制,让用户可以自定义拓展和安装更多的大数据服务
整体架构
实现思路
轻量级应用
CloudEon是一个轻量级应用,没有采用分布式架构,本质上只是一个Kubernetes的客户端,负责将用户的操作转换为Kubernetes的资源或指令。例如,它可以调度一个大数据服务启动(如Doris)、停止某个服务角色(Dori Be)或让某个服务挂掉后自动拉起,这些都是由Kubernetes自行调度完成的。 由于CloudEon只是一个单体应用,安装部署非常简单。
部署前提
在部署 CloudEon前, 所需要准备的一些先决条件。
Kubernetes环境准备(必须)
CloudEon需要一个可访问的Kubernetes集群,目前已知支持的版本是1.21+,如果没有Kubernetes环境可以使用kubekey快速搭建一个。 也支持在k3s上部署。 container runtime目前只支持docker,后续会逐渐适配,欢迎大家一起来完善。
SSH服务准备(必须)
CloudEon需要访问Kubernetes集群中节点的SSH服务,所以必须保证网络可通
数据库环境准备(非必须)
CloudEon默认使用H2作为内置数据库,当然也支持Mysql作为数据库,可以通过修改application.properties文件进行配置
Docker部署
Cloudeon 在 dockerhub 中的公共镜像地址为peterpoker/cloudeon。如果你本地已经安装了 docker,执行以下命令可以一键安装:
docker run -p7700:7700 peterpoker/cloudeon
如果国内访问比较慢,也可以用
docker run -p7700:7700 --name cloudeon --rm registry.cn-hangzhou.aliyuncs.com/udh/cloudeon:1.0.0
镜像启动成功后,在浏览器中访问 http://docker_ip:7700 进入登录页。镜像中提供初始账户,用户名 admin 密码 admin
配置应用数据库
在默认情况下,Cloudeon 使用内置的 H2 作为应用程序数据库。 如果将 Cloudeon 用于生产环境,建议使用 MySQL 作为应用程序数据库。配置步骤如下: 新建一个名为 application.properties 的空文件,将以下内容填写完整,然后粘贴到到文件中
# Http server portserver.port=7700spring.main.banner-mode=log # dbspring.jpa.open-in-view=falsespring.jpa.hibernate.ddl-auto=none spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/cloudeon?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root ####### flyway properties #######spring.flyway.enabled=truespring.flyway.clean-disabled=truespring.flyway.validate-on-migrate=true# Configuration for uploading files.spring.servlet.multipart.enabled=truespring.servlet.multipart.file-size-threshold=0spring.servlet.multipart.max-file-size=209715200spring.servlet.multipart.max-request-size=209715200# temporary skip circular references checkspring.main.allow-circular-references=true####### cloudeon properties #######cloudeon.stack.load.path=${cloudeon.home.path}/stack cloudeon.remote.script.path=${cloudeon.home.path}/script cloudeon.task.log=${cloudeon.home.path}/log cloudeon.work.home=${cloudeon.home.path}/work logging.config=${cloudeon.home.path}/conf/logback.xml
配置文件挂载
运行以下命令,使用新建的 application.properties 配置启动镜像
docker run -d--name cloudeon -v your_path/application.properties:/usr/local/cloudeon/conf/application.properties -p7700:7700 peterpoker/cloudeon
安装高可用HDFS使用示例:
CloudEon开源计划
- CloudEon目前已实现在k8s上管理部署大数据服务,包括节点管理、服务角色的重启、启动、停止等操作,还可以进行服务的配置、删除、告警提示以及实时日志查看等功能。支持在Kubernetes上运行多种服务,例如hdfs、yarn、zookeeper、doris、hive、spark、dolphinscheduler、hbase、kafka、prometheus、grafana、alertmanager等。
- 不久将支持kyuubi、Arctic、streampark、dinky、trino、alluxiio、iotdb、iceberg、kylin、seatunnel等服务在Kubernetes上运行
- 未来将支持包括服务日志分析模块、RSS支持、集群健康分析、集群巡检功能、构建kerberos、openldap、ranger安全体系等功能。此外,还支持大数据服务客户端一键下载功能以及可视化在线SQL编辑器,并支持ARM平台
参与贡献
欢迎提交pr到Gitee或者Github参与贡献。
如果您有任何问题可以提交issue到Gitee或者Github。
如果觉得CloudEon对您有帮助,请在Gitee和Github点一下star⭐️,谢谢!
【Gitee地址】:https://gitee.com/dromara/CloudEon
【Github地址】:https://github.com/dromara/CloudEon
【CloudEon官网】:https://cloudeon.top/
【CloudEon文档】:https://docs.cloudeon.top/en/latest/