文章图片
文章图片
解决生产问题是系统和网络管理员的主要职责之一。事实上,我一直发现这是基础设施工程中最有趣的内容之一。根据需要深入研究遇到的问题,您不仅能够(最终)圆满解决问题,而且在此过程中还可以学到许多正常情况下无法接触的东西。
操作系统当然也存在这样的机会。随着时间推移,操作系统会变得越来越复杂,管理员必须要掌握无数的配置文件和设置。尽管基础架构即代码和自动化大大改善了服务器的预置和管理,但错误和故障总是难免出现,导致系统无法正常启动。问题的种类数不胜数:缺少硬件驱动程序、文件系统配置错误、网络配置无效、权限不正确等等。而更糟糕的是,许多问题实际上会将管理员拒之门外,让他们无法登录、诊断问题以及执行适当的修复措施。唯一的选择是与服务器建立带外连接。此外,尽管客户可以查看 Amazon EC2 实例的控制台输出,但在此之前,他们无法与其进行交互。
- 控制台输出:
https://docs.aws.amazon.com/A...
- Amazon EC2 串行控制台:
https://docs.aws.amazon.com/A... - Amazon Elastic Compute Cloud (EC2):
https://aws.amazon.com/ec2/
文章图片
想要了解更多亚马逊云科技最新技术发布和实践创新,敬请关注2021亚马逊云科技中国峰会!点击图片即刻报名~
Amazon EC2 串行控制台简介 Amazon EC2 串行控制台适用于基于 Amazon Nitro 系统的 Amazon EC2 实例。它支持所有主要的 Linux 发行版、FreeBSD、NetBSD、Microsoft Windows 和 VMWare。
无需任何能够正常运行的网络配置,即可在亚马逊云科技管理控制台中使用基于浏览器的外壳程序或通过到托管的控制台服务器的 SSH 连接,从而连接到实例。无需在您的实例上运行 sshd 服务器:只需为
root
账户分配一个密码,因为您将需要使用此密码来登录。然后,您可以输入命令,如同使用直接连接到实例串行端口的键盘和显示器一样操作。- Amazon EC2 串行控制台:
https://docs.aws.amazon.com/A... - Amazon Nitro 系统:
https://aws.amazon.com/ec2/ni...
- 在 Linux 上,您可以触发 Magic SysRq 命令以生成崩溃转储、终止进程等。
- 在 Windows 上,您可以使用应急管理服务 (EMS) 和特殊管理控制台 (SAC) 中断启动进程,然后以安全模式启动。
- Magic SysRq:
https://en.wikipedia.org/wiki...
- Amazon EC2 串行控制台:
https://docs.aws.amazon.com/A... - 服务控制策略:
https://docs.aws.amazon.com/o... - AWS Identity and Access Management (IAM):
https://aws.amazon.com/iam/ - Amazon EC2 串行控制台:
https://docs.aws.amazon.com/A...
通过亚马逊云科技管理控制台连接到 Amazon EC2 串行控制台 首先,我启动了一个 Amazon Linux 2 实例。登录到该实例后,我决定管理其以太网接口的网络配置 (
/etc/sysconfig/network-scripts/ifcfg-eth0
),设置一个完全虚构的静态 IP 地址。请不要在生产实例上尝试此操作!
然后,我重启实例。几秒钟后,尽管实例已在 Amazon EC2 控制台中启动并运行,并且端口 22 已在其安全组中打开,但我无法使用 SSH 连接到该实例。
1$ ssh -i ~/.ssh/mykey.pem ec2-user@ec2-3-238-8-46.compute-1.amazonaws.com
2ssh: connect to host ec2-3-238-8-46.compute-1.amazonaws.com port 22: Operation timed out
Amazon EC2 串行控制台力挽狂澜!
- Amazon EC2 串行控制台:
https://docs.aws.amazon.com/A...
文章图片
然后在 Amazon EC2 控制台中右键单击实例的名称,再选择 Monitor and troubleshoot(监控和问题排查),然后选择 Amazon EC2 Serial Console(EC2 串行控制台)。
文章图片
这时将打开一个新窗口,确认实例 ID 和要连接的串行端口号。我只需单击 Connect(连接)。
文章图片
这时将会在我的浏览器中打开一个新选项卡。单击 Enter ,我将看到熟悉的登录提示。
1Amazon Linux 2
2Kernel 4.14.225-168.357.amzn2.x86_64 on an x86_64
3ip-172-31-67-148 login:
以
root
身份登录,进入熟悉的 shell 提示界面,我顿时放心不少。为此会话启用 Magic SysRq (
sysctl -w kernel.sysrq=1
),我首先列出可用的命令 (CTRL-0
+ h
),然后要求提供内存报告 (CTRL-0
+ m
)。您可以单击下面的图片以查看大图。文章图片
太棒了!这在解决复杂问题时肯定会派上用场。当然这里不需要这样做:我快速恢复网络接口的正常配置,然后重新启动网络堆栈。
文章图片
尝试再次连接到实例,我可以看到问题已经解决。
1$ ssh -i ~/.ssh/mykey.pem ec2-user@ec2-3-238-8-46.compute-1.amazonaws.com
2
3__|__|_)
4_|(/ Amazon Linux 2 AMI
5___|\___|___|
6
7https://aws.amazon.com/amazon-linux-2/
8[ec2-user@ip-172-31-67-148 ~]$
下面我快速演示以下使用亚马逊云科技命令行界面时的等效命令。
- 命令行界面:
https://aws.amazon.com/cli/
file://
前缀。1$ aws ec2-instance-connect send-serial-console-ssh-public-key --instance-id i-003aecec198b537b0 --ssh-public-key file://~/.ssh/mykey.pub --serial-port 0 --region us-east-1
然后,我以
.port
为用户名,通过 ssh 连接到串行控制台,并且收到登录提示。1$ ssh -i ~/.ssh/mykey.pem i-003aecec198b537b0.port0@serial-console.ec2-instance-connect.us-east-1.aws
2
3Amazon Linux 2
4Kernel 4.14.225-168.357.amzn2.x86_64 on an x86_64
5ip-172-31-67-148 login:
登录后,Magic SysRq 已经可用,我可以用
~B
+command
触发它。我还可以使用 ~. 终止控制台会话。开始使用 Amazon EC2 串行控制台 正如您看到的那样,Amazon EC2 串行控制台让您能够更方便地调试和修复 Amazon EC2 实例上出现的复杂启动和网络问题。您可以立即在以下亚马逊云科技区域开始使用此控制台,且不会产生额外费用:
- 美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、美国东部(俄亥俄)
- 欧洲(爱尔兰)、欧洲(法兰克福)
- 亚太地区(东京)、亚太地区(悉尼)、亚太地区(新加坡)
- Amazon EC2 串行控制台:
https://docs.aws.amazon.com/A... - 面向 Amazon EC2 的亚马逊云科技论坛:
https://forums.aws.amazon.com...
推荐阅读
- 计算机网络|计算机网络——DHCP协议详解
- Linux|Linux--网络基础
- 网络|一文彻底搞懂前端监控
- 网络夺命连环问系列|网络夺命连环问5--HTTP怎么传输大文件()
- 网络|网络编程释疑(TCP连接拔掉网线后会发生什么)
- 网络|简单聊聊压缩网络
- Java|图解四大IO模型与原理
- 卷积|吃透空洞卷积(Dilated Convolutions)
- 计算机网络|网桥与交换机
- Karpenter : 新一代 Kubernetes auto scaling 工具