EN

新闻中心

LOONGSON NEWS

栏目导航

龙芯向docker官方提交loongnix操作系统云镜像

发布时间:2017-10-17    已阅读:

一、云”势来袭
    龙芯顺应国家自主信息化推广的需求,在满足传统单机和少量服务器的部署模式的技术要求的基础上,投入云平台的研发计划。由于容器技术具有轻量、和CPU依赖小的优点,因此能够在龙芯平台上方便的得到移植。目前已经完成了一个完整的集群平台的搭建。该方案基于docker 1.12.2,集群管理工具使用docker官方支持的Swarm,图形化管理工具基于portainer,支持容器调度、自动扩容、监控管理、容灾恢复功能。
    Docker 是目前流行的开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个镜像中,这个镜像可以在网络上发布,通过虚拟化的手段在所有支持docker的平台上运行。容器是完全使用沙箱机制,相互之间不会有任何接口,从而保证容器内运行的应用的安全。
虚拟化技术(左)和Docker技术(右)的对比
二、docker官方社区上的龙芯镜像
    龙芯制作了一些标准的Loongnix操作系统镜像(基于Fedora21),已经提交docker官方(http://hub.docker.com),属于首次接受MIPS版本的操作系统docker镜像。用户只要能够访问互联网,就能够自动化的完成操作系统的拉取和运行。
三、龙芯云平台原型方案 
    Swarm是Docker公司在2014年12月初发布的一套工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in go, docker_py, docker,以及DockerUI、Portainer等Web工具)均可以直接与Swarm通信。Swarm几乎全部用Go语言来完成开发。Swarm 0.2相比0.1版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。
    Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。下面是Swarm的结构图:
基于Swarm的龙芯云平台架构图
    Swarm只是提供集群管理服务器,不提供可视化的管理页面,所有操作都需要使用命令行,因此学习成本较高。为了方便管理员的使用,Portainer是一款较为完善的docker容器管理平台,占用资源少,支持集群,支持权限分配。优点有:支持容器管理、镜像管理,轻量级,消耗资源少,基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。支持权限分配,支持集群。已经可以基本满足专有云的使用需求。下图是主界面:
龙芯云平台管理界面
    在一个页面中显示上百个机器的节点运行状态,以及每个机器上面运行的应用负载情况,方便管理人员对大规模集群的监视,在发生故障时能够快速定位。另外,也能够对机房中所有机器的使用情况有量化的了解,从而做出更合理的硬件投资。
集群节点运行状态监视
    在每个节点上,指定运行的应用程序,以及CPU、内存、网络、文件系统的资源。只需要几步操作,就能够分配一台新机器、安装指定的操作系统、部署应用,极大的加快应用程序的部署时间。
容器配置
    对容器运行状态显示一个详细的列表,包括物理节点、运行时间等。
容器配置
    对容器的运行负载状态进行监视,以图形化的报告进行展示。管理效率远远大于人工管理。
容器运行负载报告
    对操作系统和应用程序进行镜像化管理,把应用程序和依赖的库文件做为一个整体进行发行和部署,理论上可以使应用程序只发布一个二进制,就能够在所有龙芯操作系统上运行。可以从根本上消除操作系统碎片化问题对于应用开发者造成的负担。
操作系统镜像管理
    在集群管理工具的Web页面上就可以直接登录运行机器的命令行,不再像以前需要ssh方式登录,方便管理员对于上百台机器的快速管理。一切就像是在这台机器本地操作相同。
 
容器控制台
四、Swarm和Kubernetes的对比
    Swarm是Docker官方开发的原生集群工具,Kubernetes是Google开发的。两者在很多功能是等价的。经过我们的调研,Kubernetes相比之下设计更为复杂,适用于集群的精细管理,复杂的网络场景。同时,Kubernetes也有明显的劣势:学习曲线陡峭,同时运维的成本相对较高。
    针对龙芯当前的发展阶段和使用情况,总的来说,龙芯首先应该在私有云和行业环境中来使用,对容器的可靠性要求远低于公有云,因此swarm更轻量、易学习的优势就比较合适了。经过一段时间,如果是完全基于龙芯搭建公有云,或者需要提供高可靠服务的场景,Kubernetes可能更合适一些。
    总之,目前龙芯云平台基于的Swarm方案是足够满足一般的OA系统和信息处理应用的,并不一定使用Kubernetes。
五、
    龙芯云平台提供了全套移植过程的技术文档,做了一个较为完善的原型平台,我们点点鼠标即可轻松部署一个强大的管理docker平台。经过对docker管理平台的分析,大家一定有了自己的认识,有条件可以自己尝试下部署,如果有新的心得体会或者更好的平台记得反馈给我们,或者在龙芯论坛(http://ask.loongnix.org)上提供新的技术成果,一起把龙芯软件生态完善起来!
六、参考文献
    搭建龙芯云平台的具体过程,以可参考以下社区技术文档:
    l  (Docker系列之一)龙芯Fedora21平台上解决docker 1.12.2退出问题
    http://ask.loongnix.org/?/article/80
    l  (Docker系列之二)龙芯Fedora21平台制作docker镜像,并且解决vi乱码问题
    http://ask.loongnix.org/?/article/81
    l  (Docker系列之三)龙芯Fedora21平台制作feodra21-tools docker镜像
    http://ask.loongnix.org/?/article/82
    l  (Docker系列之四)龙芯Fedora21平台制作feodra21-apache-php-mysql 镜像
    http://ask.loongnix.org/?/article/85
    l  (Docker系列之五)龙芯Fedora21平台制作feodra21-loongson-app 镜像
    http://ask.loongnix.org/?/article/86
    l  (Docker系列之六)龙芯平台搭建容器管理工具dockerUI
    http://ask.loongnix.org/?/article/84
    l  (Docker系列之七)龙芯Fedora21平台上传docker镜像到docker hub
    http://ask.loongnix.org/?/article/87