开发者社区> 云起君> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

降云十八掌——阿里云运维架构最佳实践(上)

简介: 本文为驻云科技运维总监乔锐杰在阿里云MVP直播与大家分享的运维技术实践。
+关注继续查看

本文将阿里云运维实践汇总为十八招,从云时代下的资源自动化管理,到静态、动态缓存提升网站性能的方法,再到混合云架构、互联网监控解决方案,以及Devops和云安全实践等,都是比较经典的一些干货,让大家了解阿里云最热门的运维架构技术实践。

直播视频回放,戳这里

想看,降云十八掌——阿里云运维架构最佳实践(下),戳这里。

想和更多的运维开发者交流,识别下方二维码即可加入钉钉交流群!
image.png

大家都知道乔峰有降龙十八掌,而这位乔帮主也有一套在云端运维技术的实践秘籍——“降云十八掌”。接下来让我们跟帮主一起来了解下这套运维神功吧!
以下是精彩内容整理:

为什么叫降云十八掌?

1.jpg

本文分享的核心内容主要出自我的一本书籍《「阿里云」运维架构最佳实践》,书籍包括四大篇:云端选型篇、云端实践篇、云端安全篇、以及云端架构篇,总共十八个章节,所以我更喜欢把书的内容称为云端实践秘籍:“降云十八掌”。

书籍的内容总共有四五十万字,三百幅运维架构图。其中囊括了我历时八年、累积的千家一线互联网企业在云端实践的干货以及经验,包含了云端二十余款热门产品实践、五十余项常见开源热门技术实践,以及云端最热门的:监控、DevOps/容器、智能运维等技术实践。

这本书预计在2019年下半年上架对外售卖,大家感兴趣的可以参考借鉴一下。

以下主要内容摘选自《「阿里云」运维架构最佳实践》十八个章节中的精华内容,汇总成为十八招,都是我认为比较经典的一些干货及案例,希望通过本文让大家了解阿里云最热门的运维架构技术实践及最新技术趋势。

第一招:云对技术架构的变革

2.jpg

第一招:云对技术架构的变革。对于这一招,我想了一个比较高大上的名字叫风起云涌。随着云计算的普及,未来对IT资源的需求都会通过云平台获取。那云对技术架构方面又有什么影响及变革呢?我们先来看看如图所示IT三大体系发展方面:

1、物理机体系阶段:传统IOE的架构其实是物理机的典型代表。对计算资源的使用需要我们去购买或者租用对应的硬件。

2、云计算体系阶段:然后到云计算体系阶段,基于传统硬件服务器基础上,通过虚拟化及分布式技术形成对应的云资源平台。对计算资源的使用,我们如同使用水和电一样,在云资源平台上按需所取即可,而我们不用再关注以及和底层物理硬件打交道。

3、容器体系阶段:最后到达容器体系阶段,我们既不用关注底层物理硬件,也不用关注云平台用的是亚马逊还是阿里云,我们业务都能无缝过渡及运行。从而让我们对计算资源的使用,脱离硬件甚至各个云平台的依赖。容器就是大家熟知的docker技术,有点类似Java的jvm,可以跨平台部署,不依赖底层环境,不管是硬件环境还是云平台等等。

那么,这三大IT体系在IT技术架构方面又有什么样的变化呢?(上图中的箭头方向就是我们技术架构演变进化的方向)

在物理机体系中经历了以下两个阶段:

(1)、单机架构的阶段:IOE架构(IBM的小型机+Oracle+EMC存储)是单机架构中典型的代表,都是高配性能的计算资源。在这个阶段的架构,业务基本都是单机部署。有时候数据库和业务代码甚至都部署在一台高配机器上,完全要靠单机的硬件性能来支持更多业务访问。

(2)、集群架构的阶段:集群架构阶段其实是单机架构的演变。集群架构典型的技术特点就是一般采用虚拟VIP技术(如Keeplived、Hearbeat)解决单点故障的问题,让架构高可用。

然后到云计算体系,云计算的普及其实也是分布式架构的普及,分布式架构下最重要的特点就是不管是业务代码还是数据库,都是通过多台服务器分布式的部署。业务压力增加时,我们增加对应的服务器资源即可。在云计算阶段,分布式的架构特别适合用云平台部署,对服务器单机的性能要求依赖不高,主要通过大量的云资源进行分布式快速部署,来满足业务发展和迭代。值得注意的是,分布式架构是集群架构的演变,有很多人把集群架构和分布式架构混为一谈,这是很大的误区。集群的虚拟VIP技术只能让一台服务器平时作为Backup热备,只有在故障的时候,才会切换到backup上让其顶上,平时都是空闲状态。而分布式架构的技术特点就是负载均衡,均衡的引入,让不同服务器来同时处理业务压力。

最后到达了容器体系下的微服务架构阶段,其实本质也是分布式架构。微服务其实是业务功能层面的一种切分,切分成单个小型的独立业务功能的微服务。多个微服务通过API Gateway提供统一服务入口,让微服务对前台透明,而每个微服务也可以通过分布式架构进行部署,这提高了我们研发的灵活性,也为业务后期迭代带来了极大的扩展性,这是我们未来软件技术架构的主流。并且微服务在云平台基础上结合Docker容器技术进行部署,能让业务、运维、架构在技术和非技术方面的稳定性、成本、效率、扩展等都达到完美。

第二招 云的优势在于分布式

3.jpg

云在前期发展的时候,我遇到很多客户吐槽云主机性能不如硬件服务器?那时候我们经常做的比较多的一件事情就是通过大量压测工具等,去证明其实云主机性能也并不是那么弱,让客户不用那么担心。过度的去纠结云主机的性能不如硬件服务器,如今想起这些证明及测试,在我看来意义并不是很大。

首先,云主机分为共享型、独享型,不管共享型还是独享型,都是将cpu分配给不同instance,即一台硬件服务器上肯定是会虚拟化多台云主机的(主要为了资源利用)。

再加上传统硬件服务器的多核、高频、及类似IBM小机(比如256G内存)等的恐怖高配,在性能上肯定是硬件服务器有优势。

那云的本质优势又是什么?下面通过一个分布式经典架构1+1>2的经典案例进行说明。
4.jpg

一台4核8G配置的主机部署着一个分布式业务,如传统电商系统。我们用单台部署,和用分布式架构思路部署,即拆分成两台2核4G配置的主机,会有什么不一样?

我们来详细看看如图所示对比的区别:

  • 在成本方面,单机部署要402元,两台部署价格也差不多;
  • 在性能方面,差距就开始出现差距了,带宽方面,云主机仅有200Mbps,而两台部署通过SLB对外访问,带宽有1Gbps。磁盘方面,单机部署默认40G云盘,而两台部署就是两块默认40G系统盘,就是2倍的IO性能。所以在早前还未推出SSD云盘时,那时候IO很低,为了满足业务对IO的需求,相比单机高配部署,通过分布式架构拆分成多台低配机器部署,就能获取成倍的IO性能,这招对提升IO性能非常管用;
  • 安全性方面:单机部署直接暴露源ip,被黑客直接攻击源站。而两台分布式部署,隐藏后端ip避免被扫描、被直接打,甚至SLB是基于LVS,由于直接改了LVS的源码,具有一定的抗攻击功能;
  • 扩展性方面:单机部署只能升级服务器配置来垂直扩展,而两台分布式部署,不仅能垂直扩展,而且只需要往SLB后面增加更多ECS就可以进行水平扩展。
    稳定性方面:单机部署肯定存在单点故障,而两台分布式部署是没有单点问题的。
  • 管理维护方面:通过分布式部署的唯一缺点就是在管理维护上会变复杂。不过通过ansible等自动化运维工具,这对运维来说也没多大问题。

所以,拥抱云计算,其实也是拥抱分布式,如若业务不适合用分布式架构,其实发挥不了云计算的核心优势。

第三招 云时代下的资源自动化管理

5.jpg

云除了分布式特点外,还有个运维架构特点,就是按量付费即按需所取。这便是降云十八掌的第三招:云时代下的资源自动化管理。其本质在于我们能通过代码控制资源的管理,这对我们以前IDC人工流程管理资源是不敢想象的。

比如图中,我们通过Python脚本,在shell命令窗口,通过参数设置服务器配置、带宽大小、登录密码,然后能快速创建出来一台服务器。接下来通过一个案例,进一步说明何为云时代下的资源自动化管理。
6.jpg

很多人都用过小米手机,当初红米秒杀活动便是在阿里云上做的。红米秒杀活动期间,瞬间开两百台ECS,使用两小时花费仅600元。我们在活动前,提前搭建好环境,制作好镜像,活动期间通过api秒开200台服务器,然后挂载SLB后面应付活动压力。活动结束,通过api秒释放资源。我们可以看到云时代下资源自动化管理变得更加方便、快捷、甚至更加智能。

第四招 云服务器配置模型

说到资源自动化管理,接下来我们看看服务器配置怎么来做。降云十八掌的第四招叫云服务器配置模型。
7.jpg

先跟大家说一下云端服务器配置选型最经典的失败案例,我曾见过一个客户使用16核64的服务器部署一个tomcat,这里要注意的是,只是一个tomcat,导致一台高配服务器资源使用严重过剩。虽然云解决了IDC硬件资源的利用、管理等问题。但是还未解决大家对服务器配置选择、甚至云产品规格型号的使用问题。资源过剩一直是IT管理中最大的问题。通过统计我们发现,80%的企业服务器的性能使用率仅在20%左右,这便是经典的资源利用82原则。

那究竟云端配置使用有什么窍门?

常见的服务器配置:不管2核4G、4核8G、8核16G、16核64G等等,我们发现一个规律,就是CPU与内存资源配比都会围绕1:1、1:2、1:4、1:8展开。大家应该没见过3核4G、4核5G的服务器配置吧。

那具体什么配置适合什么业务?

我们先来看看CPU与内存资源配比为1:1 ,适用于个人网站、官网等小型网站部署。一般在低配机器中,如1核1G,2核2G,基本上在云端实践中,我们也很少看到过用4核4G、8核8G、16核16G的ECS来运维部署。

然后CPU与内存资源1:2的配比,我称之为黄金配比,可以获得最优计算资源性价比。不管是线下IDC的物理服务器,还是云端ECS服务器的配置,1:2都为黄金比例。比如,2核4G、4核8G、8核16G、16核32G等,这都是我们实践中的黄金比例配置。1:2的配比适用绝大部分业务场景部署,尤其需要高计算资源消耗。不过在云端应用配置最多的实属当为8核16G,这也是云上服务器黄金比例配置中的最佳实践。web应用类特别适用1:2的配比,对CPU、内存都需要最优的计算资源。对于前面说的那个失败案例,Tomcat部署适用用中低配:2核4G、4核8G,特别是4核8G是最优选择。因为tomcat是单进程多线程的模式,是个轻量级且并发请求数最多只能跑到一千左右。所以单台tomcat高配的服务器并不能跑满服务器的性能,造成很大资源浪费。如果想跑满中高配服务器性能,我们常规做法就是在一台服务器上部署多台tomcat。

接下来是1:4的配比,比如2核8G、4核16G、8核32G。这类配比的配置偏向内存,特别适合部署数据库类的应用。为什么这么说?我们知道数据库对服务器性能的需求首先是IO,因为数据库是个存储类应用,涉及数据持久化,所以IO性能的要求是最高的。其次才是内存,因为高内存能有效提升数据库的缓存性能。特别是MongoDB基于内存映射,大内存配置能有效发挥出MongoDB的性能特点。最后,数据库其实对CPU的要求并不是那么高。所以偏向内存的配比配置,特别适用部署数据库类的应用。

最后是1:8的配比,比如2核16G、4核32G、8核64G,这类是高内存资源占比。尤其适用于数据库类中的内存型应用,比如redis、memcache的部署。

下面介绍一个经典案例:单个 python、squid、redis 部署在一台8核16G的服务器中?

python、squid、redis都是单进程,对多核利用不好,8核CPU这会造成性能很大的剩余。当然,如果想对多核的性能资源利用好的话,可以跟tomcat一样,在一台机器上部署多个python、squid、redis进程实例。

第五招 带宽配置估算模型

相比服务器配置,带宽配置的选择更让人抓耳挠腮。一个网站,我究竟选择怎么样的带宽配置?在云端带宽配置选择的经典失败案例中,让我印象深刻的是某一线知名大牌明星做的一个母婴用品电商平台。当初是我负责云上技术指导,我看到他们开发开了二十台8核16G 20Mbps固定带宽(一个月四五千)来跑Java应用,这是一个对带宽配置使用没有概念的极端例子。

那在云端怎么跟应用估算带宽配置?这便是降云十八掌第五招——带宽配置估算模型
8.jpg

配置估算的参考是依靠我们业务访问的规律:一天中有80%的请求发生在一天的40%的时间内。即用户请求访问量主要集中在白天,晚上业务请求量少,这是业务访问的一个特点,即一天的40%时间即9.6小时。那我们带宽配置估算,就可以用总请求量(80%*总PV量)除以这些总请求量所花的时间,得到每秒的请求总量,然后乘以单次请求的数据大小,便得到带宽配置。

举例某网站一天的访问量100万pv总量,假设平均页面大小20KB(实际大小,大家根据自己业务的特点来估算)。所以100万PV带宽配置为(80%100万)/(246060(一天的秒数)40%) 20KB/s = 23.1个请求/秒 20KB/s 最后折算成带宽即:3.5Mbps。

以上计算只是一个平均值,考虑请求压力的峰值波动,加上2倍或者3倍峰值,带宽配置变成7Mbps、11Mbps,所以建议用10Mbps带宽配置。同样,500万pv的业务估算带宽,跟100万pv的估算差不多,这里就不再过多介绍。

第六招 企业级负载均衡架构实践

9.jpg

前面也说过拥抱云计算,其实就是拥抱分布式,而分布式架构的核心就是负载均衡的引入。

互联网企业负载均衡架构流程,即用户请求,一般是先流入四层负载均衡,再流入七层负载均衡,最后请求才会流转到业务应用层。所以在互联网企业负载均衡架构实践中,我们前端一般都是硬件负载均衡或者LVS抗流量、抗并发,然后流转到后端nginx上做七层负载均衡的控制,最终流入到tomcat或者php中做业务处理。

在云端负载均衡中小型架构实践中,我们前端直接用七层SLB做虚拟主机等功能控制,证书也放在前端,直接转到后端ECS部署的tomcat及php上。而云端负载均衡中大型架构实践中,前端入口不能再用七层SLB,七层SLB性能峰值也就五万QPS,很容易被高并发打垮。所以我们前面用四层SLB来抗并发流量。然后转到后端ECS,在ECS上部署Nginx或者Apache做七层虚拟主机、rewrite等控制,最终请求才流转至tomcat或php中。值得注意的是,这时候证书放在后端ECS中的nginx上配置。通过实践我们发现,高并发场景下,七层SLB挂证书会影响10%-20%的性能。

接下来我们来看看负载均衡两个非常经典的案例,也就是降云十八掌的第七招、第八招。

第七招 通过反向代理+VPN提速跨国际网络访问

10.jpg

跨国际网络访问延时,一直是网络架构中的疑难杂症。比如上图中的架构,是我们一个真实的客户案例,客户在德国节点、美东节点部署了驻云的CSOS云安全审计系统,由于是跨国际网络,我们直接SSH登录这台CSOS的云主机,卡的不行。而CSOS这台主机也要跟我们部署在杭州节点的CSOS server通信,经常也是连不上杭州CSOS server。那怎么解决这个延时问题呢?

我们知道国内到香港地域的服务器延时非常低,也基本不丢包,而香港地域到德国、美东地域直接走的海外线路,延时丢包也很低。这便是我们的技术突破口。
10.jpg

解决办法(如图架构图),开通一台香港ECS作为代理。先SSH到香港这台机器,然后从这台机器再SSH目标服务器。这台机器做了一个类似跳板机的功能,解决了我们SSH延时的问题。然后通过VPN链路路由配置,德国、美东请求国内杭州的请求,强制通过香港代理走,这便解决了CSOS 连接国内网络延时的问题。

第八招 通过反向代理跳过国内域名备案政策

接下来给大家分享更为经典的一个案例,怎么通过负载均衡跳转国内域名备案政策。在此我要申明一下,这个分享完全是从技术原理层面的探讨,切勿用于非法目的。国内域名备案,需要遵守对应的法律法规,正常走备案政策。
12.jpg

我们先来看看域名备案判断依据是什么:

供应商取用户访问地址中七层http请求头的域名地址,然后跟地址库中的域名做比对,确认是否备案,如若未备案,则访问跳转上图的备案错误提示。所以突破口就在“供应商取用户访问地址中七层http请求头的域名地址”,如若我们能改掉http请求头的域名地址,原则上就能跳过域名备案的侦查了。
13.jpg

具体流程如下:
首先我们需要开通一台香港服务器。因为香港属于海外,部署网站不需要域名备案,不受大陆域名备案政策约束;其次,我们安装nginx,修改七层http头中包含域名的头信息为ip地址;最后,域名解析到香港这台服务器上。我们便能看到通过反向代理可以域名访问网站了,只不过请求先到香港,再流转到国内,对网站访问性能有一定损耗。

第九招 使用静态缓存提升网站性能的四种方法

14.jpg

接下来我们聊聊如何使用静态缓存提升网站性能,静态缓存就是js、css、html、图片等静态网站资源缓存,提升用户访问性能的一种技术,是牺牲数据访问时效性,换取性能的一种非常常见的技术手段。我们在静态缓存中有四种方法能提升网站性能,这便是降云十八掌中的第九招。

  • 第一种方法:浏览器缓存,在nginx中看到这样的配置设置expires,并不是指把静态内容缓存在nginx中,而是设置客户端浏览器缓存的时间,这也是很多人误区所在。
  • 第二种方法:磁盘缓存,比如通过nginx的proxy_cache模块,将静态访问请求的结果存放至磁盘中,后面用户的请求直接拿磁盘的缓存结果给到用户,提升用户请求响应速度。比如图中配置参数,设置了缓存空间、缓存目录、需要请求缓存的文件类型等。
    15.jpg
  • 第三种方法就是内存缓存,磁盘缓存是把请求静态资源缓存至磁盘中,内存缓存就是把请求静态资源缓存至内存中,用户请求访问性能会进一步提升。
  • 最后一种方法就是CDN,CDN被誉为互联网高速公路最后一公里。其实结合DNS调度技术,加上磁盘缓存、内存缓存技术,让用户请求就近访问距离用户地域较近的缓存节点上的数据。所以CDN也是云端静态缓存的最佳实践。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里巴巴资深架构师熬几个通宵肛出来的Spark+Hadoop+中台实战pdf
阿里巴巴资深架构师熬几个通宵肛出来的Spark+Hadoop+中台实战pdf
21 0
阿里云运维架构实践秘籍
1. 中国互联网发展编年史 2. 运维 3. 不同云盘单路随机写访问响应时间对比 4. 常见数据库性能对比 5. 常见衡量业务量级别指标 6. 如何根据PV估算服务器数量? 7. 不同业务特性计算模型 8. PV量和服务器配置/RDS配置对应表 9. 服务器CPU/内存配置模型 10. 云盘空间选择 11. 宽带的选择 12. 共享文件存储的方法 13. OSS文件管理 14. OSS数据迁移 15. 缓存 16. Session管理六种策略 17. 分库分表 18. 云迁移步骤 19. 监控方案 20. 云端安全 21. 架构阶段
217 0
阿里云罗小飞:阿里云边缘云,从资源到场景的产品演进
2021年7月1日,以“云集影从,融网聚生”为主题的GIDC全球互联网数据大会在上海成功举行。本次大会由中国信通院指导,艾迪网主办,邀请来自政府、产业等多领域的专家,围绕“新基建”、“绿色数据中心”、“云网协同”、“云边协同”等时下行业热门话题开展深入讨论,推动5G时代下云计算产业的健康发展。阿里云边缘云首席产品架构师罗小飞受邀参会,分享了阿里云在边缘云领域的探索和思考,如何从产品演进、技术创新、场景应用等方面帮助企业提升价值。
1980 0
阿里云罗小飞:阿里云边缘云,从资源到场景的产品演进
2021年7月1日,以“云集影从,融网聚生”为主题的GIDC全球互联网数据大会在上海成功举行。本次大会由中国信通院指导,艾迪网主办,邀请来自政府、产业等多领域的专家,围绕“新基建”、“绿色数据中心”、“云网协同”、“云边协同”等时下行业热门话题开展深入讨论,推动5G时代下云计算产业的健康发展。阿里云边缘云首席产品架构师罗小飞受邀参会,分享了阿里云在边缘云领域的探索和思考,如何从产品演进、技术创新、场景应用等方面帮助企业提升价值。
66 0
十大热门业务场景最佳实践全面解析,阿里云中间件实战秘笈重磅发布!
十大热门业务场景最佳实践全面解密。必须收藏的干货!
2981 0
选择阿里云数据库HBase版十大理由
根据Gartner的预计,全球非关系型数据库(NoSQL)在2020~2022预计保持在30%左右高速增长,远高于数据库整体市场。 阿里云数据库HBase版也是踏着技术发展的节奏,伴随着NoSQL和大数据技术的兴起和发展,从2010年开始研究和发展。
4185 0
阿里云迁云工具最佳实践指南
1. 前言          在云计算服务高速发展的今天,有越来越多的客户想要加入到云计算的大军中来。怎样方便快捷的将已有的系统数据迁移上云,就变成了一个很有意义的课题;本文就将以此为出发点介绍一下阿里云迁云工具的功能以及最佳实践指南。 2. 工具介绍 2.1. 简介    &nb
7100 0
阿里巴巴张瑞谈面向未来的数据库架构
本文讲的是阿里巴巴张瑞谈面向未来的数据库架构【IT168 评论】国内最受关注的数据库技术盛会——2017第八届中国数据库技术大会(DTCC2017)将于2017年5月11-13日如约而至。本届大会以“数据驱动?价值发现”为主题,汇集来自互联网、电子商务、金融、电信、政府、行业协会等20多个领域的120多位技术专家,共同探讨Oracle、MySQL、NoSQL、云端数据库、智能数据平台、区块链、数据可视化、深度学习等领域的前瞻性热点话题与技术。
2753 0
阿里巴巴张瑞谈面向未来的数据库架构
 本文讲的是阿里巴巴张瑞谈面向未来的数据库架构【IT168 评论】国内最受关注的数据库技术盛会——2017第八届中国数据库技术大会(DTCC2017)将于2017年5月11-13日如约而至。本届大会以“数据驱动?价值发现”为主题,汇集来自互联网、电子商务、金融、电信、政府、行业协会等20多个领域的120多位技术专家,共同探讨Oracle、MySQL、NoSQL、云端数据库、智能数据平台、区块链、数据可视化、深度学习等领域的前瞻性热点话题与技术。
2226 0
+关注
云起君
行到水穷处,坐看云起时!
文章
问答
来源圈子
更多
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖阿里云 MVP 奖项为我们提供了这样一个机会,向杰出的意见领袖表示感谢,更希望通过 MVP 将开发者的声音反映到我们的技术路线图上。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
阿里云“云上朗读者”-分享
立即下载
阿里云MVP《云上朗读者》
立即下载
《云上安全产品实战手册》
立即下载