APP下载

基于Docker构建容器式沙箱服务器

2016-11-26

网络安全和信息化 2016年9期
关键词:宕机广电容器

引言:广电网络拥有大量专网用户,同时目前各类智慧城市项目欣欣向荣。随着业务的进一步发展,在我们机房中的服务器设备将会越来越多。不同服务器上运行的项目大小不等,不同项目的稳定性要求也不尽相同。本文以docker技术为例,探讨如何充分的、安全的、稳定的利用服务器资源。

背景

广电网络拥有大量的专网用户,面向不同的专网用户提供光缆专线、视频讯息、带宽出口、计算存储等不同的服务。同时随着“智慧中国”的提出,目前各类智慧城市项目欣欣向荣,广电网络也抓住机遇为智慧城市的建设提供自己的力量和服务。

随着业务的进一步发展,在我们机房中的服务器设备将会越来越多。有的业务仅仅需要提供数对光口和电口,而有的业务需要在我们机房中部署大量服务器以及存储矩阵。

服务器,我们采用windows server较少,一般通指运行Linux等服务器系统、拥有大量计算能力、存储能力、网络交换能力的电脑。我们在机房中使用的一般是刀片式服务器,为每个项目上线一组服务器。服务器硬件性能指标有多种,在我们工作中最关注的前三名,是存储、内存、计算三者。

图1 部分项目架构图

问题与需求

由于不同服务器上运行的项目大小不等,不同项目的稳定性要求也不尽相同。在规划和日常维护中,就经常会遇到一些问题。

1. 部分项目架构

我们有些项目,是不同厂商搭建的,相互之间平台不同,网络环境不同,故而采用了树形结构,如图1所示,各类服务器虽采用专用三层交换机直连核心路由设备,但实际上每个服务器各自运行一个业务。

2.硬件资源冗余情况

采用图1的架构,项目之间相互独立互不影响,但是在资源的使用效率方面存在一些浪费。即使为了以后项目的扩展等,必须冗余一部分,但个别项目的浪费颇为严重。

存储资源(硬盘塔等):对于一些视频监控的服务,服务器的存储资源基本上物尽其用,但是其他一些性能监控、测试机、web服务器等,基本上每台都有大量的浪费。

内存资源(RAM等):在济宁广电的一些项目中,服务器中一般配置16GB到96GB不等的内存,使用率依照不同的项目使用不均匀。部分业务随着时间流逝需要继续添加内存条,而有些项目使用的内存还没有其所在服务器系统本身用的多。

计 算 资 源(CPU、GPU等):作为一家传统视频供应商,计算资源在视频转码、监控、以及集中式服务(EBOSS、工程管理、财务等)中做到了最大化利用,但有些专网用户很少用到计算资源,甚至于只是用来存储一些文件,计算资源在其服务器上基本上处于闲置状态。

3.隐患与需求

采用上述架构,面临两个问题。除了上面提到的资源冗余情况外,系统的安全性也有一些隐患。

服务器宕机:当服务器宕机后,整个业务就停掉了,需要立马安排人手找备用的服务器并恢复业务。如果采用服务器双备份的形式,又会造成资源的浪费。

数据损坏:对用户来说,最重要的不是服务器偶尔的宕机,而是其私有数据的损坏。一旦用户的数据丢失,对我们运营商的负面影响是非常巨大的,轻则掉户,重则项目停掉,甚至于影响我们广电网络的品牌。在保证数据无损的情况下再考虑服务器宕机时的用户无感知切换。那么业务的热备份和方便移植、数据的异地备份和可恢复性就需要找办法来解决了。

4.Docker技术

Docker技术是目前业界非常热门的一门技术,拥有大量活跃开发者和社区资源。简单来讲,Docker是在容器层面实现的虚拟化。

物理机,也就是我们平常使用的电脑等设备,需要有真实的硬件资源、供电设备、输入输出设备。我们在上面安装好服务环境后,就只能用这一套环境了。

虚 拟 机,采 用 了Hypervisor或软件模拟等技术,是对硬件的虚拟,其虚拟了一套硬件平台。我们可以在一套物理机上虚拟多套设备,同时运行,但我们使用虚拟机的时候,仍然需要在这套虚拟的设备上分配硬件、安装系统、配置环境,不论项目占用多少资源,起码上面运行的windows或linux系统本身就占用大量资源。

Docker,采用了应用容器的技术。相对于虚拟机分钟级的开机,应用容器达到了秒级。而且其资源占用非常少,基本上项目需要多少资源就使用多少,不存在浪费,同时业界也在讨论利用Docker组建集群的多种方案,能完全满足本文提出的需求。

自主开发上线案例

以我在市公司搭建的流量监控项目为例,简单介绍两种利用Docker构建广电网络的容器式沙箱服务器的方法。截止2016年7月,此项目已经无人值守稳定的运行了一年半时间。

1.基本环境配置

在物理服务器上安装Docker平台。不同服务器命令不同,我使用ubuntu_amd64进行部署,以普通用户权限执行如下命令即可:

sudo apt-get install docker docker.io

有些平台还需要安装lxc-docker。

2.自动创建方式

我构建了对应的Docker容器,分发起来就非常便捷了,一条命令就可以,充分体现了容器式沙箱服务器的方便移植性:

docker run -d -p 80:80 -p 161:161 leniy/cacti

然后在浏览器打开服务器地址,就可以使用了,如图2和图3所示。

图2 项目欢迎页面

图3 docker-cacti项目

自动创建方式,主要是利用dockerfile调用自己编写的脚本,将需要的配置提前做好。用户只需要加载就可以快速部署了。本项目主要dockerfile如下:

FROM leniy/baseimage:latest

MAINTAINER Leniy Tsan <m@leniy.org>,Leniy Tsan<qianwei@zju.edu.cn>

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y snmpd cacti cacti-spine && aptget clean && rm -rf /tmp/* && rm -rf /var/tmp/* && rm -rf /var/lib/apt/lists/*

RUN mkdir /etc/service/mysqld /etc/service/snmpd /etc/service/apache2

伴随着经济的快速发展,市民需求层次不断提高,不仅仅局限于对物质的需求,更体现出对生活环境质量提升的内在需求渴望,在不断追求美化居家环境的同时,也在着力提升厨房的整洁、卫生和科学化。然而,人们在厨房精工细作时,时常会忽略一个严重的问题,即厨房食物垃圾或下角料的处理,从而造成生活垃圾的排放量急剧增长。

COPY service/mysqld.sh /etc/service/mysqld/run

COPY service/snmpd.sh /etc/service/snmpd/run

COPY service/apache2.sh /etc/service/apache2/run

RUN chmod +x /etc/service/mysqld/run /etc/service/snmpd/run /etc/service/apache2/run

COPY scripts/setmysqluser.sh /sbin/setmysqluser.sh

COPY scripts/configured_cacti.sql /var/backups/cacti_backups.sql

RUN chmod +x /sbin/setmysqluser.sh &&/bin/bash -c /sbin/setmysqluser.sh && rm /sbin/setmysqluser.sh

COPY config/cacti.conf/etc/dbconfig-common/cacti.conf

COPY config/debian.php /etc/cacti/debian.php

COPY config/snmpd.conf /etc/snmp/snmpd.conf

COPY config/spine.conf /etc/cacti/spine.conf

COPY scripts/sqlbackup.sh /sbin/sqlbackup

COPY scripts/sqlrestore.sh /sbin/sqlrestore

RUN chmod +x /sbin/sqlbackup /sbin/sqlrestore

VOLUME /var/backups

COPY website/* /var/www/html/

EXPOSE 80 161

CMD ["/sbin/my_init"]

项目相关代码我已经于2015年3月份开源于github上,这里不再占用篇幅赘述。

3.应用场景

随着智慧系列项目的增多,越来越多服务器被上线。但为了保证服务的稳定性,每一台服务器都留有相当一部分余量。但各个服务器运行的服务不同,在其上安装其他服务容易干扰已有项目。

此时可以在多台服务器上部署docker集群,当服务器空闲时,可以利用docker提供增值服务,某几台服务器满负荷运行时可以随时关停对应的节点,不会影响整个集群的业务。如此可对公司的服务器资源做到最大化使用。上部署docker集群,当服务器空闲时,可以利用docker提供增值服务,某几台服务器满负荷运行时可以随时关停对应的节点,不会影响整个集群的业务。如此可对公司的服务器资源做到最大化使用。N

猜你喜欢

宕机广电容器
容器倒置后压力压强如何变
关于无锡地铁梅园站计轴宕机的研究
探讨大数据在广电新媒体中的应用
岛内人口普查刚启动就遇“宕机”
难以置信的事情
基于集中采购的分布式系统的设计与实现
一起民航气象数据库系统进程频繁宕机故障分析及处理方法
广电新闻出版整合对广电业发展影响的思考
EPON技术在广电网络的应用
取米