博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
探索大数据基础设施容器化 | StartDT Tech Lab 04
阅读量:4137 次
发布时间:2019-05-25

本文共 2630 字,大约阅读时间需要 8 分钟。

​写在前面

这是奇点云全新技术专栏「StartDT Tech Lab」的第4期。
在这里,我们聚焦数据技术,分享方法论与实战。一线的项目经历,丰富的实践经验,真实的总结体会…滑到文末,可以看到我们的往期内容。
本期由奇点云运维体系建设负责人「黑白」带来:
在这里插入图片描述

作者:黑白

中国互联网发展至今也不过二十余载,各种技术层出不穷、百花齐放,主流基础设施也从IDC服务器、虚拟化、云计算发展到现在的容器化。

在单一服务的环境中,传统的系统架构具备快捷启停的优势,但是在微服务、多环境、高并发、弹性伸缩的挑战下,传统的架构模式明显力不从心。

那如何解决这些问题呢?容器化!

简介

为什么需要容器化应用?容器化是什么?

了解容器化,那就不可避免的需要了解Docker。Docker是一个虚拟环境容器,可以将开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。

比如,在本地用Python开发网站后台,开发测试完成后,就可以将Python3及其依赖包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,然后部署到任意想部署到的环境。

那为什么需要容器化应用呢?总结来说,在传统架构模式下遇到的问题主要为部署繁琐,日志不规范、采集困难,资源使用不完全,扩容成本高,环境管理困难。这个时候,为了解决上述问题,奇点云决定使用容器化部署应用。

容器化方案

企业使用容器化,可以清晰发现有如下好处:

01 持续CI/CD

CI/CD即持续集成持续交付。容器消除了线上线下的环境差异,保证了应用生命周期的环境一致性标准化。开发人员使用镜像实现标准开发环境的构建,开发完成后通过封装着完整环境和应用的镜像进行迁移,由此,测试和运维人员可以直接部署软件镜像来进行测试和发布,大大简化了持续集成、测试和发布的过程。

02 可移植性

云计算的一个显而易见的缺点是:一旦你迁入某云服务提供商,随着数据的累积和系统的建设,就很难再进行迁移。然而,利用容器化,当需要迁出服务提供商时,企业不再需要在缓慢的WAN链路上迁移庞大的虚拟机。相反,小巧的容器使它在云上的迁入和迁出非常简单。

03 环境标准化和版本控制

基于容器镜像,相较于基于程序代码进行版本控制来说,最明显的优势就是,对整个应用运行环境实现版本控制,一旦出现故障可以快速回滚。相比以前的虚拟机镜像,容器压缩和备份速度更快,镜像启动也像启动一个普通进程一样快速。

04 高资源利用率与隔离

容器化没有管理程序的额外开销,与底层共享操作系统,性能更加优良,系统负载更低,在同等条件下可以运行更多的应用实例,也可以更充分地利用系统资源。同时,容器拥有不错的资源隔离与限制能力,可以精确地对应用分配CPU、内存等资源,保证了应用间不会相互影响。

当然,单纯的使用docker容器化还是不够的,需要考虑:

如何管理成百上千的容器
如何方便地横向扩展
当容器down(异常停止)后,如何自动恢复
如何更新容器而不影响业务
如何去追踪和监控容器
如何调度容器的创建
如何保护隐私数据
这时候,就用到了容器编排工具。

目前市场上包含了Swam、Fleet、Mesos、Kubernetes等主流容器编排工具,奇点云选择了当前最热门、契合度最高的容器化编排工具 - Kubernetes(K8s) 。

Kubernetes主要特点表现为:

自动化部署和回滚
自动可伸缩性和可控性
隔离容器
跟踪服务运行状况的能力
服务发现和负载均衡
充当提供服务的平台

它的优势如下:

提供完整的企业级容器和集群管理服务
有据可查且可扩展
调整工作负载而无需重新设计应用
降低资源成本
部署和管理的灵活性
由于容器隔离,增强了可移植性
许多云提供商使用Kubernetes来提供托管解决方案,因为它是容器编排工具的标准
(左滑看看)

组件选型

在设计K8s集群环境时,我们充分考虑了异地冗余高可用,在多个地区进行多集群跨域部署,并在部署工具、集群管理工具、数据存储、集群网络、CI/CD、Edge Router、监控、日志系统、Repository等方面进行丰富的选型。可以看以下图示:

在这里插入图片描述

图源:黑白

(可戳上图放大看)

经过一个多月的反复实验考量,我们最终确定了整体的应用架构框架:

在这里插入图片描述

图源:黑白

下图为K8s集群的基本网络应用架构框图。

在这里插入图片描述

图源:黑白

K8s集群CNI网络采用了Flannel。Flannel是容器编排系统中最成熟的网络结构示例之一,旨在实现更好的容器间和主机间网络。与其他方案相比(Calico、Canal、Weave),Flannel相对容易安装和配置,默认和推荐的方法是使用VXLAN,因为VXLAN性能更良好并且需要的手动干预更少。

流量访问通过负载均衡指向K8s worker node节点的Traefik(Traefik为HostNetwork网络模式,端口为80)。Traefik通过IngressRoute,解析访问域名,指向访问目标。Prometheus集群则负责监控K8s集群及微服务健康情况(微服务暴露Node-Exporter端口),同时通过Skywalking Agent监控微服务的访问链路情况。Zookeeper为JAVA微服务的注册中心。每一个微服务都伴随一个Sidecar容器 - Filebeat客户端收集容器日志,将日志传输至ELK。

数据开发与管理平台的容器化难点

奇点云数据开发与管理平台DataSimba的逻辑视图从上到下分为:展示层、网关、应用服务、基础服务、计算层、数据存储。

在这里插入图片描述

从运维的角度看DataSimba架构

我们可以看到,前四层的容器化其实跟正常微服务容器化相似,容器化方案实现起来相对较简单一点。最困难的还属后两层:计算层和数据存储。消息中间件Kafka、关系数据库Mysql等大部分都是有状态数据,数据实时性和可用性要求高,容器化改造实现难度大,但在整个数据平台部的不断推进下,DataSimba越来越多的组件实现了容器化。

总结

容器化技术不仅具备技术优势,也带来了商业价值:

更小的计算开销,节约了大量的成本;
可移植性,增加了跨平台部署的方案;
低风险的快速部署,使服务部署更简单,业务风险更低。

在容器化技术的推动下,相信我们的云原生数据中台产品会更进一步。

关于作者 | 黑白

奇点云数据平台运维工程师,奇点云运维体系建设负责人,数据中台云原生运维负责人。

转载地址:http://gdavi.baihongyu.com/

你可能感兴趣的文章
素数算法
查看>>
java多线程环境单例模式实现详解
查看>>
将一个数插入到有序的数列中,插入后的数列仍然有序
查看>>
在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found
查看>>
万年历
查看>>
作为码农你希望面试官当场指出你错误么?有面试官这样遭到投诉!
查看>>
好多程序员都认为写ppt是很虚的技能,可事实真的是这样么?
查看>>
如果按照代码行数发薪水会怎样?码农:我能刷到公司破产!
查看>>
程序员失误造成服务停用3小时,只得到半月辞退补偿,发帖喊冤
查看>>
码农:很多人称我“技术”,感觉这是不尊重!纠正无果后果断辞职
查看>>
php程序员看过来,这老外是在吐糟你吗?看看你中了几点!
查看>>
为什么说程序员是“培训班出来的”就是鄙视呢?
查看>>
码农吐糟同事:写代码低调点不行么?空格回车键与你有仇吗?
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>
你准备写代码到多少岁?程序员们是这么回答的!
查看>>
码农:和产品对一天需求,产品经理的需求是对完了,可我代码呢?
查看>>
程序员过年回家该怎么给亲戚朋友解释自己的职业?
查看>>
技术架构师的日常工作是什么?网友:搭框架,写公共方法?
查看>>