邓伟先生,云计算工程师,4年运维经验,维护超200台服务器,每月产生PB级流量,擅长云平台高可用架构设计、大数据内容分发,公司云计算带头人,与AWS、腾讯云、阿里云深度合作。
大家好,我叫邓伟,一直从事运维工作,今天和大家分享一下我的运维经验。记得我接手第一台服务器的时候,连linux基本命令都不会,通过百度现学现卖,装个mysql用了两天一夜。从1台服务器到200台服务器经过了什么样的阶段?从传统IDC到云服务,我们运维人需要经历什么,以后我们的工作方向是什么?
云平台的最佳实践
首先来介绍一下云上运维,关于运维我有两个原则:
一个是安全:任何服务默认关闭,默认不通过;
二个是效率:不做重复的事情,用技术实现创造。那么怎样做云上运维呢?
大家对阿里云、腾讯云这些公有云平台应该都不陌生,使用非常简单,购买一台ECS实例和一个RDS数据库就OK了。但是这不是我们想要的,这样随便找个人都可以做。
我打个比方,以前大家买笔记本电脑。都在说CPU要什么,显卡要什么,配置大家都可以做,但是工艺不是谁都可以做。曾经我遇到一个头痛的问题,当时服务器只有50台,但是需要管理配置、账户、服务、项目、IDC。。。。这个时候,我们想到开发CMDB,也就是一套运维管理系统,后来我们确实也开发出来了,但是已经被我弃用了,因为你用50%精力去做不擅长的事情,怎么可能有100%专业做的好呢?
云平台很好的帮我们解决了这个问题,需要的就是我们怎么来“巧用”。
当然,我们是基于云来创造,而不是依赖云,不是用了云就可以喝喝咖啡,看看日志 。 有个同事曾经问我,阿里云、腾讯云、各种云出现以后我们运维干什么,本来是运维干的 事 他们全干了 。 我是这样回答的 : 要么你去建设这些云的基础设施,要么你做运维开发 , 再或者基于云来创造价值 。 我选择的是后者 。
这里我给大家分享一张架构图
这套架构是基于云来构建的AWS上的最佳实践,也是我们正在用的。AWS是云计算的鼻祖,累计了非常多的服务和技术。我们最常见的架构就是:服务器+数据库,服务器我们可以做负载均衡、WEB服务器的性能优化。
在AWS上用的最多的就是 EC2、ELB、S3、RDS、CDN,EC2就是一台实例,可以想象成一台服务器,可以作为Web入口。既然是入口,那就必须要考虑一个因素,就是安全。AWS的安全在我看来是所有云做得最微妙的。
首先,不管你是EC2、RDS通通不能访问,创建好一台实例,账户都不会告诉你,给你个秘钥,账户自己猜吧。当然我是问了他们的技术支持才知道账户是什么,而且这个秘钥你要是弄丢了,那对不起了,AWS不会帮你找回也无法帮你找回,就算你的业务受到多大影响,要么自己找,要么只有重置实例了。
再一个,是网络。说到安全,不得不说网络,现在基本上都用安全组了,类似系统防火墙但比防火墙更安全的玩意。还有就是漏洞,云平台提供了漏洞检测,但是不会帮你查杀,按他们的说法是,这是你的东西,我只告诉你这东西不安全,我提供的是平台,如果你是做杀毒软件的,我给你把病毒样本自动删除了,那不就是把你自己的文件给删除了吗?这就是AWS的安全逻辑,至少比国内某云前段时间自动删除用户文件的安全逻辑靠谱吧?!所以, 对我们来说,放在云上更安全!
还有更强大的是,如果你要一次性配置1000台服务器,只需要写一个模板,AWS可以帮你在全球你想要的任意节点进行部署,这里500台,那里300台,都可以。AWS是一个整合平台,可以帮你免服务启动程序,就是把你的程序上传,不需要EC2,不需要java环境,直接执行,你可以做监控自愈、自动处理,也就是我们说的自动化运维。
大众点评自己做了个系统,研发提交代码,一人审核之后,代码就上线了。如果你每天都在自己做部署,那还有时间研究新技术吗?这些AWS都可以实现,让我们的业务轻松的跑起来。
云上运维
如果业务出现问题怎么办,或者说出现问题我们不知道怎么办?
我第一次被老板批就是因为监控,当时我们做了很多下载节点,电信5台、联通5台,联通有1台服务器宕机了一个月我都不知道,因为用来做下载,服务很简单,没事也不会上去看。因为只是对服务略有影响,所以当时也没有重视,一直在开发那边查问题,最后才发现这台机器在1个月里都是挂着的,然后我们就开始做监控方案。
那时候想的是自己搭建,反正开源的很多,但是试了一圈却有一点达不到要求,我做下载节点得看看各地的访问情况,不可能每个城市部署一台服务器来监控呀。我们最后选择了当时最前卫的云监控——监控宝,只要把每台服务器的下载地址填入监控宝就可以了。
这是第一步网站监控,我们不但要监控到出问题,还要自己恢复服务。
首先,你得监控这些服务,比如 tomcat/nginx/apache,不是监控服务有没有运行而是要监控他的数据,比如吞吐量,一个周期内的吞吐量,用户量多少的时候吞吐是多少。以前我们很被动,运营经常找麻烦说数据下降,现在不用了,我只要看看吞吐量发现今天下降了,马上叫运营来问怎么回事。 运维要拿到主动权 , 有了这些数据就可以做分析,性能瓶颈也可以让运维提前感知。
大家都认为运维是背锅的,所以监控是运维必备的利器,让我们从网络层到物理层及时发现问题,化被动为主动。监控宝可以帮我们检测外部节点的访问情况,服务的性能参数,对业务有很大保障。
目前很多内容云平台是没有监控的,不是做不到,而是要私有化,所以我们依然要有自己的监控,只是不要那么复杂。服务器本身的管理还是需要我们自己做的,比如用户的监控:
用户行为的监控必须要有,这是我们用脚本编写实现的。 80%的工作交给别人,20%交给自己,这样我们就有80%的时间去云端创造。
我们未来的工作就是利用云来找到与业务的契合点,来配合业务实现。现在阿里云 AWS都提供的认证,因此云不仅是一个产品,而是一个生态,只有我们深入之后,才会用好。
“小步快跑”的运维方式
云服务有个特色,没一个云服务或者产品都有他的优点和缺点,如果你是牛人就可以去平衡。例如AWS的S3是存储,CDN是分发,两者搭配使用,可以发挥各自的优势。
给大家推荐一个高可用架构:ELB负载均衡/EC2实例/RDS数据库( redshift数据查询)/S3存储/CDN内容分发/自定义监控,这是一个框架,里面每项内容都非常多。再给大家一些福利,让大家可以实践。AWS一年的云服务是免费使用,监控宝有免费套餐(包括了我上面架构的所有内容),这里面肯定会遇到一些问题(比如我说的EC2账户都不会告诉你),这个过程很好玩,可以学到很多新思维,通过学习我们可以站在云上做创造的事情。
分享一个细节,是我深有体会,也是腾讯提出来的“小步快跑”。不要觉得现在去做这些事情没有时间,这样你会一直没有时间。我们需要集中一段时间来实现我们的短期目标,这个目标生效后,我们才会有更多的时间做更多的事情。像上面列举的服务,一个EC2文档白皮书光看都得一天时间。
以前我们做运维系统用了一年半年,然后效率还是没有提升,工程师还是在每天部署,系统也做的很慢。现在的思维,我们先用云上的,研究一个星期一个月,好了,可以用了,大家都轻松了,自然时间也出来了,总不能再干重启,换硬盘这些事情吧。
我的分享就是这样了,有任何问题都可以找我,不能解决的我们可以一起解决,共同成长。
A:私有化是这样的。比如你有自己的系统,比较敏感,放在云上会有所顾虑,像AWS和阿里都提供了私有云方案。包括子网的控制,甚至可以接入你的运维系统,只要你信得过自己的运维系统就可以接入,AWS就只认你这个系统过来的认证信息。也就是说你可以用自己的系统操作自己在云上的资源,还有一种就是数据比较敏感,那就可以用子网,公网没办法进来。大家可以研究下云上的VPC。
A:如果你放在传统IDC就放心吗,传统IDC是可以下架搬走你的服务器的。要么自建机房,要么用云。现在的云对数据都是有备份的,如果你是怕泄露就用存储桶,AWS叫S3,阿里叫OSS,S3可以把你的数据封存,并且有权限控制,封存到你自己都看不到。现在阿里好像还做不到。所以不是用云就可以,很多东西还需要研究,如果系统就部署在云上,比如分布式,出了问题要怎么看,都是需要云端运维人员去解决的。
Q:我怎么知道问题出在哪台机器上呢?
A:首先你得有监控,每台机器都需要监控。然后就是直接看每台机器的基本性能,监控宝就可以抓取你的服务基本信息和性能。分布式系统可以做轮询,比如有一台挂了,业务就不走那台服务器了。还有个东西叫域名智能解析,接口用域名来链接,谁挂了,域名就不走过去了。
点击 阅读原文 ,体验更多监控技能。