APP下载

基于Docker的高校PaaS平台的设计与实现

2018-01-25缪伟宁罗予东刘锡锋张文敏肖振球

现代计算机 2017年36期
关键词:宿主端口容器

缪伟宁,罗予东,刘锡锋,张文敏,肖振球

(嘉应学院计算机学院,梅州 514015)

0 引言

随着人工智能、大数据和自动驾驶等技术的蓬勃发展,大众对计算机行业的关注持续高涨,各大高校随之也对计算机专业教育倾注了大量师资力量和硬件资源。然而,硬件设备(如服务器、计算机等)的丰富并不代表着硬件设备能得到有效的利用,以往使用Ghost软件对硬件设备进行管理的传统实验室管理方式[1]已经不再适用。

而且,在大部分高校相关计算机专业的教学环节中,往往需要机房提供统一的Linux环境进行相关实验,学生在学习完网页设计、网站开发等课程后往往有开设虚拟主机部署网站应用的需求。但是,大部分高校的计算机实验室要么是难以提供相应的服务,要么是提供的虚拟主机不仅配置低下难以满足实际需求,并且申请流程繁杂使学生望而却步;阿里云、腾讯云等国内的公有云计算厂商提供的服务虽然优质但往往需要昂贵的费用,师生难以负担。

Docker是PaaS供应商dotCloud开源的一个基于LXC(Linux Container)技术的容器引擎,实现了操作系统级的虚拟化,相比较于传统的虚拟化技术具有轻巧、秒级启动和节约内存等优点[2]。本项目团队采用平台即服务(PaaS,即 Platform-as-a-Service)的理念,通过设计及实现一个基于Docker的高校PaaS平台将高校富余的计算资源统一管理划分,将分散的用户应用集中起来,提高管理效率并节省在硬件上的费用,为师生提供优质、稳定、廉价的服务,作为解决上述实际问题的方法。

1 平台架构

平台由容器服务模块、模版管理模块、容器管理模块及监控日志模块四大模块组成,平台架构如图1所示。

图1 平台架构

(1)容器服务模块

容器服务模块主要用于为使用本PaaS平台的普通用户提供对个人容器的管理服务,包括创建容器、变更容器模版、启动暂停容器、调整容器参数及更改容器网络配置等。

(2)模板管理模块

每位普通用户创建容器时会从平台中选择系统管理员已经定制好的系统镜像作为容器的初始镜像,这种系统镜像称为本PaaS平台中的模板。系统管理员通过模板管理模块对模板的创建、模板的状态(开放/停用)、调整模板的初始性能参数及对模板进行更新。

(3)容器管理模块

系统管理员通过容器管理模块可对单个或多个容器进行管理,包括容器模版的更换、容器性能参数的调整、容器状态(启动/暂停)的改变以及容器网络参数的更改。

(4)监控日志模块

监控日志模块为系统管理员直观地提供了PaaS平台的运行情况及过往的日志,方便系统管理员及时对突发状况进行处理及溯源。

2 网络管理

2.1 Docker的网络模式

Docker为用户提供了以下四种网络模式,用户可在创建容器时通过命令行选项指定容器的网络模式[3]:

(1)host模式:通过端口映射,容器将自己的服务端口与宿主主机的端口绑定,用户通过宿主主机的端口访问相应的容器端口,从而得到相应的容器服务。

(2)container模式:在该模式下,新创建的容器与一个已经存在的容器共享网络。

(3)none模式:通过该种模式创建的容器未进行任何网络配置,需要用户自行对网络进行配置。

(4)bridge模式:默认模式。Docker会在宿主主机上创建一个名为docker0的虚拟网桥,该虚拟网桥起到一个软件交换机的作用,该虚拟网桥会为创建时未指定其它网络模式的容器的分配一个IP地址,形成宿主主机内的一个二层网络。在宿主主机开启NAT转发之后,容器即可正常访问互联网。

2.2 PaaS平台网络模式的选择

基于以下两个考量,本PaaS平台选择了host模式作为容器的网络模式:

(1)bridge模式适用于内部网络通信频繁、不向外部提供的容器。

(2)在全球IPv4地址枯竭[3]的大背景下,高校拥有的少量的公网IPv4地址难以满足大量用户的需求。

(3)host模式便于系统管理员对每个容器提供的服务进行监控,便于安全人员统一对外部攻击进行防御。

此外,为了避免非知名端口号对用户造成的困扰,本PaaS平台参考文献中提出的域名-应用解析机制[4]形成了如图2所示的网络模型。在此网络模型中,jyueka.com这个域名的所有子域名均指向宿主主机。当外部访问到达宿主主机的80端口时,反向代理组件检查访问的HTTP头,在配置中检索域名对应的宿主主机的转发端口,检索到相应记录后,将请求转发到相应的宿主主机端口,从使相应的容器接受到请求,为用户提供服务;若反向代理未检索到域名对应的宿主主机的转发端口,则将请求丢弃或者是转发到默认端口进行处理。

图2 网络模型

3 简要实现

项目团队以目前比较热门的动态网站搭建方案LNMP[5](Linux+Nginx+MySQL+PHP),采用Think PHP Web开发框架,根据平台架构搭建了本PaaS平台的简要实现。该简要实现的核心为Docker和Nginx反向代理[6]功能。整个平台分为供用户使用的前台和系统管理员使用的后台:

(1)前台

用户登录到前台后仅需输入教务系统密码,即可完成身份验证并自动补充相关资料;用户完成身份验证后即可选择所需的系统镜像创建应用环境,创建容器的流程如图3所示;在创建好应用环境之后,用户即可根据系统给定的管理端口远程进入应用环境进行操作,该应用环境除了部分网络设定和一些操作限制外,与常用的Linux系统一致;并且,用户可为应用绑定自己的域名,通过域名直接访问到相应端口的服务,该功能是基于Nginx反向代理实现的。

(2)后台

系统管理员在登录后台后即可便捷的管理平台中的所有用户及查看平台中所有的系统镜像;系统管理员可创建指定内存大小的应用环境,并且可对已有的应用环境进行批量启动、停止、重启和删除的操作;平台提供了一个小型的CMS模块方便系统管理员发布相关信息指引用户进行操作;除此之外,为了增强后台的安全性,项目团队还实现了一套基于RBAC的权限控制机制[7],超级管理员可根据不同的需求建立不同权限范围的角色赋予管理员,实现对管理权限的精细划分。

4 结语

本文提出并实现了一个基于开源高级容器引擎Docker的用于支持高校计算机专业日常教学、实验和科研的PaaS平台,由于整个PaaS平台是基于Docker构建的,但是Docker存在运行操作系统平台单一、隔离机制相比KVM等虚拟化方案较差导致安全性较差、资源分配颗粒不够精细及网络管理机制薄弱的问题[8],而这些问题决定了基于Docker的PaaS平台的短板所在,项目团队将在后续的研究过程中尽可能地寻找各种方案解决这些局限性带来的问题,使整个平台更加高效、稳定。

图3 容器创建流程

[1]朱艳.浅谈高校计算机实验室管理与维护[J].山东青年政治学院学报,2010(5):156-157.

[2]李明,郭洋,蒋明.基于 Docker的虚拟化技术研究[J].中国新通信,2017,19(09):73-74.

[3]黄洁梅.IPv4地址枯竭问题的分析与校园网IPv6系统构建的研究[D].华南理工大学,2012.

[4]缪伟宁,罗予东,刘锡锋,等.一种带缓冲层的Web服务集群架构分层解决方案[J].现代计算机,2016(26):18-22.

[5]傅志铭.基于LNMP搭建Wordpress多站点网站群[J].电脑与信息技术,2017,25(2):47-48.

[6]冯贵兰,李正楠.Nginx反向代理在高校网站系统中的应用研究[J].网络安全技术与应用,2017(6):111-111.

[7]罗钧,赵传智,汪飞.基于RBAC模型的权限高效管理方法[J].计算机研究与发展,2016,53(5):1000-1008.

[8]徐锦韬.虚拟机、容器与Docker技术对比[J].科学与财富,2016,8(4).

猜你喜欢

宿主端口容器
一种有源二端口网络参数计算方法
一种端口故障的解决方案
龟鳖类不可能是新冠病毒的中间宿主
多按键情况下,单片机端口不足的解决方法
难以置信的事情
现有网络架构及迁移方案
液体对容器底及容器对桌面的压力和压强
取米
抓住自然宿主
绦虫大战,争夺宿主控制权