## 架构
云帮是按照面向服务的架构来设计的。目前大多数集群组件都是通过容器镜像的形式发布和运行的。后续我们会将所有的组件都容器化,通过Kubernetes集群保障组件的高可用。
<br>
### 概述
<img src="http://7xihe6.com1.z0.glb.clouddn.com/cloudbangarc.png" />
总体分三层,最上层是应用,可以从零创造应用,或将应用市场的应用直接使用,中间的好雨云帮类似一个操作系统,最下层是各类计算资源。
云帮部署在操作系统之上,可以兼容各类计算资源。
好雨云帮 + IaaS =公有云
好雨云帮 + 服务器 =私有云
好雨云帮 + IaaS + 服务器 =混合云
<br>
### 技术架构
<img src="http://7xihe6.com1.z0.glb.clouddn.com/technology-architecture.png" />
- 云帮所有的对外服务都配置在负载均衡上,平台使用者、最终用户、开发者都是通过负载均衡转发到对应的应用与服务:
- 开发者除了可以通过Web控制台管理应用,还可以通过平台API来完成所有Web控制台的操作。详情参见:[云帮API手册](help.goodrain.com/api)
- 运维人员可以在系统层面维护平台服务,也可以通过云帮的管理后台来管理计算资源,维护平台服务。
- Kubernetes负责容器的编排和调度,它的所有行为都是由控制层发起的。控制层将容器相关的操作都进行了封装,云帮通过抽象出了一个应用的概念来屏蔽底层所有与技术(容器、调度、网络……)相关的概念。用户通过对应用进行属性和行为的设置来操作应用,通过应用与应用直接的依赖关系来进行微服务架构的设计。
<hr><br>
#### 路由层
用户可以访问到的应用都是配置在路由层服务中,它主要由负载均衡组成,通过路由规则分离不同的应用与访问域名。控制层的服务根据容器的服务状态维护负载均衡中的节点。
<img src="http://7xihe6.com1.z0.glb.clouddn.com/router.png" />
<hr><br>
#### 控制层
控制层服务是平台最核心的功能模块,其内部包含了多个子模块:
- 应用管理平台:通常也称之为控制台,是用户操作和管理应用的web端程序。
- 应用中心:云帮内部的应用市场,包含了常用的应用,当然用 户也可以在云市安装更多的应用。
- 自动构建:基于源代码和Dockerfile的自动构建模块。
- 应用引擎:云帮核心子模块,负责将各种容器操作命令发送到后端服务,同时也将应用、容器状态保存到后端的etcd服务中。
- Git仓库:选装模块,可以使用外部或内部的Git服务
<img src="http://7xihe6.com1.z0.glb.clouddn.com/controler.png" />
<hr><br>
#### 计算层
计算层负责容器的运行、监控以及收集汇总容器中的日志。容器的启动与关闭由控制层发起,容器运行后会将状态注册到路由层。
<img src="http://7xihe6.com1.z0.glb.clouddn.com/compute.png" />
<hr><br>
#### 后端服务
后端服务云帮集群的核心服务,包括Kubernetes、etcd、数据存储、日志处理、监控等。
<img src="http://7xihe6.com1.z0.glb.clouddn.com/backend.png" />
<br>
### 高可用架构

>[info] **说明:**
> 1. 云帮集群中由于部署服务的不同,分为管理节点和计算节点两个角色
> 2. 当只安装一个节点时,这个节点既是管理节点,也是计算节点
> 3. 可以通过集群维护命令增减集群规模,设置集群角色