WeCube是一套开源的,一站式IT架构管理和运维管理工具,主要用于简化分布式架构IT管理,并可以通过插件进行功能扩展。
微众银行在分布式架构实践的过程中,发现将银行核心系统构建于分布式架构之上,会遇到一些与传统单体应用不同的痛点(例如,服务器增多,部署难度大;调用链长,全链路跟踪困难; 系统复杂,问题定位时间长等),在逐步解决这些痛点的过程中,总结了一套IT管理的方法论和最佳实践,并研发了与之配套的IT管理工具体系。WeCube就是将该套方法论和最佳实践,从微众内部众多IT管理工具体系中提炼出来,整合成一套开箱即用的IT管理解决方案。
WeCube的设计理念与IT系统生命周期管理基本一致。可以通过“六个维度和一个核心”来阐述。
一个核心:通过注册新插件持续扩展WeCube的功能,通过如下5个能力实现插件注册及协作。插件注册详见“插件注册”。
六个维度:通过定义六个维度的菜单,并将插件功能有组织性的插入这六个维度菜单中,形成对IT系统全生命周期的有效管理。
WeCube分为核心功能模块和插件模块。
核心功能模块使用Java/MySQL/VUE开发,主要负责工作流程,可视化和核心数据存储。
插件模块用于功能扩展,分为资源管理、数据整合、功能增强三类插件。对于插件,WeCube定义了一套接口规范,插件开发者可以在遵循规范的前提下,自行选择开发语言。目前已有的插件使用的开发语言包括GO语言和Java。
组件间详细关联图:
1, Portal web:浏览器客户,客户与WeCube交互的入口。
2, Portal nginx:接收客户端访问请求,如果请求静态资源,返回Core或插件的静态资源文件。如请求动态服务,转发到后端API gateway。Portal nginx建议采用负载均衡实现高可用,也可以使用keepalived做主从高可用。
3, API gateway:负责Portal nginx或其他外部系统的动态服务请求的路由分发。
建议负载均衡实现高可用,也可以使用keepalived做主从高可用。
APIGateway启动时通过Core获取插件实例列表,并建立路由规则。
同时APIGateway会监测Core、Auth Server、Plugins的状态,实现Core、Auth server、Plugins实例的主从类型的高可用。
4, Auth server:主要负责用户认证服务,并返回含用
由API gateway实现主从类型的高可用。 5, Core:WeCube的核心模块。提供插件注册、编排设计、权限管理、批量任务、插件运行资源管理、数据模型、系统参数等核心功能。 由API gateway实现主从类型的高可用。
6, MYSQL:WeCube Core和Auth server的数据库实例。建议MYSQL主从实现高可用。
7, S3:插件包镜像文件的存储。插件注册是写入镜像文件,插件实例启动时读取镜像文件。
8, Plugin instance-Docker:插件运行的容器母机,可以配置多台母机,运行多个插件实例,提供高可用。
9, Plugin instance-MYSQL:插件运行所需要的数据库实例,为每个需要数据库的插件建立独立数据库。建议MYSQL主从实现高可用。
10, Plugin instance-S3:插件运行所需要的对象存储,为每个需要存储文件的插件分配单独的桶。
11, Plugin instance- Squid:插件访问外部资源的代理服务器,按域名放通白名单。在安全要求较高的时建议部署。
以上11个组件组成WeCube Platform。
WeCube的功能菜单设计与设计理念保持一致。分别是任务、设计、执行、监测、智慧、调整、协同、系统。
系统
协同
插件注册:选择插件包上传,插件包需声明本插件的依赖、所需菜单、数据模型、系统参数、权限设定及运行资源,注册后通过容器运行,支持多实例,可以查看插件运行的日志。选择插件服务,通过插件运行的参数关联CMDB数据模型的属性值,形成注册。
任务编排:比如设计一个VPC创建的编排。包括创建VPC、创建子网、创建VM。流程的每个执行节点需要关联插件。
设计(WeCMDB插件提供)
规划设计:用于设计机房结构。
资源规划:用于实例化一个机房,特别是两地三中心结构。
应用架构设计:用于设计一个应用的逻辑架构。
应用部署设计:用于实际部署一个应用。支持灰度发布。
CI数据管理/查询:通过模型图形进入单个数据管理以及查询。
CI综合查询管理/数据综合查询:用于配制多CI属性报表。比如一个应用使用到了哪些主机。
枚举数据管理/查询:通过对公共枚举和私有枚举进行管理以及查询。
执行
编排任务执行:在选择编排后可对选择目标对象执行编排,支持灰度操作。比如重启某个资源集的5台主机。
物料管理(Artifacts插件提供):管理应用程序的包。可以定义各种文件,可以配置环境差异导致的变量替换规则,不需要人工处理。
批量执行:通过配置综合查询并选择目标。在通过特定插件来执行任务。比如某个应用的所有主机,执行一个用户权限变更。
任务(Service-Management插件提供)
模板管理:服务目录管理, 服务请求模板管理;
服务管理:服务请求管理,任务管理;
监测(Open-Monitor插件提供)
Agent管理: 注册、启动、停止;
数据管理: 提供数据采集配置, 数据查询等功能;
告警管理: 提供阈值配置、日志监控、告警触发等功能;
视图管理: 提供图形配置和自定义视图功能;
调整(规划中)
智慧(规划中)
插件注册时序图:
编排任务执行:
WeCube采用容器化部署。
如何编译WeCube,请查看以下文档 WeCube编译文档
如何安装WeCube, 请查看以下文档 WeCube部署文档
更多关于WeCube的使用和操作说明, 请查看以下文档 WeCube用户手册
WeCube使用Java和VUE进行开发,数据存储于MySQL,并依赖Tomcat Web容器运行。
请参考以下文档进行开发环境配置WeCube开发环境配置
WeCube是基于 Apache License 2.0 协议, 详情请参考 LICENSE
如同西天取经,历经艰辛,经过九九八十一难,WeCube终于走到了开源的一天。目前我们的源代码已经迁移到以下地址,所有行内的代码库已经封库,请不要再进行提交。 WeCube开源Github地址 开源不是目的,而是我们的起点,WeCube的目标是开创一套中国顶级的分布式架构管理框架,再输出到海外,展示中国的IT力量。 未来的日子会有更多的希望和更大挑战,我们要秉承开放平台的3O理念,以更加开放和包容的
将集群部署到生产环境后就不得不考虑运维管理问题。运维管理问题主要包括如下几个方面: 监控:包括 kubernetes 本身组件和 Pod、应用的监控 日志收集:包括 kubernetes 本身组件的日志,应用的日志 审计:用户对集群操作的审计 安全:用户权限的管理和镜像漏洞扫描
问题内容: 我的公司刚刚完成了年度审核流程,我终于说服了他们,该是时候找到一个更好的解决方案来管理我们的SQL模式/脚本。目前,我们只有几个脚本可以手动更新。 我曾在另一家公司使用过VS2008 Database Edition,这是一个了不起的产品。我的老板要我看一下Redgate的SQL Compare,并寻找其他可能更好的产品。SQL Compare似乎也是一个很好的产品。但是,看起来他们没
我一直有一个问题与网站管理员工具API。我试图让脚本没有用户交互,并获得我需要的信息。我有谷歌分析与服务帐户,但这是不支持的网站管理员工具。 我目前正在尝试使用API服务器密钥,但当我尝试查询API返回时: 代码403:“用户没有足够的网站权限” 然而,我是我试图查询的网站的所有者。我已经检查了www.google.com/webmasters/tools/home,网站已经验证。 所以我在问我的
维度管理基于计费项、资源类型、域、项目等费用原始维度进行维度项的聚合等。 维度管理基于计费项、资源类型、域、项目等费用原始维度进行维度项的聚合等。以域为例,如平台有域A、域B、域C三个部门,默认以部门为维度展示费用的信息,当域A和域B部门合并后,可通过维度管理的功能对域的维度重新聚合,原来的域A、域B将对应新的维度项域AB、域C仍对应域C,配置完成后,用户可以在费用总览等页面的自定义维度中查看以新
Django 最强大的部分之一是自动生成的Admin 界面。它读取模型中的元数据来提供一个强大的、生产环境就绪的界面,使内容提供者能立即用它向站点中添加内容。在这篇文档中,我们讨论如何去激活、使用和自定义Django 的Admin 界面。 概述 通过使用startproject 创建的默认项目模版中,Admin 已启用。 下面的一些要求作为参考: 添加 'django.contrib.admin'
一、简介 V9引入门户级站群功能,所以此处的站点管理与系统站群系统紧密结合。以下资料介绍了站群和站点管理的相关知识。 *什么是站群? 所谓站群,是指建立在统一标准、统一技术构架基础之上,分级管理,分级维护,耦合程度低,信息可以实现基于特定权限共享呈送的网站集合。并不是把很多个网站集中在一起就可以称得上是站群了,一定是要:统一,分级管理,信息共享,单点登录才可以。站群实现了技术标准统一,能够互联互通