带你读《云上自动化运维宝典》——多云基础设施的统一纳管与运维实践分享(2)

简介: 带你读《云上自动化运维宝典》——多云基础设施的统一纳管与运维实践分享(2)

更多精彩内容,欢迎观看:

带你读《云上自动化运维宝典》——多云基础设施的统一纳管与运维实践分享(1):https://developer.aliyun.com/article/1405374


3. 多云服务器的高效运维

在这一部分,将分享关于企业组织在使用多云时对于主机统1. 高效运维的需求,以及阿里云CloudOps所推荐的最佳实践。云服务器的高校运维是所有用户不断追求的目标,可以划分为效率、安全、成本三个维度,接下来将从这三个维度分别介绍用户所面临的问题、挑战以及对应的解决方案。

image.png

1) 通过自动化,实现高效运维

为了提升效率,就一定离不开自动化的运维通道。当用户拥有的服务器数量越来越多时,则希望有一个任务调度系统,能够帮助用户自动地管理和运行,包括批量执行操作,设置定式任务或执行自动化脚本。

image.png

1)用户诉求:由于服务器的多样性,用户希望系统能够支撑各类的操作系统和各种脚本语言,以及覆盖到多家云的各种系统的主机;其次,用户希望它不依赖主机的登录凭据,因为管理登录凭据是一种既危险又麻烦的事情;再次,用户还希望有更丰富的任务调度、创行执行任务等等。

 

为了实现多云主机的统一高效运维,云助手与运维编排工具正是为解决这些问题所准备的。多云主机在注册到云助手,成为托管实例之后,就可以像ECS服务器一样,通过使用云助手,对服务器进行自动化的运维,例如安装程序、启停服务、修改配置文件以及分发文件等。作为多云的用户,再也不需要学习和使用不同的云平台,分别运维各家的云服务器,

 

而是可以像使用ECS一样,通过使用云助手和运维编排等工具实现统一自动化的愿望。

 

2)运维手段和途径:可以使用阿里云控制台或阿里云CLI编写自动化脚本或阿里云SDK,可以使用多种语言在自己的组织的应用内集成自动化运维的功能。到此为止,多云的用户通过将多云主机托管到云助手,即满足了统一纳管、统一运维的需求,屏蔽掉了不同云平台差异,提高了工作效率。

 

2) 统一监控多云服务器

关于服务器运维,另一项基础需求是:用户拥有较多的服务器和应用时,希望能够对服务器的状态、应用的状态,进行统一的监控,及时发现问题和风险并提前进行处理。

 

image.png

 

在多云主机注册为托管实例后,就会出现在云监控的控制台上。在这里,可以选择继续安装云监控采集组件,对其进行统一的、集中的监控。且所有的云监控功能与ECS实例完全一致,例如设置报警规则,当主机的CPU使用率或内存使用率超过指定阈值时,就产生一条报警记录并且推送给相关的人员,让他们能够及时发现现场的问题。如果需要同时监控多个机器,可以使用应用分组。在一个应用分组内,可以只有ECS实例,或者只有托管实例,也可以将托管实例和ECS实例自由组合,放在同一个分组下一起监控。

 

到目前为止,在非阿里云主机注册成为托管实例后,就拥有了与ECS实例完全一致的两种能力:自动化运维能力和主机监控能力。托管实例可以被单独进行监控,也可以加入应用分组与其他主机一起监控。当监控指标超过临界值的时候,可以通过设置报警规则,接收短信、电话等通知;对于报警信息的接收者,能够及时感知服务上发生的风险,及时分析和处理报警内容,防止问题的继续演化。

3) 自动处理报警事件

常见报警的处理过程,会逐渐积累经验,并走向完善,最终演变成一条有着固定处理的套路。到了此阶段,用户会期望让系统自动参与处理,减轻人工负担,降低出错的概率,提高操作的效率。下面,将通过两个示例说明,如何借助云平台上现有的能力实现自动化的报警处理流水线。

image.png

 

1)示例一:监控指标触发自动运维

如左图所示,当磁盘空间不足时,自动触发清理程序。某天监控报警,反馈某主机磁盘剩余空间不足,立即进行处理,否则会影响线上正常业务的运行。经过一通的排查和分析,最后发现是因为操作系统几个应用程序的日志和临时文件数量较大,占据了磁盘的许多空间,此时对应的处理办法是把每种日志删除一部分,直至磁盘的剩余空间充足。

 

该过程的自动化流程如下:借助运维编排工具在运维编排上创建一个监控事件处理工作流监控主机的磁盘使用率,目的是在其即将到达报警临界值之前,调用云助手运行磁盘清理脚本,删除不需要保留的文件。这样,就达到了预防报警和消除报警的自动运维的目的。

 

2)示例二:监控指标触发应用扩容

如右图所示,当系统负载较高时,如何使其自动扩容或缩容。某天监控报警上报,某主机的CPU使用率过高,且应用响应时间变慢,再次立即进行处理。经过使用者的一番处理和分析,发现是因为线上业务流量逐渐增长,将要超出服务器的负载能力,此时就会对系统进行扩容,那么该流程如何进行自动化处理?在后面的内容中将会展开介绍。

4) 保障服务器运维的安全

在前面的内容中提到了在管理和运维多云服务器时用户对于运维效率的需求以及利用现有服务提高运维效率的方法。这里了解用户的另一类需求,当用户在云服务器上执行运用操作时,虽然已经获得了相关的授权,但在授权范围内,用户的应用有所限制,在其需要做出相应行动时进行对应的操作,且需要保持操作的可靠性与合法性。

 

若线上出现了事故,如重要的数据和文件被意外删除,如何找出背后是谁在操作?是在哪个时间操作的?操作的范围有哪些?具体删除的文件有哪些?此时,则需要有用于操作审计的能力。

 

image.png

在阿里云上,可以通过查看云助手的命令执行记录,直观查看指印主机、指定用户的所有操作记录、每一条命令的内容,以及执行产生的结果和影响。通过查看云助手的命令执行记录,虽然可以了解每次的操作内容,但也有不便之处,需要一条一条逐个查看。如果用户希望通过按关键字来搜索吗,则可以选择将操作记录投递到自己的SLS日志库中,利用SLS日志强大的全文搜索能力,帮助使用者快速定位到所有有关操作。

 

另外,云助手自带的命令记录,系统保存时间是有限的。用户如果希望延长时间,可以选择将操作记录投递到自己的OSS对象存储文件中,从而实现长期和低成本的保存。通过操作审计,其他用户可以有权限的人一样,可查看所有用户的操作历史。对于可疑的操作,也可以做到追踪和定责。

5) 审计与保密的冲突问题

但在一些特殊的场景下,也会产生矛盾。操作者的操作内容中包含有高度机密的内容,不希望轻易的其他人查询。这里以Linux的修改用户密码为例,Linux下通过命令echo root:NewPassword|chpasswd程序来修改密码。

image.png

 

1)明文密码的使用问题

在命令提交的内容里,包含有NewPassword新密码的内容,由于命令内容是明文传输的,会被其他人所看到,可能产生密码泄漏。而且从发送命令到执行命令,在系统的链路上也非常容易留下痕迹,也可能暴露密码。那么,用户就会希望在不违反操作审计的原则下,加密命令中的特殊内容,防止重要的信息被其他人查看,产生泄露等。

 

这时,可以使用云助手的数据加密能力,实现安全地发送的机密内容等功能,保证任何其他的人,都没法获取到真正的密码。

2)内容加密的使用方式和使用步骤

①向云服务器发送一条请求,要求在云服务器内部生成一个临时的非对称密钥对;

②在云服务器内部,云助手收到请求后,将生成一个临时密钥对,并且把公钥内容返回给到用户;

③用户在自己的本地环境中,使用公钥加密原先的NewPassword,获得加密后的内容;

④用户再次发送新的命令,命令中包含使用指定的密钥解密被加密的内容,以及使用解密后的结果,再用于修改密码。

 

在这个过程中,由于使用的是非对称密钥,而且私钥只存在于云主机内,所以任何其他的人都无法获取,从而解密出原始的密码,进而保护了用户的机密内容安全。

6) 安全与便捷的远程登录

1)服务器远程登录的安全问题

云上服务器运维的另一个常见的使用场景是远程登录。因为在云服务器内,凡是发生了仍未被自动化解决掉的问题,就需要相关人员远程登录到服务器内,手动操作进行排查和解决。在远程登录时,就会遇到这样几个问题:

 

image.png

 

多数的人会使用帐号和密码登录,而大多数人很难记住很多的密码,所以往往只是使用了几种相似的密码用在各种网络帐号上。但是在网络上,却有着着层出不穷和防不胜防的窃密手段,例如字典攻击、暴力破解、网络钓鱼、彩虹表攻击、键盘攻击、爬行搜索等,很可能某个常用的密码早已被泄漏,并且在黑市上交易了数次,只是自己还未觉察。

 

使用账号密码登录比较危险,若改用SSH密钥登录,一般需要服务器公网IP,云服务器一旦有了公网IP,也会面临着网络上的各种攻击风险,例如TCP重置攻击、模拟攻击、中间人攻击、DDoS攻击等,防不胜防。不仅如此,用户还需要谨慎管理服务器的帐号与凭据,管理云服务器防火墙设置,管理主机帐号的分配和回收,万一工作有疏漏,就可能会产生安全性事故。

 

服务器的安全管理和快捷访问两方面的需求,难以两全其美。如果遇到了类似的问题,可以尝试使用ECS的会话管理服务,可以完美解决上面所提到的的各种问题。

 

第一,在使用会话管理服务时,不需要服务器有公网IP,即可避免暴露在公网上,也就免除了被攻击的可能性。

 

第二,远程登录不需要输入账号名和密码,也就避免了密码密钥管理和记录的负担,同时也避免了密钥系路发生风险。第三,能够保证权限被适当使用,这一点依靠会话管理将权限控制统一管理和分配用户的连接权限。

 

接下来介绍会话管理功能实现的方法及好处:

 

image.png

 

2)会话管理实现功能的原理

会话功能以会话管理服务器+云助手Agent作为桥梁,在用户请求建立连接时,建立三条连接,并且在这三条连接上转发两端的输入和输出,从而实现用户到实例的互通。这里的两个端,一端是指用户侧的终端或端口连接程序,例如shell终端或TCP端口监听;另一端是指云服务器内的SHELL终端或TCP端口。

这里的三条连接,分别是指:

 

∙        编号3:从用户工作环境到云助手会话管理器的 WebSocket 连接

∙        编号4:从云助手Agent到云助手会话管理器的 WebSocket 连接

∙        编号5:从云助手Agent到云主机内的Shell终端或TCP端口连接

3)会话管理的好处

从链路和原理中可以看出,由于云服务器主动连接到了会话管理服务器,且云服务器不需要接收连接请求,也就不需要有公网IP和端口监听,因此,也就避免了暴露在互联网上,避免了对外部攻击的可能性,保障了系统的稳定和安全。

 

在云服务器内部,由云助手负责连接到终端程序,可以省略掉输入用户名和密码的环节,而用户的远程登录权限是在第一步用户请求建立连接时由RAM访问控制系统负责管理和校验的。因此,用户在不需要提供用户名/密码密钥的情况下就可以实现从本地远程连接到云服务器,而且由RAM控制系统统一管理用户的权限,不仅可以做到灵活地分配,也可以做到灵活地回收。在会话管理服器转发用户侧和实例内部的数据时,如果用户选择了开启会话审计功能,会话管理服务器就会分析和整理会话的内容,将整理后的结果投递到用户的SLS日志库中,方便于用户后续的分析、操作和审计。

 

而且,会话管理整个链路使用了标准的WebSocket协议,如果企业要将会话管理功能集成在企业内部的运营中,也可以方便地编写自己的程序进行实现,关注企业内的用户,实现免公网IP、免账号密码地远程登录阿里云现有的在线工具,包含ECS,且阿里云客户端也支持有会话管理的连接入口和功能。


更多精彩内容,欢迎观看:

带你读《云上自动化运维宝典》——多云基础设施的统一纳管与运维实践分享(3):https://developer.aliyun.com/article/1405372

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
27天前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
100 11
|
1月前
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
70 9
|
2月前
|
运维 监控 持续交付
自动化运维在现代数据中心的应用与实践####
本文探讨了自动化运维技术在现代数据中心中的应用现状与实践案例,分析了其如何提升运维效率、降低成本并增强系统稳定性。通过具体实例,展示了自动化工具如Ansible、Puppet及Docker在环境配置、软件部署、故障恢复等方面的实际应用效果,为读者提供了一套可参考的实施框架。 ####
|
2月前
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
2月前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
111 7
|
3月前
|
敏捷开发 Java 测试技术
软件测试中的自动化策略与实践
在快速迭代的软件开发周期中,自动化测试是确保产品质量和提升开发效率的关键。本文将深入探讨自动化测试的重要性,介绍实用的自动化测试框架,并通过一个具体的代码示例,说明如何实现一个简单的自动化测试脚本。
57 12
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
智能化软件测试:AI驱动的自动化测试策略与实践####
本文深入探讨了人工智能(AI)在软件测试领域的创新应用,通过分析AI技术如何优化测试流程、提升测试效率及质量,阐述了智能化软件测试的核心价值。文章首先概述了传统软件测试面临的挑战,随后详细介绍了AI驱动的自动化测试工具与框架,包括自然语言处理(NLP)、机器学习(ML)算法在缺陷预测、测试用例生成及自动化回归测试中的应用实例。最后,文章展望了智能化软件测试的未来发展趋势,强调了持续学习与适应能力对于保持测试策略有效性的重要性。 ####
|
3月前
|
敏捷开发 Devops 测试技术
探索自动化测试之美:从理论到实践
在软件开发的海洋中,自动化测试犹如一座灯塔,指引着项目向着质量和效率的彼岸。本文将扬帆起航,从自动化测试的意义出发,穿越工具选择的海域,停靠在实战演练的岛屿,最终抵达持续集成的港湾。我们将通过一个具体的代码示例,体验自动化测试的魅力,并分享如何将这些实践应用到日常的软件质量保证过程中。
|
3月前
|
运维 监控 持续交付
云计算环境下的运维自动化实践
本文探讨了在云计算环境下实施运维自动化的必要性、挑战及解决方案,重点介绍了如何利用现代技术工具实现高效的云资源管理和监控。通过具体案例分析,展示了自动化运维在提升系统稳定性、降低人力成本方面的优势。

热门文章

最新文章