大部分时候,IT运维工作都可以远程进行,只要能通过网络访问被管理的系统,就可以执行几乎所有任务。如果因为某些原因导致无法通过网络访问呢?此时可能需要亲自到达相关硬件设备旁,通过“本地访问”来排错。
如果这些硬件都在自己公司楼上的机房里,问题还不算太大。但如果用了云服务,硬件可能位于上千公里外,自己绝无可能亲自进入到云服务商的机房里,此时该怎么办?
对于Linode云平台来说,我们已经提供了非常好用的方法,让用户可以隔着网络对Linode云虚拟机进行“本地访问”。
故事是这样的:
某天,我们的一个用户决定将自己运行在Linode上的Windows虚拟机从巴黎区域迁移到阿姆斯特丹区域。通过Cloud Manager启动迁移(通常可在15分钟内完成)后,这个实例没有响应任何网络请求。事后分析发现,问题完全是误操作造成的,因为该虚拟机配置了静态IP,在迁移到阿姆斯特丹区域后,它获得了一个新IP,而这个IP并没有配置在接口上。
Linode Shell(Lish控制台)提供了对所有计算实例的直接控制台访问。通过Lish,我们可以轻松访问计算实例的内部Linux系统并运行命令、安装软件或配置应用程序。当无法通过SSH等其他方式连接服务器或整个网络栈瘫痪时,Lish就显得尤其有用。
除了Lish,其实我们还有一个名为Glish(Graphical Linode Shell,图形化Linode Shell)的工具,它能显示包括Windows在内的桌面环境。
当我们在Linode上运行不支持的Windows操作系统版本,并想向操作系统发送“CTRL + ALT + DEL”命令时,问题就来了。Glish并不具备这种内置功能。
这里所谓的“不支持的Windows操作系统版本”是指可以在Linode上运行,但在进行调试时无法得到Linode官方支持的Windows版本。
如果虚拟机正常启动(也就是通过了“BIOS”阶段并尝试启动),Linode的工作就完成了;如果实例无法正常运行,技术支持人员将无法提供任何调试帮助。那么接下来就一起看看有哪些选项可以修复接口的IP地址。
- 提取一个有效的GLISH会话ID,然后使用noVNC通过WebSocket进行连接(比较复杂);
- 使用Windows SAC控制台配置网络适配器的IP(相对简单)。
该用户决定选择方案2。进入Linode Cloud Manager,点击虚拟机并启动Lish控制台。随后应该可以看到类似下图所示的界面:
我们在这里看到的是Windows内置的特殊管理控制台(SAC,Special Admin Console)功能。
键入“cmd”并按下回车键,我们会得到一个输出结果,其中显示创建了一个新的“通道”。
创建通道后,我们需要切换到该通道。为此可以按ESC键,然后按TAB键。这将切换到新通道,并提示我们对服务器进行身份验证。如果曾在Linux中使用过screen,那么这个概念一定不会陌生。
登录后,就能看到熟悉的命令提示符界面了。
在这里,我们可以启动PowerShell来执行更复杂的操作,但现在我们只需使用经典的netsh命令来配置新的网络设置,以确保替换后的IP地址和子网能与虚拟机相匹配。
在Cloud Manager中点击虚拟机,然后点击Network选项卡,即可看到这些设置:
随后使用如下命令:
netsh interface ip set address "Ethernet" static YourNewIP Mask Gateway
例如:
netsh interface ip set address "Ethernet" static 172.233.47.111 255.255.255.0 172.233.47.1
如果虚拟机连接了多个网络接口,请将“Ethernet”替换为适配器名称。