① 在IT项目建设中,如何保证数据库安全性
#云原生背景#
云计算是信息技术发展和服务模式创新的集中体现,是信息化发展的重要变革和必然趋势。随着“新基建”加速布局,以及企业数字化转型的逐步深入,如何深化用云进一步提升云计算使用效能成为现阶段云计算发展的重点。云原生以其高效稳定、快速响应的特点极大地释放了云计算效能,成为企业数字业务应用创新的原动力,云原生进入快速发展阶段,就像集装箱加速贸易全球化进程一样,云原生技术正在助力云计算普及和企业数字化转型。
云原生计算基金会(CNCF)对云原生的定义是:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式编程API。
#云安全时代市场发展#
云安全几乎是伴随着云计算市场而发展起来的,云基础设施投资的快速增长,无疑为云安全发展提供土壤。根据 IDC 数据,2020 年全球云安全支出占云 IT 支出比例仅为 1.1%,说明目前云安全支出远远不够,假设这一比例提升至 5%,那么2020 年全球云安全市场空间可达 53.2 亿美元,2023 年可达 108.9 亿美元。
海外云安全市场:技术创新与兼并整合活跃。整体来看,海外云安全市场正处于快速发展阶段,技术创新活跃,兼并整合频繁。一方面,云安全技术创新活跃,并呈现融合发展趋势。例如,综合型安全公司 PaloAlto 的 Prisma 产品线将 CWPP、CSPM 和 CASB 三个云安全技术产品统一融合,提供综合解决方案及 SASE、容器安全、微隔离等一系列云上安全能力。另一方面,新兴的云安全企业快速发展,同时,传统安全供应商也通过自研+兼并的方式加强云安全布局。
国内云安全市场:市场空间广阔,尚处于技术追随阶段。市场规模上,根据中国信通院数据,2019 年我国云计算整体市场规模达 1334.5亿元,增速 38.6%。预计 2020-2022 年仍将处于快速增长阶段,到 2023 年市场规模将超过 3754.2 亿元。中性假设下,安全投入占云计算市场规模的 3%-5%,那么 2023 年中国云安全市场规模有望达到 112.6 亿-187.7 亿元。技术发展上,中国在云计算的发展阶段和云原生技术的程度上与海外市场还有一定差距。国内 CWPP 技术应用较为广泛,对于 CASB、CSPM 一些新兴的云安全技术应用较少。但随着国内公有云市场的加速发展,云原生技术的应用越来越广泛,我们认为CASB、SCPM、SASE 等新兴技术在国内的应用也将越来越广泛。
#云上安全呈原生化发展趋势#
云原生技术逐渐成为云计算市场新趋势,所带来的安全问题更为复杂。以容器、服务网格、微服务等为代表的云原生技术,正在影响各行各业的 IT 基础设施、平台和应用系统,也在渗透到如 IT/OT 融合的工业互联网、IT/CT 融合的 5G、边缘计算等新型基础设施中。随着云原生越来越多的落地应用,其相关的安全风险与威胁也不断的显现出来。Docker/Kubernetes 等服务暴露问题、特斯拉 Kubernetes 集群挖矿事件、Docker Hub 中的容器镜像被“投毒”注入挖矿程序、微软 Azure 安全中心检测到大规模 Kubernetes 挖矿事件、Graboid 蠕虫挖矿传播事件等一系列针对云原生的安全攻击事件层出不穷。
从各种各样的安全风险中可以一窥云原生技术的安全态势,云原生环境仍然存在许多安全问题亟待解决。在云原生技术的落地过程中,安全是必须要考虑的重要因素。
#云原生安全的定义#
国内外各组织、企业对云原生安全理念的解释略有差异,结合我国产业现状与痛点,云原生与云计算安全相似,云原生安全也包含两层含义:“面向云原生环境的安全”和“具有云原生特征的安全”。
面向云原生环境的安全,其目标是防护云原生环境中的基础设施、编排系统和微服务的安全。这类安全机制,不一定具备云原生的特性(比如容器化、可编排),它们可以是传统模式部署的,甚至是硬件设备,但其作用是保护日益普及的云原生环境。
具有云原生特征的安全,是指具有云原生的弹性敏捷、轻量级、可编排等特性的各类安全机制。云原生是一种理念上的创新,通过容器化、资源编排和微服务重构了传统的开发运营体系,加速业务上线和变更的速度,因而,云原生系统的种种优良特性同样会给安全厂商带来很大的启发,重构安全产品、平台,改变其交付、更新模式。
#云原生安全理念构建#
为缓解传统安全防护建设中存在的痛点,促进云计算成为更加安全可信的信息基础设施,助力云客户更加安全的使用云计算,云原生安全理念兴起,国内外第三方组织、服务商纷纷提出以原生为核心构建和发展云安全。
Gartner提倡以云原生思维建设云安全体系
基于云原生思维,Gartner提出的云安全体系覆盖八方面。其中,基础设施配置、身份和访问管理两部分由云服务商作为基础能力提供,其它六部分,包括持续的云安全态势管理,全方位的可视化、日志、审计和评估,工作负载安全,应用、PaaS 和 API 安全,扩展的数据保护,云威胁检测,客户需基于安全产品实现。
Forrester评估公有云平台原生安全能力
Forrester认为公有云平台原生安全(Public cloud platform native security, PCPNS)应从三大类、37 个方面去衡量。从已提供的产品和功能,以及未来战略规划可以看出,一是考察云服务商自身的安全能力和建设情况,如数据中心安全、内部人员等,二是云平台具备的基础安全功能,如帮助和文档、授权和认证等,三是为用户提供的原生安全产品,如容器安全、数据安全等。
安全狗以4项工作防护体系建设云原生安全
(1)结合云原生技术的具体落地情况开展并落实最小权限、纵深防御工作,对于云原生环境中的各种组成部分,均可贯彻落实“安全左移”的原则,进行安全基线配置,防范于未然。而对于微服务架构Web应用以及Serverless应用的防护而言,其重点是应用安全问题。
(2)围绕云原生应用的生命周期来进行DevSecOps建设,以当前的云原生环境的关键技术栈“K8S + Docker”举例进行分析。应该在容器的全生命周期注重“配置安全”,在项目构建时注重“镜像安全”,在项目部署时注重“容器准入”,在容器的运行环境注重云计算的三要素“计算”“网络”以及“存储”等方面的安全问题。
(3)围绕攻击前、中、后的安全实施准则进行构建,可依据安全实施准则对攻击前、中、后这三个阶段开展检测与防御工作。
(4)改造并综合运用现有云安全技术,不应将“云原生安全”视为一个独立的命题,为云原生环境提供更多支持的主机安全、微隔离等技术可赋能于云原生安全。
#云原生安全新型风险#
云原生架构的安全风险包含云原生基础设施自身的安全风险,以及上层应用云原生化改造后新增和扩大的安全风险。云原生环境面临着严峻的安全风险问题。攻击者可能利用的重要攻击面包括但不限于:容器安全、编排系统、软件供应链等。下面对重要的攻击面安全风险问题进行梳理。
#云原生安全问题梳理#
问题1:容器安全问题
在云原生应用和服务平台的构建过程中,容器技术凭借高弹性、敏捷的特性,成为云原生应用场景下的重要技术支撑,因而容器安全也是云原生安全的重要基石。
(1)容器镜像不安全
Sysdig的报告中提到,在用户的生产环境中,会将公开的镜像仓库作为软件源,如最大的容器镜像仓库Docker Hub。一方面,很多开源软件会在Docker Hub上发布容器镜像。另一方面,开发者通常会直接下载公开仓库中的容器镜像,或者基于这些基础镜像定制自己的镜像,整个过程非常方便、高效。然而,Docker Hub上的镜像安全并不理想,有大量的官方镜像存在高危漏洞,如果使用了这些带高危漏洞的镜像,就会极大的增加容器和主机的入侵风险。目前容器镜像的安全问题主要有以下三点:
1.不安全的第三方组件
在实际的容器化应用开发过程当中,很少从零开始构建镜像,而是在基础镜像之上增加自己的程序和代码,然后统一打包最终的业务镜像并上线运行,这导致许多开发者根本不知道基础镜像中包含多少组件,以及包含哪些组件,包含的组件越多,可能存在的漏洞就越多。
2.恶意镜像
公共镜像仓库中可能存在第三方上传的恶意镜像,如果使用了这些恶意镜像来创建容器后,将会影响容器和应用程序的安全
3.敏感信息泄露
为了开发和调试的方便,开发者将敏感信息存在配置文件中,例如数据库密码、证书和密钥等内容,在构建镜像时,这些敏感信息跟随配置文件一并打包进镜像,从而造成敏感信息泄露
(2)容器生命周期的时间短
云原生技术以其敏捷、可靠的特点驱动引领企业的业务发展,成为企业数字业务应用创新的原动力。在容器环境下,一部分容器是以docker的命令启动和管理的,还有大量的容器是通过Kubernetes容器编排系统启动和管理,带来了容器在构建、部署、运行,快速敏捷的特点,大量容器生命周期短于1小时,这样一来容器的生命周期防护较传统虚拟化环境发生了巨大的变化,容器的全生命周期防护存在很大变数。对防守者而言,需要采用传统异常检测和行为分析相结合的方式,来适应短容器生命周期的场景。
传统的异常检测采用WAF、IDS等设备,其规则库已经很完善,通过这种检测方法能够直观的展示出存在的威胁,在容器环境下,这种方法仍然适用。
传统的异常检测能够快速、精确地发现已知威胁,但大多数未知威胁是无法通过规则库匹配到的,因而需要通过行为分析机制来从大量模式中将异常模式分析出来。一般来说,一段生产运营时间内的业务模式是相对固定的,这意味着,业务行为是可以预测的,无论启动多少个容器,容器内部的行为总是相似的。通过机器学习、采集进程行为,自动构建出合理的基线,利用这些基线对容器内的未知威胁进行检测。
(3)容器运行时安全
容器技术带来便利的同时,往往会忽略容器运行时的安全加固,由于容器的生命周期短、轻量级的特性,传统在宿主机或虚拟机上安装杀毒软件来对一个运行一两个进程的容器进行防护,显示费时费力且消耗资源,但在黑客眼里容器和裸奔没有什么区别。容器运行时安全主要关注点:
1.不安全的容器应用
与传统的Web安全类似,容器环境下也会存在SQL注入、XSS、RCE、XXE等漏洞,容器在对外提供服务的同时,就有可能被攻击者利用,从而导致容器被入侵
2.容器DDOS攻击
默认情况下,docker并不会对容器的资源使用进行限制,默认情况下可以无限使用CPU、内存、硬盘资源,造成不同层面的DDOS攻击
(4)容器微隔离
在容器环境中,与传统网络相比,容器的生命周期变得短了很多,其变化频率也快很多。容器之间有着复杂的访问关系,尤其是当容器数量达到一定规模以后,这种访问关系带来的东西向流量,将会变得异常的庞大和复杂。因此,在容器环境中,网络的隔离需求已经不仅仅是物理网络的隔离,而是变成了容器与容器之间、容器组与宿主机之间、宿主机与宿主机之间的隔离。
问题2:云原生等保合规问题
等级保护2.0中,针对云计算等新技术、新应用领域的个性安全保护需求提出安全扩展要求,形成新的网络安全等级保护基本要求标准。虽然编写了云计算的安全扩展要求,但是由于编写周期很长,编写时主流还是虚拟化场景,而没有考虑到容器化、微服务、无服务等云原生场景,等级保护2.0中的所有标准不能完全保证适用于目前云原生环境;
通过安全狗在云安全领域的经验和具体实践,对于云计算安全扩展要求中访问控制的控制点,需要检测主机账号安全,设置不同账号对不同容器的访问权限,保证容器在构建、部署、运行时访问控制策略随其迁移;
对于入侵防范制的控制点,需要可视化管理,绘制业务拓扑图,对主机入侵进行全方位的防范,控制业务流量访问,检测恶意代码感染及蔓延的情况;
镜像和快照保护的控制的,需要对镜像和快照进行保护,保障容器镜像的完整性、可用性和保密性,防止敏感信息泄露。
问题3:宿主机安全
容器与宿主机共享操作系统内核,因此宿主机的配置对容器运行的安全有着重要的影响,比如宿主机安装了有漏洞的软件可能会导致任意代码执行风险,端口无限制开放可能会导致任意用户访问的风险。通过部署主机入侵监测及安全防护系统,提供主机资产管理、主机安全加固、风险漏洞识别、防范入侵行为、问题主机隔离等功能,各个功能之间进行联动,建立采集、检测、监测、防御、捕获一体化的安全闭环管理系统,对主机进行全方位的安全防护,协助用户及时定位已经失陷的主机,响应已知、未知威胁风险,避免内部大面积主机安全事件的发生。
问题4:编排系统问题
编排系统支撑着诸多云原生应用,如无服务、服务网格等,这些新型的微服务体系也同样存在着安全问题。例如攻击者编写一段代码获得容器的shell权限,进而对容器网络进行渗透横移,造成巨大损失。
Kubernetes架构设计的复杂性,启动一个Pod资源需要涉及API Server、Controller、Manager、Scheler等组件,因而每个组件自身的安全能力显的尤为重要。API Server组件提供的认证授权、准入控制,进行细粒度访问控制、Secret资源提供密钥管理及Pod自身提供安全策略和网络策略,合理使用这些机制可以有效实现Kubernetes的安全加固。
问题5:软件供应链安全问题
通常一个项目中会使用大量的开源软件,根据Gartner统计至少有95%的企业会在关键IT产品中使用开源软件,这些来自互联网的开源软件可能本身就带有病毒、这些开源软件中使用了哪些组件也不了解,导致当开源软件中存在0day或Nday漏洞,我们根本无法获悉。
开源软件漏洞无法根治,容器自身的安全问题可能会给开发阶段带的各个过程带来风险,我们能做的是根据SDL原则,从开发阶段就开始对软件安全性进行合理的评估和控制,来提升整个供应链的质量。
问题6:安全运营成本问题
虽然容器的生命周期很短,但是包罗万象。对容器的全生命周期防护时,会对容器构建、部署、运行时进行异常检测和安全防护,随之而来的就是高成本的投入,对成千上万容器中的进程行为进程检测和分析,会消耗宿主机处理器和内存资源,日志传输会占用网络带宽,行为检测会消耗计算资源,当环境中容器数量巨大时,对应的安全运营成本就会急剧增加。
问题7:如何提升安全防护效果
关于安全运营成本问题中,我们了解到容器安全运营成本较高,我们该如何降低安全运营成本的同时,提升安全防护效果呢?这就引入一个业界比较流行的词“安全左移”,将软件生命周期从左到右展开,即开发、测试、集成、部署、运行,安全左移的含义就是将安全防护从传统运营转向开发侧,开发侧主要设计开发软件、软件供应链安全和镜像安全。
因此,想要降低云原生场景下的安全运营成本,提升运营效率,那么首先就要进行“安全左移”,也就是从运营安全转向开发安全,主要考虑开发安全、软件供应链安全、镜像安全和配置核查:
开发安全
需要团队关注代码漏洞,比如使用进行代码审计,找到因缺少安全意识造成的漏洞和因逻辑问题造成的代码逻辑漏洞。
供应链安全
可以使用代码检查工具进行持续性的安全评估。
镜像安全
使用镜像漏洞扫描工具持续对自由仓库中的镜像进行持续评估,对存在风险的镜像进行及时更新。
配置核查
核查包括暴露面、宿主机加固、资产管理等,来提升攻击者利用漏洞的难度。
问题8:安全配置和密钥凭证管理问题
安全配置不规范、密钥凭证不理想也是云原生的一大风险点。云原生应用会存在大量与中间件、后端服务的交互,为了简便,很多开发者将访问凭证、密钥文件直接存放在代码中,或者将一些线上资源的访问凭证设置为弱口令,导致攻击者很容易获得访问敏感数据的权限。
#云原生安全未来展望#
从日益新增的新型攻击威胁来看,云原生的安全将成为今后网络安全防护的关键。伴随着ATT&CK的不断积累和相关技术的日益完善,ATT&CK也已增加了容器矩阵的内容。ATT&CK是对抗战术、技术和常识(Adversarial Tactics, Techniques, and Common Knowledge)的缩写,是一个攻击行为知识库和威胁建模模型,它包含众多威胁组织及其使用的工具和攻击技术。这一开源的对抗战术和技术的知识库已经对安全行业产生了广泛而深刻的影响。
云原生安全的备受关注,使ATTACK Matrix for Container on Cloud的出现恰合时宜。ATT&CK让我们从行为的视角来看待攻击者和防御措施,让相对抽象的容器攻击技术和工具变得有迹可循。结合ATT&CK框架进行模拟红蓝对抗,评估企业目前的安全能力,对提升企业安全防护能力是很好的参考。
② 为什么说 Linux 容器将颠覆虚拟化
Mark Shuttleworth在十几年前发起了Ubuntu inux项目,现在他在Canonical(一家提供Ubuntu支持服务的公司)主管战略和用户体验。他认为新一轮的服务器虚拟化浪潮与前一轮不太相同。
在他的指导下,Canonical和其他的Linux机构一样,在其发布版本中先是Xen Hypervisor,接着是KVM然后继续支持Docker,成功地赶上了虚拟化的几轮潮流。当Eucalyptus是用的可计算云控制器时该公司成为排头兵,而当业界开始支持另一个开源项目- OpenStack而且OpenStack做为Linux的首选被部署到多个公有云上时,他们也迅速地转向OpenStack。Docker及其软件容器方式完全类似于虚拟化并且让云计算服务商为之癫狂,但是让Shuttleworth兴奋的是另一种称为Linux容器 (缩写为LXC)的技术及与之相应的称为LXD的Hypervisor。LXD是由Canonical开发的一个后台进程来管理这些容器并且提供了或多或少与开源的Xen及KVM、微软的Hyper-V或者VMware的ESXi这些服务器虚拟化Hypervisor类似的功能。
Shuttlworth向The Next Platform表示:“我们相信这是十年来对Linux虚拟化最大的突破,你可以看到我们对此是多么兴奋”。
LXC容器的想法和初期的工作都是由Google完成的,容器化应用程序已经在其基础架构上运行了超过十年时间,而且据说每天会启动超过20亿的容器。Canonical和其他大约80个组织已经开始致力于LXC的商业化,因为LXC最初并不是一个对用户很友好的技术。商业化是为了让其具有常见服务器虚拟化的观感和体验,尽管它使用的是非常不同且简化的技术。
“对于容器,很多人并不了解的是我们用来配置容器的系统其实可以用很多种方法来做虚拟或者模拟”,Shuttleworth解释说”有时你希望模仿看起和Docker类似的东西,而有时你又想模拟其他的东西。就LXC而言,我们想要创建容器的途径是创建假想的主机,而不是运行操作系统的主机或者构成一个操作系统的所有进程。这与Docker所作的完全不同,虽然它们都使用相同的底层原语,但是创建了不同的的东西。LXC的宗旨是不借助硬件虚拟化来创建虚拟机“
说起Docker,它在早期是基于LXC的但是现在它有了自己的抽象层,它更像一个运行在文件系统之上的单个进程,就好比你启动了主机但并没有运行 Init和所有构成操作系统的进程而是直接运行数据库或者其他的东西,然后在一台主机上启动多个容器并把它们一起置于其中。通过LXC及其LXD守护进程,Canonical希望保持拥有一个完整Debian、CentOS、Ubuntu或其他Linux操作系统的感观。
“在LXC 1.0中,常见的情景是程序员说:“给我创建这个容器”。现在我们做法接收代码然后将其纳入LXD守护进程来管理,因此并不需要由程序员去创建每一个容器,我可以拥有上百个虚拟机并且与LXD守护进程进行通信来进行统一管理,因此我所拥有的虚拟机集群与你使用VMware ESXi hypervisor所构建的类似。把LXC打包到一个守护进程中就使得它变成了一个hypervisor。什么是ESXi?它基本上是一个操作系统,你可以通过网络跟它通信并且让它给你创建一个虚拟机。通过LXD,你可以跟一个运行LXC的主机说给我创建一个运行CentOS的新容器。这成为一个集群的导引机制。”
LXD也提供了另一个重要功能:它是运行的在两台不同物理主机上的一个软件,从而使得LXC实例能够在主机间在线地迁移。
程序员都追求简洁而且他们喜欢保持事物有序和整洁。在某种程度上,只是因为硬件虚拟化的成本很高就不得不把程序部署到多个主机上已经成了一个痛点。现在,你可以快速地在一台主机上运行多个程序而没有这些开销并且始终保持他们的原始状态和隔离。
本周,Canonical发布了首次包括LXD hypervisor的LXC 2.0 beta版本。在本月将要发布的Ubuntu Server 15.10的更新中就包括这两个组件,而Canonical也通过统一步骤把LXC 2.0反推入Ubuntu Server 14.04 LTS(LTS是Long Term Support的缩写)的服务器版本。LTS版本每两年发布一次而且具有五年的支持生命期。由于它的稳定性有保证,所以70%的客户都在生产环境中运行 Ubuntu服务器的LTS版本。据Shuttleworth说,包含LXD hypervisor的LXC 2.0生产级别版本将在明年亮相,根据命名方案的建议可能就在二月或者三月最迟到4月就与新的企业级版本 – Ubuntu Server 16.04 LTS一同发布。负责Ubuntu产品和战略的Dustin Kirklan对TheNext Platform说,从下一个LTS版本开始,在每一个Ubuntu Server中就会缺省安装LXC和LXD组件,这样每个主机都可以运行几十到几百个容器 –IBM在最大的使用POWER处理器的服务器上甚至可以运行数千个容器。
相比于依靠硬件虚拟化的常规虚拟机,LXC容器具有两个巨大的优势:一台主机上可以打包的容器数量和这些容器的启动速度。尽管为了在一台硬件上用不同的容器运行不同的Linux需要一些额外的工作,但是由于LXC其实就是用Linux运行Linux,所以不需要虚拟什么。
“这在性能方面前进了一步,而在密度方面的改进则是巨大的”,Shuttleworth无不得意地说:“而这对于低延迟、实时型的应用程序具有显着的改善。在云计算环境中这类事情都变得容易处理了,当然过去他们可不是这样。如果你的云平台运行了LXC,很快高性能计算可以搞定了、云计算平台上的实时计算也可以搞定了,而且如果你是一个需要低传输延迟的电信运营商的话,那么NFV(网络功能虚拟化)也可以搞定了。在这些需要巨大资金投入的领域,人们真的希望使用云计算和虚拟化,而LXC使其成为可能。这是非常令人振奋的”
Shuttleworth说LXC容器在密度方面可以达到诸如EXSi、Xen或KVM这类使用虚拟机的hypervisor的14倍,而且 LXC和LXD组合在开销方面却只占基于硬件虚拟化的Hypervisor的20%不到。对于空闲的负载而言,VM和LXC容器就和大多数VM和物理主机所作的一样大部分时间在等待。对于繁忙的VM而言,LXC容器则能够提供明显要好得多的I/O吞吐量和更低的延迟。因此,对于空闲的主机你专注于整合,而对于繁忙的主机你专注于吞吐量和延迟。而且由于Hypervisor和VM的特定开销可以释放出来用于实际工作,所以你可以得到大约20%的性能提升。
现在已经开始对LXC及LXD组合进行基准测试。在上周东京召开的OpenStack峰会上,Canonical LXD开发团队的Tycho Andersen展示了一些在虚拟化环境中的测试基准,其中一个是使用Hadoop TeraSort测试而另一个是对Cassandra NoSQL数据存储的压力测试。这两个测试中,主机运行的是在峰会期间发布的最新OpenStack “Liberty”云控制器和同样刚发布的Ubuntu 15.10. 15.10,它既有KVM也有LXD hypervisor和各自的虚拟机和容器。这些服务器配备了24核和48GB内存,一个控制器负责管理OpenStack而其他三台用作基本的计算节点。
在TeraSort测试开始的时候,在三台主机上LXC和KVM的表现基本一致,但是当OpenStack/Hadoop集群中的主机数量随着数据集的规模增长后,两种不同的虚拟化手段在性能方面的差异开始显现。
③ 容器云技术的优势是什么
1.容器云技术在计算形态上面是一种轻量级的虚拟化技术,是进程级的虚拟化形态封装,容器的启动和部署的迅速,可以在应用层面按照资源进行快速的部署和调度的,这样生命周期的变化速度也就很快了。
2.它是可以移植的一种技术,能够降低成本。当前容器云技术的现代形式,主要是体现在应用程序容器化和系统容器化方面。这两种形式的容器都是可以让IT团队从底层的架构中抽象出程度代码的,这样就可以实现跨各种部署环境的可移植性了。
3.容器一般是位于物理服务器以及主机操作系统之上的。它可以通过单个的操作系统安装去运行多个工作环境,因此容器是非常轻的,它们只有几兆的字节,只需要几秒钟就可以启动了。另外,内存,存储和CPU效率的提高,是容器云技术的关键优势。它可以在同一基础架构上面支持更多的容器,这样就可以减少管理方面的开支了。
国内做的比较好的我推荐时速云,他们服务过500+的中大型客户,不仅涵盖容器云 PaaS、DevOps、微服务、ServiceMesh、API 网关等核心云原生产品,还可以为企业提供数据开发、数据治理、数据资产、数据服务等数据能力。感兴趣的可以去了解一下!
④ 如何使用OpenStack,Docker和Spark打造一个云服务
IBM中国研究院高级研究员陈冠诚主要从事Big Data on Cloud,大数据系统性能分析与优化方面的技术研发。负责和参与过SuperVessel超能云的大数据服务开发,Hadoop软硬件协同优化,MapRece性能分析与调优工具,高性能FPGA加速器在大数据平台上应用等项目。在Supercomputing(SC),IEEE BigData等国际顶级会议和期刊上发表过多篇大数据数据处理技术相关的论文,并拥有八项大数据领域的技术专利。曾在《程序员》杂志分享过多篇分布式计算,大数据处理技术等方面的技术文章。以下为媒体针对陈冠诚的专访:
问:首先请介绍下您自己,以及您在Spark 技术方面所做的工作。
陈冠诚:我是IBM中国研究院的高级研究员,大数据云方向的技术负责人。我们围绕Spark主要做两方面的事情:第一,在IBM研究院的SuperVessel公有云上开发和运维Spark as a Service大数据服务。第二,在OpenPOWER架构的服务器上做Spark的性能分析与优化。
问:您所在的企业是如何使用Spark 技术的?带来了哪些好处?
陈冠诚:Spark作为新一代的大数据处理引擎主要带来了两方面好处:
相比于MapRece在性能上得到了很大提升。
在一个统一的平台上将批处理、SQL、流计算、图计算、机器学习算法等多种范式集中在一起,使混合计算变得更加的容易。
问:您认为Spark 技术最适用于哪些应用场景?
陈冠诚:大规模机器学习、图计算、SQL等类型数据分析业务是非常适合使用Spark的。当然,在企业的技术选型过程中,并不是说因为Spark很火就一定要使用它。例如还有很多公司在用Impala做数据分析,一些公司在用Storm和Samaza做流计算,具体的技术选型应该根据自己的业务场景,人员技能等多方面因素来做综合考量。
问:企业在应用Spark 技术时,需要做哪些改变吗?企业如果想快速应用Spark 应该如何去做?
陈冠诚:企业想要拥抱Spark技术,首先需要技术人员改变。是否有给力的Spark人才会是企业能否成功应用Spark最重要的因素。多参与Spark社区的讨论,参加Spark Meetup,给upstrEAM贡献代码都是很好的切入方式。如果个人开发者想快速上手Spark,可以考虑使用SuperVessel免费的Spark公有云服务,它能快速创建一个Spark集群供大家使用。
问:您所在的企业在应用Spark 技术时遇到了哪些问题?是如何解决的?
陈冠诚:我们在对Spark进行性能调优时遇到很多问题。例如JVM GC的性能瓶颈、序列化反序列化的开销、多进程好还是多线程好等等。在遇到这些问题的时候,最好的方法是做好Profiling,准确找到性能瓶颈,再去调整相关的参数去优化这些性能瓶颈。
另一方面,我们发现如果将Spark部署在云环境里(例如OpenStack管理的Docker Container)时,它的性能特征和在物理机上部署又会有很大的不同,目前我们还在继续这方面的工作,希望以后能有机会跟大家继续分享。
问:作为当前流行的大数据处理技术,您认为Spark 还有哪些方面需要改进?
陈冠诚:在与OpenStack这样的云操作系统的集成上,Spark还是有很多工作可以做的。例如与Docker Container更好的集成,对Swift对象存储的性能优化等等。
问:您在本次演讲中将分享哪些话题?
陈冠诚:我将分享的话题是“基于OpenStack、Docker和Spark打造SuperVessel大数据公有云”:
随着Spark在2014年的蓬勃发展,Spark as a Service大数据服务正成为OpenStack生态系统中的新热点。另一方面,Docker Container因为在提升云的资源利用率和生产效率方面的优势而备受瞩目。在IBM中国研究院为高校和技术爱好者打造的SuperVessel公有云中,我们使用OpenStack、Docker和Spark三项开源技术,在OpenPOWER服务器上打造了一个大数据公有云服务。本次演讲我们会向大家介绍如何一步一步使用Spark、Docker和OpenStack打造一个大数据公有云,并分享我们在开发过程中遇到的问题和经验教训。
问:哪些听众最应该了解这些话题?您所分享的主题可以帮助听众解决哪些问题?
陈冠诚:对如何构造一个大数据云感兴趣的同学应该会对这个话题感兴趣,开发SuperVessel的Spark as a Service服务过程中我们所做的技术选型、架构设计以及解决的问题应该能对大家有所帮助
⑤ 自学Java如何入门
自学Java看这一篇就够啦!Java学习路线图分享给你,跟着学习吧!
一、Java基础
⑥ 基于容器的DevOps平台应该提供哪些功能
“DevOps”提倡开发和IT运维之间的高度协同,它拓展和完善了持续集成和发布流程,从而能够提高复杂的分布式应用的开发和运维效率,加快交付速度。DevOps的理论已经响彻业界,快节奏的互联网公司大都已经按照不同的方式在公司内部的研发体系中引入了DevOps流程,它的效果也已经得到了实践验证。公有云巨头们都了提供DevOps服务,例如亚马逊的AWS OpsWorks、阿里云的CRP持续交付平台、网易蜂巢等;一些新兴的创业公司例如时速云、DaoCloud、灵雀云等也都提供了基于容器云平台的DevOps服务解决方案。
然而,DevOps只是一个方法、过程的统称。 运维人员可以自己编写脚本或者使用Puppet、chef、Docker等自动化配置工具实现DevOps的流程(我们的项目就是通过自己攒的工具实现了DevOps流程),也可以由专门的平台提供全套DevOps解决方案,但是这个平台该有什么具体功能、该如何实现,并没有标准答案。
本章节将简要对比分析业内的各平台提供的DevOps平台服务功能及实现方式,并且依据自身项目的实践经验,梳理出适合支持DevOps流程的、比较实用且适合为企业提供容器服务的平台需求。
几家DevOps相关平台的对比
如表所示简要对比了阿里云CRP平台、阿里云容器服务、网易蜂巢、时速云、DaoCloud几家:
阿里云CRP(持续发布平台):主要作用是在Dev阶段提供快速构建、发布功能,最终能直接将开发成果发布到阿里云ESC上,Ops部分就由ESC接管了。具体来说平台提供项目代码管理、代码构建、持续集成、持续发布功能,其功能亮点在于可视化的CI、CD流程,代替了Jenkins的部分功能,不过个人感觉简化了的可视化发布向导,方便得同时有失灵活性。
阿里云容器服务平台、时速云和DaoCloud差不多:包括构建源代码将应用打包成容器镜像、将容器部署到云端、镜像仓库管理、服务编排、平台对运行的容器及集群进行调度管理、支持负载均衡及数据卷等功能。可以说把Dev阶段和Ops阶段连接起来了,但是更侧重于Ops阶段的容器管理。
网易蜂巢:功能纯粹只管Ops阶段,支持用户把镜像提交到镜像仓库,然后在平台上部署容器、并提供容器调度及负载均衡等操作。
容器服务平台针对运维阶段应该具备的重点功能:
Google在很早以前就已经把容器应用到生产运维环境了,目前,包括腾讯、新浪、京东在内越来越多的国内互联网企业已经在生产环境中受益于容器的轻量和敏捷性,大幅提高了运维资源使用效率,据京东员工发布的技术文章提到:今年618核心业务都容器化了。因而主流的容器服务平台都在容器弹性调度和容器集群管理方面下功夫,具体来说对于运维的支持以下功能是必不可少的:
i. 镜像仓库:镜像仓库中需要具有较为丰富的基本镜像;并且支持用户高速的上传、下载镜像,并且镜像仓库需要有一定的权限控制;
ii. 容器调度管理:容器实例的启、停;容器集群资源管理;弹性伸缩;实例的failover;安全控制等。
iii. 相关容器组合的编排管理:包括容器的跨节点关联、涉及到网络和数据共享等功能;容器集的动态生命周期和横向扩展等功能,可实现例如数据库集群部署等复杂的运行环境部署和管理。
iv. 服务发现相关功能:可以让一个应用或者组件动态发现其运行环境以及其它应用或组件的信息,主要场景如负载均衡、环境变量的更新等功能。
v. 运行环境的日志、监控和告警:为保证生产环境正常运行,容器实例及其主机系统级别的日志、监控和告警功能是必不可少的。
容器服务平台针对开发阶段应该具备的重点功能:
随着容器技术的兴起,近1-2年容器技术大会也频繁的召开,根据各家互联网公司的积极分享的实践经验可知:容器重新定义了交付方式,大多数互联网公司已经大规模的把容器引入了开发环节,采用容器交付应用。实践证明:容器的可移植性和良好的隔离性,能够充分提高开发和发布效率。因为各家公司软件开发使用的开发工具和开发流程不同,具体在开发阶段基于容器实现快速开发、部署的功能并没有标准化。这里梳理一下开发阶段的容器服务平台应该具有的功能:
i. 提供基础的开发环境,使得开发者只需要关注代码开发减少相关工具的安装和配置工作量:例如本项目用到的Git库、Docker镜像仓库、禅道、wiki、jenkins等工具;
ii. 利用自动化工具及持续集成工具如Puppet、chef或者原生的脚本、jenkins、Dockerfile等工具,实现自动化的持续集成和持续发布,简化运维工作;
iii. 提供各类服务的容器镜像,可在平台上快速部署开发所需要的服务,并且支持通过环境变量绑定服务;
iv. 实现开发环境、测试环境以及生产环境的隔离以及环境的快速搭建和回收;
v. 持续集成、部署的日志和监控、告警等。