首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》12.5.3 逻辑架构

关灯直达底部

Magnum主要包括如下概念。

1.Bay

Bay在Magnum中表示为一个集群,目前通过Magnum可以创建Kubernetes和Swarm集群。

2.BayModel

Baymodel是集群配置模板,保障多级群创建时配置数据一致性。OpenStack采用Flavor定义虚拟机或者物理机的规格,在Magnum中则采用BayModel定义Docker集群的规格,如集群管理节点的Flavor,计算节点的Flavor等。

3.节点

表征一个物理机或者虚拟机机。

4.Pod

事实上,Pod是从Kubernets引入的一个概念。Pod是Kubernetes的基本调度单元。业务相关的多个容器组成一个Pod,部署在一个物理节点上。如对于互联网应用,可以将Web前端、应用服务器、后端数据库等分别运行在容器中,并组成一个Pod。Pod的初衷是希望可以简化部署和管理,同时Pod内的多个容器可以共享CPU、Volume、Network Namespace/IP和Port空间等资源。受Docker技术的限制,目前部分资源并不能在Pod内的多个业务相关容器间共享,但是Google正在朝这一方向努力。

5.服务

服务也是从Kubernetes引入的概念。服务是Kubernetes的基本操作单元,它对真实应用进行抽象,实现前端访问与后端应用的解耦。每个服务后端都有多个应用容器,对于一个前端请求,服务selector决定具体承接请求的应用容器。服务对外提供单一访问接口,前端无须了解后端如何运作,也不感知后端应用容器的故障、IP变化等,这给后端扩展和维护带来了很大的便利。

6.复制控制器(Replication Controller)

复制控制器从分布式应用高可用、可扩展性角度考虑,保证任何时刻Magnum集群中正在运行的Pod副本的数量。如果系统中Pod副本数量少于预设值,则复制控制器会对Pod进行复制,创建并启动新的Pod;反之,如果当前Pod数量大于预设值,则复制控制器会“杀死”多余的Pod。

复制控制器使用预定义的Pod模板创建Pod,而Pod在创建成功后,Pod与Pod模板之间的关联就解除了。修改Pod模板不会对Pod有任何影响。

复制控制器的主要用法如下。

(1)重调度

当节点故障时,复制控制器确保集群中运行态Pod的数量。

(2)弹性扩展

通过修改复制控制器的副本预设值,可以水平扩展或收缩运行态Pod规模。

(3)滚动升级

使用复制控制器逐个替换Pod版本,可以实现Pod的滚动升级。

7.容器(Container)

在Magnum中即为Docker容器。Magnum的逻辑架构如图12-14所示。

图12-14 Magnum的逻辑架构

图12-15和12-16更清晰地刻画了Magnum各逻辑概念在Bay中的具体映射。Magnum目前支持两个Bay:Kubernetes和Swarm,后续会增加对mesos的支持。Magnum通过swagger实现了一套Kubernetes API,可以通过Kubernets的Rest Api与后端的Kubernetes进行交互。同样的,Bay创建完成后,Magnum也可以选择与Swarm交互操纵Docker容器。

从图12-14可以看到,Magnum控制节点主要有两个部件:API服务器和Conductor。用户首先通过Magnum的Python客户端访问API Rest服务器,之后,请求通过AMQP消息队列发送到Conductor进程。API Rest服务器可水平扩展,支持以单进程或多进程形态运行。目前,Conductor仅限于单进程,开发者们正试图增强Conductor的可扩展性。Magnum Conductor进程连接到后端Kubernetes、Swarm API端点,交由后端Bay对象对请求进行处理。

Magnum的特点如下:

图12-15 Kubernetes Bay

图12-16 Docker Swarm Bay

1)对Bay、容器、节点、Pod和Service进行抽象。

2)将Kubernets和Docker作为后端容器技术进行集成。

3)与Keystone集成,支持多租户安全。

4)与Neutron集成,支持Kubernetes多租户网络安全。