前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2017 Openstack Days China | 大规模云计算环境下的运维实践

2017 Openstack Days China | 大规模云计算环境下的运维实践

原创
作者头像
腾讯技术工程官方号
修改于 2017-08-22 02:00:10
修改于 2017-08-22 02:00:10
1.8K0
举报

作者:潘晓东

企业IT部潘晓东专注于云计算技术,在虚拟化、云计算、服务运维领域有超过十年的工作经验。本文是将其在OpenStack Days China的分享进行整理,内容上从稳定、可控、可运营三个方面,将其在大规模运算环境Tstack运维过程中所积累的经验进行总结分享。

1腾讯私有云Tstack现状

纸上得来终觉浅,绝知此事要躬行。说到云计算运维实践,必须有要实践的来源。腾讯私有云Tstack,目前运行了10000+ OS,可以算是国内最大的私有云平台之一。目前部署在深圳,天津,上海,成都四个区域,共拥有14个集群。在容灾架构上,采用两地三中心架构。与此同时,能够支持公有云私有云的统一管理,提供混合云的解决方案。更加难能可贵的是,Tstack上线5年时间里,可用率高达99.99%。下面将从三个方面介绍Tstack的运维使用经验。

2稳定重于泰山

稳定性对于一个线上服务平台来说,是非常重要的,脱离了稳定性谈服务运维就变得苍白无力。腾讯私有云主要从以下几个方面进行稳定性建设:

稳定性建设的第一要素,就是要从服务架构的层面去保证服务的高可用性,这样即使底层硬件发生故障时,层面能够自动容错。Tstack的管理节点,就是采用了高可用的架构设计。服务代理层、基础服务层、数据库消息队列,都采用了相应的高可用架构,服务代理层采用HAProxy+Keepalive的模式,通过VRRP协议来保证服务高可用。基础服务层则是采用多实例模式,单一节点故障并不会影响整个服务。同样,MySQL采用Galera集群实现主主高可用模式,消息队列采用RabbitMQ的镜像集群模式。任何一个节点失效,都不会影响服务,从架构层面消除了单点。

我们知道,OpenStack对虚拟机调度是根据CPU、内存、磁盘等情况进行综合决策的,但是并没有考虑虚拟机业务的情况。在实际生产中,我们经常要搭建MySQL高可用集群,比如主备模式,在没有进行虚拟化之前,主备模式需要2台物理机,任何一台物理机宕机都不会影响服务。但是在云计算环境中,OpenStack就有可能将做了高可用的两台MySQL虚拟机调度到同一台物理主机上,这样此物理机故障或者维护,将影响业务,业务层的高可用就失效了。TStack根据自己的使用经验, 对业务进行了高可用调度考虑,避免了此问题的出现,保证了业务层高可用的有效性。与此同时,TStack虚拟机的资源使用模型,会有个综合的评估,会将CPU密集型、内存密集型、磁盘密集型分散调度,避免资源争抢,力求利用最大化。即使在虚拟机分配调度是不能准确预估资源的使用情况下,或者是在运行的过程中,虚拟机的使用情况发生了变化,Tstack也会更加历史运行数据,迁移虚拟机,力求动态均衡资源分布。

在云计算环境中,网络情况是复杂的,一般包括:管理网、业务网、存储网和带外网。单纯从某个网络或者某个节点去检查虚拟机的运行情况,可能都是不可靠的。TStack从计算节点的多个网络进行心跳发送,避免监控的不准确性,通过控制中心对主机的网络状况进行综合判断,当处理故障时,自动迁移,无需人工干预。

提升业务稳定性的方法,远不止以上三点,我们在运维的过程中,不断发现问题,不断改进和优化,才能确保服务的稳定运行。

3尽在掌控之中

要实现服务的安全运维,可控也是服务的关键指标。只有对每个服务的特点、性能了然于胸,才能真正保证服务的稳定运行。

性能是服务运行的关键指标,只有服务的性能是优化的,才能够更好的保障服务的稳定运行,才能在更大的流量爆发时扛住压力。采用计算机体系结构的方法论,TStack主要从三个方面进行性能优化:

1.并行计算:在云计算控制节点中,为实现高可用,同时提高性能,采用的是多实例模式,通过多实例,提高服务的性能和吞吐率。在程序内部,例如nova、neutron中,采用多线程和协程的技术,提高服务性能。比较值得一提的是预处理技术,在虚拟机迁移中,提供提前分发流表,迁移完成以后,网络立刻可用,使虚拟机在OpenStack上迁移的停机时间从数秒降低到100s一下。

2.缓存技术:在Ceph对象存储中,对象的元数据索引存放在硬盘上,不利于对象的list等从操作,通过将对象的元数据缓存Redis中,可以很好的提升对象浏览的速度,提高吞吐率。同时在块存储中,通过开启RBD缓存,提升块存储的效率。同时,通过适当的提升Token的缓存时间,提升Keystone的效率。

  1. 压缩技术:压缩技术也是常用的一种优化技术。虚拟机迁移常常基于一种precopy算法,这是一种循环拷贝算法,主要原理是迭代拷贝虚拟机内存,每次都拷贝上次拷贝过程中修改过的内存,如果内存修改速度大于网络传输速度,这个拷贝就失效,那么虚拟机迁移的停机时间就很长。在迁移过程中,启用压缩传输,能够有效提高虚拟机传输的带宽,降低虚拟机迁移的停机时间。在对存储的优化中,压缩和去重是两种常有的技术。在Ceph中,TStack植入压缩存储引擎,支持lzo, snappy等快速压缩算法,对Ceph的块进行压缩。不过最近社区也开始支持此功能了。

服务可用是做服务的最低诉求,在任何时刻,都要保证服务的可用性,即使在是恶劣的环境下,也不能完全中断服务,至少核心业务的服务是不能中断的。TStack主要从三个方面来保证服务的柔性可用。

  1. 资源预留: 每个计算节点给宿主机预留1/16的内存,来保证libvirt、nova、ovs等服务的正常运行,同时采用CPU绑定技术,给宿主机预留2-4核作为nova等基础服务的资源使用。如果是超融合架构,则每个ceph osd预留一个核为其提供计算能力。在网络方面,采用管理网,业务网,存储网分离的模式,确保每个网络不相互干扰。

2.速度限制: 在云计算环境中,虚拟机与虚拟机之间虽然采用了KVM做了隔离,但是他们不可以避免的出现资源争抢,只是程度不同而已。比如,超融合架构下,TStack采用Cgroup进行了资源限制。另外也可采用cpulimit对CPU运行进行灵活限制,采用TC对网络进行限流。

3.过载保护: 服务运维常见的一个问题就是,当服务压力过大时,必须能够保证关键业务的运行,保障生命级业务的正常运行,因此,服务分级是必须的,在压力过大时,必须能够区分关键业务和非关键业务,确保正确疏散关键业务的压力。另外,在服务发布时,需要做的柔和发布,通俗的说,就是一台一台启动或者重启,不能一股脑全部启动或者重启,避免雪崩现象发生;与此同时,需要做好限速,在流量高峰期能够对业务进行可控限制。

灰度发布也是可用运营的一个重要部分,做好灰度发布,能够保证产品发布时对业务的影响降到最小。当我们的新版本开发完成,我们首先会到测试环境下进行测试,测试通过以后,会到一个灰度环境进行小流量试运营,因为测试环境下,无论怎么模拟,和线上环境还是会有差异,到灰度环境下,进一步发现问题,进行修复。根据版本功能改动的大小,决定灰度的时间的长短,可用是一天,一星期,或者一个月。在线上环境,可用先部署一部分机器,观察服务正常以后,再进行全部发布,做好回滚方案,一旦有问题,快速回滚。

4运营任重道远

可运营是一个云计算环境的重要保障。就拿车来举例子,不管是什么样的车,无论性能多好,加速多快,关键是要有方法去驾驶它,否则这辆车就会失去方向。云计算环境也一样,无论我们提供硬件有多好,功能有多强大,对于运维人员来说,可运营是最关键的。TStack从以下几个方面去保障服务的稳定运营:

监控是对服务运行情况感知的基础设施。可用说,监控就是运维人员的眼睛,通过监控能够发现服务各种运行细节,了解服务的运行状况。监控主要从以下几个方面去考虑:

  1. 覆盖度:覆盖度永远无法到100%,每次出现问题,最后发现监控都可用优化,TStack汲取腾讯18年的运维经验,从硬件、软件、服务、监控本身等方面,尽量提高云计算环境的监控覆盖度。
    1. 实时性: 为了提高实时性,可以加快采集频率,这样监控就可用做到秒级,但是频率太快,监控的压力非常大。为了在实时性和数据量上进行均衡,TStack选择的是最小频率为1分钟。
    2. 报警收敛:运营环境中的情况非常复杂,一个网络抖动,可用可能产生大量报警,如果没有很好的报警收敛策略,就可能导致短信网关堵住,影响后面的报警发出。同时需要做好报警分级,避免运营人员淹没在海量的报警中,而真正重要的报警却被忽略了。
    3. 精准性: 大多数监控因为数据太多,对历史数据都有平滑处理,TStack因为采用了强大的数据库后端,可用保证1年内不对数据进行平滑处理,方便历史数据的查看。
    4. 报表体系: 由于监控的采集了大量的数据,如果不进行筛选处理,运维人员就会淹没的海量监控数据中,只要服务不报警,运维人员对运维的运行状况毫无感知。事实上,服务的压力已经越来越大,这就需要对关键监控指标进行提取,做成报表,每天推送,让运维人员感知业务发生的变化。

标准化也是云计算环境运维的一个关键要素。俗话说,没有规矩,不成方圆。云计算运维环境的标准化尤其重要,运维环境、运维操作、服务扩容等都需要有完善的标准化流程,才能为业务保驾护航。

  1. 运维环境标准化: 首先,要有操作人员的权限控制,开发人员、测试人员、运维人员需要有不同的权限,比如开发测试人员只能有只读权限,运维人员才能有可用写可执行权限;其次, 服务配置需要规范起来,参数前面写好注视,相同配置采用拷贝方式等,目的是让配置统一起来,方便后面的排错;再次,程序目录需要统一规范起来,要么全部部署在/home下面,要么全部部署在/opt下面,这个看各个公司的习惯,最忌讳随心所欲,当出现故障时,还找不到目录,这是不应该出现的事情;最后,建议采用统一的启动关闭方式,因为每个程序启动的方式不尽相同,会给运维人员带来很多麻烦,最好程序有都有一个start.sh和stop.sh的脚本,让人一看就知道是怎么启动和关闭。
  2. 运维操作标准化: 首先,必须采用工单管理的方式,先把操作单发出来,经过审批,才能执行。工单必须写清楚具体的操作步骤和操作命令,写的模糊的工单,会让人有多种理解方式,很容易出错;其次,按单操作也很重要,最忌讳运维人员看到单子以后,发现单子与自己理解的意思不一样,按照自己的方式操作了,那就事情了工单的意义。即使工单有错误,需要和发单人员核实以后,重新审批才能操作;再次,操作需要采用双人或者多人的方式,一人操作,一人旁边观察,出现问题随时打断,提高操作准确性;最后,回滚备份是必不可少的,我们很难保证操作完成以后,一定不出问题,因此,随时都要做好备份,方便回滚。
  3. 服务扩容标准化: 服务扩容是经常发生的事情,在云计算环境,服务扩容也是有标准的。首先,需要对服务的计算模型进行评估,得出最佳的计算、存储、网络的比例,做成Set模型。在服务扩容的时候,按照Set模型,一个Set一个Set添加,这样能够保证服务的最优配比,规范运维环境,提高资源利用率。

俗话说:常在河边走,哪有不湿鞋。在云计算环境中,人工操作太多,总有可能出现故障。提高服务的自动化程度,能够大大减少运维故障。比如在添加计算节点的时候,我们尽量采取自动化添加,避免了手动操作的随意性。同时,采用自动化操作,即便出错,所以的错误也会一致。相比手动操作,更加容易排错。TStack运维中,采用了大量的自动化操作,通过蓝鲸平台,进行代码发布,线上部署,能够有效的减少运维故障,提高运维效率。

总结:云计算环境离不开运维的存在,可用说,好的运维是云计算服务稳定的可靠保障。首先,需要从服务架构上去保证服务的高可用性;其次,需要采用一些稳定可用的方式去管理服务,如高性能、柔性可用、灰度发布等;最后,需要从监控、标准化、自动化等三个方面保证服务的可运营性。其实,关于云计算的运维方法远不止这些,以上只是TStack运营过程中的一点经验总结。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯云TStack白皮书
腾讯云TStack是腾讯基于自身强大技术能力和海量运营经验推出的私有云平台,提供集IaaS、PaaS和SaaS为一体的综合云服务解决方案;支持对国产CPU的虚拟化,并通过云管理平台软件提供云主机、云存储、云网络和云负载均衡等IaaS层基础功能。大量私有化部署经验,具有高稳定性、统一管理、可视化运营等特点,强兼容性可与国产服务器实现良好适配,助力政府、企业构建稳定安全的云环境和健康的云生态。
腾讯云TStack
2020/06/05
8.7K7
做运维的感悟(做运维需要考虑事,运维组织结构,运维学习地图....)
不过大公司会专门做某一部分,例如应用运维不需要关注测试和安全等方面,但建议都学学,触类旁通有好处。 有这些基础,进到公司就可以去完成基础的建设工作了。比如会安排你搭建服务,整理资产报表,清理一些日志,这些基本工作可以帮助你了解公司当前有哪些服务,各种服务之间是如何运作的,之后再慢慢参与到业务中,薪资一线城市可以达到6-10k左右。
iginkgo18
2020/12/23
6.6K0
做运维的感悟(做运维需要考虑事,运维组织结构,运维学习地图....)
拓荒•演进•未来:企业云的“实践之道”
腾讯云TStack
2017/09/18
1.4K0
拓荒•演进•未来:企业云的“实践之道”
2017 Openstack Days China | 腾讯的Openstack实践与创新
本文转载自CSDN 2017年7月24日~25日,2017 OpenStack Days China官方盛典在北京国家会议中心盛大召开。腾讯技术工程事业群企业IT部总经理刘若潇参加这次会议。刘若潇目前主要负责腾讯内部IT平台环境规划及运营管理,对于腾讯内部IT环境选择、部署和应用OpenStack都如数家珍,较为详细地介绍了腾讯内部TStack的实际部署与运营情况。 为什么是OpenStack? 腾讯在云计算领域的起步较早,可以说是国内云计算领域早期的拓荒者之一。早在2013年,我们就已经开始搭建自己
腾讯技术工程官方号
2018/01/30
2.5K0
2017 Openstack Days China | 腾讯的Openstack实践与创新
我的译作《精通OpenStack》上架啦:书籍介绍和译者序
作者:[德] 奥马尔-海德希尔(Omar Khedher)[印] 坚登-杜塔-乔杜里(Chanda Dutta Chowdhury)
力哥聊运维与云计算
2019/06/28
1K0
我的译作《精通OpenStack》上架啦:书籍介绍和译者序
CSDN专访|腾讯的OpenStack实践与创新
前言: 本文转载自微信公众号OpenStack 文章《用户访谈丨腾讯的OpenStack实践与创新》,来自CSDN专访。 2017年7月24日~25日,2017 OpenStack Days China官方盛典就将在北京国家会议中心盛大召开。在本次盛会召开前夕,CSDN有幸采访到了腾讯技术工程事业群企业IT部总经理刘若潇。刘若潇目前主要负责腾讯内部IT平台环境规划及运营管理,对于腾讯内部IT环境选择、部署和应用OpenStack都如数家珍,较为详细地介绍了腾讯内部TStack的实际部署与运营情况。 为
腾讯云TStack
2018/03/22
2.3K1
CSDN专访|腾讯的OpenStack实践与创新
云计算:拼的就是运维
有点长,有些内容可能略显陈旧,与当前的现状已经有了很大不同,但是其中传递的思想和观点并不过时,耐心看完一定大有收获。
赵成
2019/11/14
3K0
4年!我对OpenStack运维架构的总结
最近很多人在讨论OpenStack,我也想写点东西。思来想去,云计算范畴实在广泛,自然就聊点最近话题异常火热,让广大云计算从业者爱之深、痛之切,想说一声爱你,不容易的OpenStack吧。
SammyLiu
2019/06/28
7.3K0
4年!我对OpenStack运维架构的总结
百度智能运维的技术演进之路
随着大数据、人工智能、云计算技术的日渐成熟和飞速发展,传统的运维技术和解决方案已经不能满足需求,智能运维已成为运维的热点领域。同时,为了满足大流量、用户高质量体验和用户分布地域广的互联网应用场景,大型分布式系统的部署方式也成为了高效运维的必然之选。如何提升运维的能力和效率,是保障业务高可用所面临的最大挑战。
用户2591787
2018/07/09
2.2K0
百度智能运维的技术演进之路
大规模微服务场景下灰度发布与流量染色实践
本文内容选自中国DevOps社区年会 · 2019年会,刘超老师分享的《大规模微服务场景下灰度发布与流量染色实践》实录。
kirito-moe
2019/12/17
8.2K0
大规模微服务场景下灰度发布与流量染色实践
运维可用性能力建设
业务的不断演进,系统的数据量不断扩大,技术栈越来越复杂,系统模块越来越多,造成信息系统中断的事件的风险场景越来越多,中断事件的频率和种类持续增长,且有相当一部份事件会造成业务中断,可用性问题越来越严峻。一个严重的业务可用性问题通常是多个层面上的可用性保障均失效的结果,比如:架构的高可用能力,监控能力、自动化工具能力、应急能力等,所以说运维组织的事件管理能力特别的重要,应该本着“不浪费故障”的理念去深挖故障背后的问题,不断的完善每个环节的不足(当然,这里不提倡追责的方式分析故障)。可以用“海恩法则”来进一步解释可用性问题由量变向质变转变的过程:海恩法则:一起重大的飞行安全事故背后都会有29个事故征兆,每个征兆背后又有300个事故苗头,每个苗头背后还有1000个事故隐患。由此可见,对隐患、苗头、征兆的忽略,是导致意想不到的安全事故发生的罪魁祸首。《百度百科》
彭华盛
2020/03/06
2.5K0
网易OpenStack部署运维实战
糖豆贴心提醒,本文阅读时间8分钟 OpenStack简介 OpenStack 是一个开源的 IaaS 实现,它由一些相互关联的子项目组成,主要包括计算、存储、网络。 由于以 Apache 协议发布,自 2010 年项目成立以来,超过 200 个公司加入了 OpenStack 项目,其中包括 AT&T、AMD、Cisco、Dell、IBM、Intel、Red Hat 等。 目前参与 OpenStack 项目的开发人员有 17,000+,来自 139 个国家,这一数字还在不断增长中。 OpenStack
小小科
2018/05/02
2.2K0
网易OpenStack部署运维实战
我眼中的云计算
柴大木
2017/08/02
3.1K0
我眼中的云计算
聊聊腾讯云TStack上云Oracle的应用
能否利用TStack的计算、网络和存储能力,将Oracle运行在X86服务器,IP网络,云存储的“云化”架构上,去掉IOE架构中的I和E呢?
腾讯云TStack
2018/05/30
16.9K4
【云端风云:云计算全局解密】一篇文章读懂云计算技术及其未来发展趋势
在当今数字化浪潮中,云计算如一颗闪烁的科技明珠,为企业和个人带来了前所未有的灵活性、效率和创新力。本文将带领读者深入探索云计算的核心概念、关键服务模型以及未来发展趋势。云计算不仅是数字化时代的基石,更是推动创新和变革的引擎。站在云端风云之巅,我们将解析云计算的奥秘,揭晓数字化未来的蓬勃蔓延。通过这场科技奇迹的探索,我们将共同领略云计算为全球带来的变革,见证科技与未来的奇妙融合。
奥耶可乐冰
2023/11/24
1.5K0
【云端风云:云计算全局解密】一篇文章读懂云计算技术及其未来发展趋势
说说云计算时代,运维人员会踩到哪些坑?
近期在ChinaUnix论坛有一场讨论,标题是——云计算时代:运维人员会踩到哪些坑? 整个讨论过程非常活跃,大概有50个答复,运维派这就给大家整理了一些讨论的优质内容分享给大家。 背景: 在云计算领
静一
2018/03/22
1.9K0
说说云计算时代,运维人员会踩到哪些坑?
云计算运维之“轻”与“重”
云计算作为改变世界的力量,已经开始在各种应用实现中被不断印证,而现在还只是云计算生命周期的启航,这场变革的演进一定会超乎大多数人的想象。早些年,当我读到尼古拉斯·卡尔《IT不再重要》(The Big Switch: Rewiring the World, from Edison to Google)这类文章的时候,对于云计算所具备水、电般属性的勾勒,既为之兴奋,又苦恼无法为具化这些属性找到实践支撑。而最近三年来,云计算发展风生水起,以我这三年切身参与阿里云计算产品实现和落地的过程为例,恰好是云计算从“虚”到
小小科
2018/05/03
2.3K0
云计算运维之“轻”与“重”
大规模 codis 集群的治理与实践
小时光
2017/11/01
6.6K0
大规模 codis 集群的治理与实践
金融云原生漫谈(七)|云原生时代:从传统运维到智能运维的进阶之路
在金融行业数字化转型的驱动下,国有银行、股份制银行和各级商业银行也纷纷步入容器化的进程。
灵雀云
2022/03/03
7870
云计算——常见集群策略
集群是一种计算机系统,通过一组计算机或服务器的软硬件连接起来高度紧密地协作完成计算工作。在客户端看来为其提供服务的只有一台设备,实际上它是一群设备的集合,只不过这些设备提供的服务一样。
网络豆
2023/10/17
5010
云计算——常见集群策略
相关推荐
腾讯云TStack白皮书
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档