独家揭秘 | 京东物流 Elasticsearch 大规模“迁移上云”实践
云妹导读:
据美国调研机构 Gartner 公司调研指出,2020 年,企业“无云”就像“无网络”一样窘迫。如果企业对于信息化和数字化视而不见,势必将被这个时代所淘汰。近日,国常会议指出,要对“互联网+”、平台经济等加大支持力度,发展数字经济新业态,依托工业互联网促进传统产业加快上线上云。在顶层架构的带动下,“企业上云”概念,再次站上风口。
京东物流在上云过程中算走在京东集团的最前列,截止目前已经有超过 90%的应用在公有云上部署了实例,包括去年的双 11.11 大量业务都是运行在公有云上,在业务流量超过了三倍以上的情况下,整体运营也都非常平稳。
1,京东物流为什么要“上云”
京东物流之所以需要迁移上云,除了整个京东集团上云战略上的考虑,从物流集团内部自驱来看有三点考虑,即轻资产化、降低成本、架构升级。
物流是非常重资产的行业,要有库房、大量的员工还有物流系统也是非常庞大的,而这么大体量的系统却常年跑在很多物理机上面,随着时间的推移,这些物理机可能过保或者损坏,带来了大量的维护成本,而随着业务的发展,还要采购更多的物理机,这就导致资产会越来越重。而从整个互联网趋势来看,大家都是希望自己的架构越来越轻,资产越来越轻。
第二就是降低成本,大家都知道云计算的特点就是虚拟化和共享化。如果资源在不使用的时候可以回收掉,使用的时候可以采用按需申请,包括计费的模式,就可以按小时按天进行计费。这样对集团内部资产进行规划,对于集团制定服务器的预算都有很好的帮助。
第三,如果只是简单的把系统搬到云上去的话是没有任何意义的,仅仅把系统服务器部署从私有云搬到公有云上意义也不大,真正有意义的是,在这个迁移的过程中,可以对自身的系统架构进行梳理,同时也可以对陈旧的、过时的和现在业务发展不太匹配的系统架构进行一定的升级,包括云原生的架构,这是一个非常好的机会。
而这三点就是京东物流启动上云的驱动力。
2,京东物流迁移上云方案
依托京东智联云云搜索 Elasticsearch 高可用、易扩展、近实时等特性,产品在降低使用门槛,减少资源投入成本的前提下,成功助力京东物流分拣中心自动化系统、冷链流程监控系统、开放订单跟踪系统等上百个系统迁移上云。
迁移方案的选择
根据业务需求,方案包括停机迁移和不停机迁移 2 种:
1、停机迁移
迁移过程中,旧集群可以暂时停止服务或者暂停写入,待数据全部迁移到新集群后,再将业务切换到新集群进行读写。
停机迁移可以通过 elasticsearch-dump、snapshot、reindex、logstash 等方式完成数据迁移。
2、不停机迁移
迁移过程中,旧集群不能停止写入,业务不能停服,这也是京东物流上云主要采用的方案。
如果旧集群不能停止写入,此时进行在线数据迁移,需要保证新旧集群的数据一致性。目前看来,除了官方商业版提供的 CCR 功能,开源版本并没有开源的严格保证数据一致性的在线数据迁移工具。因此京东智联云 Elasticsearch 团队基于京东物流需求提供了业务不停机场景下的迁移工具。
工作原理
在云端创建新集群,将云上集群和用户集群合并成一个大集群,利用 Elasticsearch 数据分布 API(cluster.routing.allocation.exclude)将用户集群中的索引数据迁移到云上集群的数据节点,最后将用户集群和云上集群构成的大集群拆分,关闭用户集群即可完成迁移。
但采用这种方式必须要同时满足如下两个条件:
用户集群版本和云上集群版本相同
用户集群所有节点和云上集群所有节点网络能够互通
操作步骤
整个迁移过程包括新建镜像集群、镜像集群加入源集群、移动数据到镜像集群、切换客户端流量、切分集群 5 个方面。
#1 创建云上集群。在京东智联云云搜索 Elasticsearch 控制台(https://es-console.jdcloud.com/clusters)创建与用户源集群版本一致、网络互通的云上集群,作为镜像集群。
#2 合并集群。设置用户源端集群地址和云上集群实例 ID,创建迁移任务后,将镜像集群加入源集群。
#3 迁移数据。集群合并成功后,可以先尝试迁移一个索引,迁移后切换该索引的应用端流量,观察应用端读写数据正常后,迁移全部索引。
#4 切换流量。索引迁移成功后,应用侧需要将配置的集群地址修改为云上集群的地址,切换应用的集群地址后,建议运行一段时间,观察应用是否读写正常。
#5 切分集群。集群切分后无法恢复,建议运行一段时间,确认集群运行正常后,再切分集群,同时关闭源集群,才会最终切分完成。
通过上述方法,仅 6 个月时间京东物流就完成了近百个系统的数百个集群、数千个节点数据迁移工作。还配套提供了一键报警等核心功能,进行全天候、全方位掌握集群健康等情况。
3,为什么使用 ES?
京东物流作为全球唯一拥有中小件、大件、冷链、B2B、跨境和众包(达达)六大物流网络的企业,产生的数据规模极大,需要的组件必然是多元化的,Elasticsearch 作为排名最高的搜索引擎,完美兼容 Logstash、Kibana 周边生态,在搜索查询领域,几乎完胜所有竞争产品,解决一切搜索查询问题。因此,这也是 Elasticsearch 成为京东物流大件二手仓系统、订单跟踪系统等上百个系统搜索查询场景下的不二选择的重要原因。
但在物流上云之前,使用的 Elasticsearch 系统均是采用自行搭建方式完成的,使用传统自建服务器的方式其实存在很多的问题:
开源集群、索引管理工具问题——一是缺少对公司业务的感知和数据治理能;二是缺乏与公司基础设施的联动
集群、索引的运维问题——在操作的安全性和标准化的运维手段、流程健全性等方面都有待优化
线上问题排查——较多依赖手动操作和人工经验判断,解决问题的最佳实践没有固化
资金成本问题——硬件采购需要大量资金,机房托管、部署机器等工作,需要较长的时间周期和人力成本
云计算高可用、全托管、易扩展等特性可以很好的解决用户服务的痛点。云搜索 Elasticsearch 围绕企业需要和运维中面临的问题,提供了完善的解决能力:
全托管——用户分钟级即可成功创建出可用 Elasticsearch 集群,无需部署维护软硬件设施,集成完整的集群管理、监控与告警系统,专业团队 7*24 小时不间断守护,用户只需专注于业务开发。
高可用——能够方便地为数据建立索引,拥有节点自动发现和替换失效节点能力,零配置实现分布。当有新节点加入集群时,自动发现并重新进行负载均衡,为新节点分配数据;当某节点失效时,它同样会自动重新为可用节点分配数据。
易扩展——云搜索 Elasticsearch 服务提供实时扩容功能,实现集群的轻松扩展。用户可根据数据量和查询量选择合适的机型,自定义节点的存储空间,灵活实现按需配置,动态扩容集群以满足业务增长需求。
近实时——自动将海量数据分散到多台服务器上去存储和检索,在秒级别对数据进行搜索和分析,达到海量数据近实时处理。
开放兼容——100%兼容开源 Elasticsearch,开放大量简单易用的 RestfulAPI,集成了可视化分析工具 Kibana 和集群管理工具 Head。
安全可控——云搜索 Elasticsearch 部署在逻辑隔离的专有网络内,杜绝了外网直连风险。同时只开放云搜索 Elasticsearch 服务所需特定端口,加固了数据访问安全。
点击【云搜索Elasticsearch】,可了解更多 Elasticsearch 详请
更多精彩技术实践与独家干货解析
欢迎关注【京东智联云开发者】公众号
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/deade4f52161e4c6f95b0c06d】。文章转载请联系作者。
评论