更多精彩内容,欢迎观看:
带你读《云上自动化运维宝典》——多云基础设施的统一纳管与运维实践分享(1):https://developer.aliyun.com/article/1405374
3. 多云服务器的高效运维
在这一部分,将分享关于企业组织在使用多云时对于主机统1. 高效运维的需求,以及阿里云CloudOps所推荐的最佳实践。云服务器的高校运维是所有用户不断追求的目标,可以划分为效率、安全、成本三个维度,接下来将从这三个维度分别介绍用户所面临的问题、挑战以及对应的解决方案。
1) 通过自动化,实现高效运维
为了提升效率,就一定离不开自动化的运维通道。当用户拥有的服务器数量越来越多时,则希望有一个任务调度系统,能够帮助用户自动地管理和运行,包括批量执行操作,设置定式任务或执行自动化脚本。
(1)用户诉求:由于服务器的多样性,用户希望系统能够支撑各类的操作系统和各种脚本语言,以及覆盖到多家云的各种系统的主机;其次,用户希望它不依赖主机的登录凭据,因为管理登录凭据是一种既危险又麻烦的事情;再次,用户还希望有更丰富的任务调度、创行执行任务等等。
为了实现多云主机的统一高效运维,云助手与运维编排工具正是为解决这些问题所准备的。多云主机在注册到云助手,成为托管实例之后,就可以像ECS服务器一样,通过使用云助手,对服务器进行自动化的运维,例如安装程序、启停服务、修改配置文件以及分发文件等。作为多云的用户,再也不需要学习和使用不同的云平台,分别运维各家的云服务器,
而是可以像使用ECS一样,通过使用云助手和运维编排等工具实现统一自动化的愿望。
(2)运维手段和途径:可以使用阿里云控制台或阿里云CLI编写自动化脚本或阿里云SDK,可以使用多种语言在自己的组织的应用内集成自动化运维的功能。到此为止,多云的用户通过将多云主机托管到云助手,即满足了统一纳管、统一运维的需求,屏蔽掉了不同云平台差异,提高了工作效率。
2) 统一监控多云服务器
关于服务器运维,另一项基础需求是:用户拥有较多的服务器和应用时,希望能够对服务器的状态、应用的状态,进行统一的监控,及时发现问题和风险并提前进行处理。
在多云主机注册为托管实例后,就会出现在云监控的控制台上。在这里,可以选择继续安装云监控采集组件,对其进行统一的、集中的监控。且所有的云监控功能与ECS实例完全一致,例如设置报警规则,当主机的CPU使用率或内存使用率超过指定阈值时,就产生一条报警记录并且推送给相关的人员,让他们能够及时发现现场的问题。如果需要同时监控多个机器,可以使用应用分组。在一个应用分组内,可以只有ECS实例,或者只有托管实例,也可以将托管实例和ECS实例自由组合,放在同一个分组下一起监控。
到目前为止,在非阿里云主机注册成为托管实例后,就拥有了与ECS实例完全一致的两种能力:自动化运维能力和主机监控能力。托管实例可以被单独进行监控,也可以加入应用分组与其他主机一起监控。当监控指标超过临界值的时候,可以通过设置报警规则,接收短信、电话等通知;对于报警信息的接收者,能够及时感知服务上发生的风险,及时分析和处理报警内容,防止问题的继续演化。
3) 自动处理报警事件
常见报警的处理过程,会逐渐积累经验,并走向完善,最终演变成一条有着固定处理的套路。到了此阶段,用户会期望让系统自动参与处理,减轻人工负担,降低出错的概率,提高操作的效率。下面,将通过两个示例说明,如何借助云平台上现有的能力实现自动化的报警处理流水线。
(1)示例一:监控指标触发自动运维
如左图所示,当磁盘空间不足时,自动触发清理程序。某天监控报警,反馈某主机磁盘剩余空间不足,立即进行处理,否则会影响线上正常业务的运行。经过一通的排查和分析,最后发现是因为操作系统几个应用程序的日志和临时文件数量较大,占据了磁盘的许多空间,此时对应的处理办法是把每种日志删除一部分,直至磁盘的剩余空间充足。
该过程的自动化流程如下:借助运维编排工具在运维编排上创建一个监控事件处理工作流监控主机的磁盘使用率,目的是在其即将到达报警临界值之前,调用云助手运行磁盘清理脚本,删除不需要保留的文件。这样,就达到了预防报警和消除报警的自动运维的目的。
(2)示例二:监控指标触发应用扩容
如右图所示,当系统负载较高时,如何使其自动扩容或缩容。某天监控报警上报,某主机的CPU使用率过高,且应用响应时间变慢,再次立即进行处理。经过使用者的一番处理和分析,发现是因为线上业务流量逐渐增长,将要超出服务器的负载能力,此时就会对系统进行扩容,那么该流程如何进行自动化处理?在后面的内容中将会展开介绍。
4) 保障服务器运维的安全
在前面的内容中提到了在管理和运维多云服务器时用户对于运维效率的需求以及利用现有服务提高运维效率的方法。这里了解用户的另一类需求,当用户在云服务器上执行运用操作时,虽然已经获得了相关的授权,但在授权范围内,用户的应用有所限制,在其需要做出相应行动时进行对应的操作,且需要保持操作的可靠性与合法性。
若线上出现了事故,如重要的数据和文件被意外删除,如何找出背后是谁在操作?是在哪个时间操作的?操作的范围有哪些?具体删除的文件有哪些?此时,则需要有用于操作审计的能力。
在阿里云上,可以通过查看云助手的命令执行记录,直观查看指印主机、指定用户的所有操作记录、每一条命令的内容,以及执行产生的结果和影响。通过查看云助手的命令执行记录,虽然可以了解每次的操作内容,但也有不便之处,需要一条一条逐个查看。如果用户希望通过按关键字来搜索吗,则可以选择将操作记录投递到自己的SLS日志库中,利用SLS日志强大的全文搜索能力,帮助使用者快速定位到所有有关操作。
另外,云助手自带的命令记录,系统保存时间是有限的。用户如果希望延长时间,可以选择将操作记录投递到自己的OSS对象存储文件中,从而实现长期和低成本的保存。通过操作审计,其他用户可以有权限的人一样,可查看所有用户的操作历史。对于可疑的操作,也可以做到追踪和定责。
5) 审计与保密的冲突问题
但在一些特殊的场景下,也会产生矛盾。操作者的操作内容中包含有高度机密的内容,不希望轻易的其他人查询。这里以Linux的修改用户密码为例,Linux下通过命令echo root:NewPassword|chpasswd程序来修改密码。
(1)明文密码的使用问题
在命令提交的内容里,包含有NewPassword新密码的内容,由于命令内容是明文传输的,会被其他人所看到,可能产生密码泄漏。而且从发送命令到执行命令,在系统的链路上也非常容易留下痕迹,也可能暴露密码。那么,用户就会希望在不违反操作审计的原则下,加密命令中的特殊内容,防止重要的信息被其他人查看,产生泄露等。
这时,可以使用云助手的数据加密能力,实现安全地发送的机密内容等功能,保证任何其他的人,都没法获取到真正的密码。
(2)内容加密的使用方式和使用步骤
①向云服务器发送一条请求,要求在云服务器内部生成一个临时的非对称密钥对;
②在云服务器内部,云助手收到请求后,将生成一个临时密钥对,并且把公钥内容返回给到用户;
③用户在自己的本地环境中,使用公钥加密原先的NewPassword,获得加密后的内容;
④用户再次发送新的命令,命令中包含使用指定的密钥解密被加密的内容,以及使用解密后的结果,再用于修改密码。
在这个过程中,由于使用的是非对称密钥,而且私钥只存在于云主机内,所以任何其他的人都无法获取,从而解密出原始的密码,进而保护了用户的机密内容安全。
6) 安全与便捷的远程登录
(1)服务器远程登录的安全问题
云上服务器运维的另一个常见的使用场景是远程登录。因为在云服务器内,凡是发生了仍未被自动化解决掉的问题,就需要相关人员远程登录到服务器内,手动操作进行排查和解决。在远程登录时,就会遇到这样几个问题:
多数的人会使用帐号和密码登录,而大多数人很难记住很多的密码,所以往往只是使用了几种相似的密码用在各种网络帐号上。但是在网络上,却有着着层出不穷和防不胜防的窃密手段,例如字典攻击、暴力破解、网络钓鱼、彩虹表攻击、键盘攻击、爬行搜索等,很可能某个常用的密码早已被泄漏,并且在黑市上交易了数次,只是自己还未觉察。
使用账号密码登录比较危险,若改用SSH密钥登录,一般需要服务器公网IP,云服务器一旦有了公网IP,也会面临着网络上的各种攻击风险,例如TCP重置攻击、模拟攻击、中间人攻击、DDoS攻击等,防不胜防。不仅如此,用户还需要谨慎管理服务器的帐号与凭据,管理云服务器防火墙设置,管理主机帐号的分配和回收,万一工作有疏漏,就可能会产生安全性事故。
服务器的安全管理和快捷访问两方面的需求,难以两全其美。如果遇到了类似的问题,可以尝试使用ECS的会话管理服务,可以完美解决上面所提到的的各种问题。
第一,在使用会话管理服务时,不需要服务器有公网IP,即可避免暴露在公网上,也就免除了被攻击的可能性。
第二,远程登录不需要输入账号名和密码,也就避免了密码密钥管理和记录的负担,同时也避免了密钥系路发生风险。第三,能够保证权限被适当使用,这一点依靠会话管理将权限控制统一管理和分配用户的连接权限。
接下来介绍会话管理功能实现的方法及好处:
(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