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

本文涉及的产品
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 4vCPU 16GiB,适用于搭建游戏自建服
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
简介: 带你读《云上自动化运维宝典》——多云基础设施的统一纳管与运维实践分享(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

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
弹性计算 运维 监控
基于进程热点分析与系统资源优化的智能运维实践
智能服务器管理平台提供直观的可视化界面,助力高效操作系统管理。核心功能包括运维监控、智能助手和扩展插件管理,支持系统健康监控、故障诊断等,确保集群稳定运行。首次使用需激活服务并安装管控组件。平台还提供进程热点追踪、性能观测与优化建议,帮助开发人员快速识别和解决性能瓶颈。定期分析和多维度监控可提前预警潜在问题,保障系统长期稳定运行。
41 17
|
10天前
|
运维 自然语言处理 算法
云栖实录 | 大模型在大数据智能运维的应用实践
云栖实录 | 大模型在大数据智能运维的应用实践
|
10天前
|
运维 Kubernetes Cloud Native
云栖实录 | 智能运维:云原生大规模集群GitOps实践
云栖实录 | 智能运维:云原生大规模集群GitOps实践
|
10天前
|
运维 自然语言处理 Cloud Native
云栖实录 | 智能运维年度重磅发布及大模型实践解读
云栖实录 | 智能运维年度重磅发布及大模型实践解读
|
2月前
|
人工智能 运维 负载均衡
智能运维新时代:AI在云资源管理中的应用与实践
智能运维新时代:AI在云资源管理中的应用与实践
326 23
|
2月前
|
运维 Cloud Native 开发工具
智能运维:云原生大规模集群GitOps实践
智能运维:云原生大规模集群GitOps实践,由阿里云运维专家钟炯恩分享。内容涵盖云原生运维挑战、管理实践、GitOps实践及智能运维体系。通过OAM模型和GitOps优化方案,解决大规模集群的发布效率与稳定性问题,推动智能运维工程演进。适用于云原生环境下的高效运维管理。
|
2月前
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
95 9
|
5月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
112 4
|
2月前
|
监控 运维
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
本文介绍如何设置和查看域名或证书监控。步骤1:根据证书状态选择新增域名或证书监控,线上部署推荐域名监控,未部署选择证书监控。步骤2:查询监控记录详情。步骤3:在详情页查看每日定时检测结果或手动测试。
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
|
2月前
|
Linux 持续交付 调度
HTTPS 证书自动化运维:https证书管理系统-自动化部署
本指南介绍如何部署Linux服务器节点。首先复制生成的Linux脚本命令,然后将其粘贴到目标服务器上运行。接着刷新页面查看节点记录,并点击“配置证书”选择证书以自动部署。最后,节点部署完成,后续将自动调度,无需人工干预。
HTTPS 证书自动化运维:https证书管理系统-自动化部署