【51CTO.com原创稿件】2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是***IT技术人才学习和人脉拓展不容错过的平台。
在“开源与容器技术”分会场,雪球 SRE 工程师董明鑫带来了《容器技术在雪球的实践》的主题分享,会后,51CTO记者根据董明鑫在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。
【讲师简介】
董明鑫,雪球 SRE 工程师,主要负责保障雪球稳定性、提升资源利用率及提高开发效率等。关注容器生态圈的技术发展。
业务的发展需要容器技术
雪球最初是一个投资者社区。用户在雪球可以关注全市场所有的投资品类,还可以基于行情进行交流,同时也可以快速获取相关资讯。
有很多股民在雪球交流,甚至基于在雪球获得的信息直接作出投资决策,这时,他们就有一个强烈的需求:购买股票!于是雪球与国内券商合作推出了沪深A股交易的业务。由于互联网企业大部分都是在港美股上市,所以雪球还推出了港美股券商雪盈证券,满足用户交易港美股的需求。此外,雪球还做了持牌的基金代销机构蛋卷基金。
基于社区,雪球业务衍生出一些其他商业化的项目:沪深A股交易、港美股交易、基金销售、私募孵化器等。随着业务的发展,不同业务之间受到影响的概率比较高,雪球希望业务之间不被相互打扰,为了满足这种隔离的需求,雪球发现容器技术其实比较合适,因为容器本身镜像比较小,比较灵活,启动速度快,相比虚拟机,更适合雪球的业务发展,经过比较,雪球最终选择了Docker。
在运行过程中,雪球发现,使用Docker需要解决的问题主要有三个:网络连通性、多节点的服务部署更新、以及优秀的监控方案。
在实践中演进
雪球在初期的网络模式是一个二层互通的方案,这个方案的优点是与其它基础设施直接可达,并且性能很高。缺点是管理复杂,需要管理 IP 地址和 MAC 地址;规模受限,容易引发网络风暴;网络隔离实现复杂。
在服务部署方面,雪球尝试了虚拟机。虚拟机的优势一是与原有基础设施相比迁移成本低,二是相比物理机启动快,没有虚拟化的损耗,三是满足了隔离的需求。缺点是迁移、扩容繁琐;管理相对复杂,主要靠文档记录;基本没有流程控制和权限控制。
面对这些缺点,雪球希望做一个平台,实现容器的物理机管理、容器的管理,以及IP和MAC地址和流程控制的管理。于是,雪球变更了发布流程,如下图所示。
发布流程
经过一段时间的使用,雪球发现自研的容器管理平台虽然实现了流程控制与权限控制,并且将代码与环境固化,使多版本镜像管理方便了很多,部署效率和扩缩容效率都有所提升,但是,流程控制逻辑与机器管理、网络管理之间耦合严重,而且,无法实现自动选择物理机和自动分配容器 IP,没有自愈功能。于是,雪球引入了Swarm,做了一个三层部署的模式。如下图所示。
网络模式 Downward Default
后期,雪球又对此进行了优化,更加自助化的流程解放了运维,加入了更好的调度方案,支持多机房多云环境。
***,雪球引入kubernetes,每一个项目里可能有多个互联网数据中心(IDC),每一个IDC有不同的集群(Cluster),为每一个项目分配一个命名空间(Namespace),有自己的部署(Deployment)。由于Kubernetes本身的解决方案比较全,而雪球也已经有了很多解决方案,例如日志、负载均衡、监控等。如何才能更低成本的引入Kubernetes,而且让开发尽量不要感知到,***的办法是做合约的兼容性,最终,雪球只使用了Kubernetes的Deployment和HPA。
董明鑫***表示,雪球目前拥有一千多个容器,项目数量大概有一百多个,规模并不是很大。但是得益于容器技术,雪球部署的效率非常高,雪球的开发人员只有几十个,但是每个月的发布次数高达两千多次。
以上内容是51CTO记者根据雪球 SRE 工程师董明鑫在WOT2018全球软件与运维技术峰会的采访内容整理,更多关于WOT的内容请关注51cto.com。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】