修复生产问题是系统和网络管理员的关键职责之一。事实上,我一直发现它是基础设施工程最有趣的部分之一。潜水如需要深入的问题,掌握在手头的问题中,不仅是(最终)对解决问题的满意度,你也会在路上学习很多事情,你可能不会在正常情况下暴露。
操作系统肯定存在此类机会。随着时间的推移,他们已经增长了更复杂,强迫管理员掌握了一亿个配置文件和设置。虽然代码和自动化的基础设施具有大大改进的配置和管理服务器,但总是有错误的错误和故障空间,防止系统正确启动。该列表是无限的:缺少硬件驱动程序,错误配置文件系统,无效的网络配置,不正确的权限等。要使事情更糟糕,很多问题都可以有效地将管理员锁定为系统,防止它们登录,诊断问题并应用适当的修复程序。唯一的选项是与您的服务器带带外连接,虽然客户可以查看EC2实例的控制台输出,但它们无法与其进行交互 - 直到现在。
今天,我非常乐意通过建立与Amazon Elastic Compute Cloud(EC2)实例建立串行连接来宣布EC2串行控制台,简单而安全的方法来解决引导和网络连接问题。
引入EC2串行控制台EC2串行控制台访问可用于基于AWS Nitro系统的EC2实例。它支持所有主要的Linux发行版,FreeBSD,NetBSD,Microsoft Windows和VMware。
如果没有任何工作网络配置,您可以使用AWS管理控制台中的基于浏览器的shell或与托管控制台服务器的SSH连接连接到实例。不需要在实例上运行sshd服务器:唯一的要求是root帐户已被分配密码,因为这是您将要登录的密码。然后,您可以输入命令,就像您有一个键盘和监视器直接连接到实例的串行端口之一。
在Linux上,您可以触发Magic Sysrq命令以生成崩溃转储,杀死进程等。
在Windows上,您可以使用紧急管理服务(EMS)和特殊管理控制台(SAC)中断引导过程,并以安全模式引导。
访问实例的控制台是一个特权操作,应该是紧密控制的,这就是为什么默认在帐户级别不允许使用EC2串行控制台访问。一旦您允许访问帐户,它会应用于此帐户中的所有实例。由于AWS Identity和Access Management(IAM)权限,管理员还可以在组织级别应用于组织级别的控件。正如您所期望的,与EC2串行控制台的所有通信都是加密的,并且我们为每个会话生成唯一密钥。
让我们使用Linux进行快速演示。该过程与其他操作系统类似。
使用AWS管理控制台连接到EC2串行控制台,我启动了Amazon Linux 2实例。登录它,我决定为其以太网网络接口(/ etc / sysconfig / network-scripts / ifcfg-eth0)打以敲诈网络配置,设置完全虚伪的静态IP地址。请不要在生产实例上尝试!
然后,我重新启动实例。几秒钟后,虽然实例在EC2控制台中运行并在其安全组中打开端口22,但我无法使用SSH连接到它。
$ ssh -i〜/ .ssh / [email protected] SSH:连接到主机EC2-3-238-8-46.Compute- 1.Amazonaws.com端口22:操作超时
首先,我需要允许在我的帐户中访问控制台访问权限。所有所花款都在EC2设置中勾选了一个框。
然后,请在EC2控制台中右键单击实例的名称,我选择监视器和故障排除;然后EC2串行控制台。
这将打开一个新的窗口,该窗口确认了要连接的实例ID和串行端口号。我只需单击“连接”。
这将在浏览器中打开一个新标签。击中Enter,我看到熟悉的登录提示。
为此会话启用Magic Sysrq(Sysctl -w kernel.sysrq = 1),我首先列出可用的命令(Ctrl-0 + h),然后询问内存报告(Ctrl-0 + m)。您可以单击下面的图像以获得更大的视图。
非常酷!这肯定会派上易于解决复杂问题。这里不需要这一点:我很快恢复网络接口的有效配置,我重新启动网络堆栈。
尝试再次连接到实例,我可以看到问题已解决。
现在,让我快速使用AWS命令行界面向您展示等效命令。
使用AWS CLI连接到EC2串行控制台,这同样简单。首先,我将实例密钥对的SSH公钥发送到串行控制台。请务必添加文件://前缀。
然后,使用<实例ID> issh到串行控制台。 端口<端口号> 作为用户名,我用登录提示打招呼。 一旦我登录,Magic Sysrq可用,我可以用〜b +命令触发它。 我还可以用〜...终止控制台会话 EC2串行控制台开始使用EC2串行控制台,EC2串行控制台可以更轻松地调试和修复EC2实例上发生的复杂启动和网络问题。 您今天可以在以下AWS地区开始使用它,无需额外费用: 请试一试,让我们知道你的想法。 我们总是期待您的反馈! 您可以通过您通常的AWS支持联系人或Amazon EC2的AWS论坛发送。 - 朱利安