预算中的终端服务器

2020-07-23 10:30:37

以下是我试图拼凑一个终端服务器解决方案以继续追求家庭Linux系统的零接触配置和管理的结果-WARS尝试拼凑一个终端服务器解决方案来实现我的家庭Linux系统的零接触配置和管理。

我在家里运行着许多服务,涵盖了所有的基本服务,如媒体服务、DNS、本地云、PBX、我的世界容器等。这些服务几年前从一台Mac Mini开始,但随着时间的推移,已经发展到由两台冗余的无头PC组成。拥有两个系统而不是一个系统对正常运行时间至关重要,因为我的家人越来越依赖这些服务。通过像Ansible这样的工具接受IAC(Infrastructure As Code)非常有帮助;特别是在家庭网络的现实中,我不能简单地放弃其他责任来戴上我的系统管理员爸爸帽(在我的情况下是软呢帽)。

拥有这种冗余性是有帮助的,但我多次尝试从咖啡馆或沙发远程对其中一个进行系统更新,但PC在重新启动后无法重新启动。在这种情况下,我曾多次尝试从咖啡馆或沙发远程对其中一个进行系统更新,但PC在重启后无法重新启动。这通常是由于DKMS MOD在新的内核版本上不起作用,或者类似的事情造成的。我将不得不放弃它,直到我有时间进行物理接触(从沙发上下来),或者请求我的一个孩子充当遥控器。这些都是PC,它们没有内置任何iLO、LOM或DRAC。我无法证明升级到服务器级主板的成本是合理的。我需要一些能让我廉价地通过远程控制台访问这些系统的东西。我发现一只树莓派在我办公室的角落里积着灰尘,于是开始有了一些想法。

这已经有一段时间了,但我对固定定制串行电缆的记忆很深刻。花几个小时在数据中心欢快的白噪音嗡嗡声中,拿着我值得信赖的RS-232转接盒(das闪光灯),如果情况真的很紧急,偶尔会用上一个示波器,还有一大盒几乎所有可以想到的串行适配器和零调制解调器,但几乎从来不是你需要的。当时,我甚至把一盒闪亮的银色RJ45-DB9适配器变成了我们第一棵圣诞树的装饰品,给我的妻子(当时的女朋友)留下了深刻的印象。至少,我想她对此印象深刻。是的,她当然印象深刻。那是那一年全纽约最酷的树。灯光反射在银色的Sun Microsystems标识上的方式真正捕捉到了节日的气息。但我离题了。我不再有那盒串行适配器了,不知何故,我妻子记不起我们结婚后它放到哪里去了。于是,我去了亚马逊。

我的电脑背面没有串口,不过快速看一看引擎盖下的两台电脑都有Com1接口。我只需要拿到后板就可以进入了。但是,这些都相当便宜:https://www.amazon.co.jp/gp/product/B001Y1F0HW。

现在我的PC有串行端口,我需要决定如何连接它们。我的想法是使用Raspberry PI作为终端服务器,并使用USB-DB9 RS-232适配器连接到PC的两个串行端口,但是,在涉及到RAPI之前,我只需以相同的方式将服务器相互连接即可。我想灵活选择我使用的电缆,以防我改变电脑之间的距离,所以我选择了一个无线适配器,我可以把USB电缆延长器插入我需要的任何长度。我已经有备用的扩展器了,所以这个效果很好。我发现这些适配器有两个品种:PL2303和FTDI。我查阅了足够长的评论,找到了Linux用户成功使用FTDI的证据,并选择了这一种。Https://www.amazon.co.jp/gp/product/B0769G9HK4。

在每台PC上,我引导进入BIOS并确认启用了COM1。两者都可以将其关闭,但默认情况下它们都处于打开状态,因此不需要更改。当我在那里的时候,我还查看了BIOS的设置,以便在断电后自动开机,并对它们进行设置,这样我就不需要在恢复电源时按下按钮来启动它们。现在,两个系统都重新运行,并且每个系统都通过USB转串行连接到另一个系统,我已经完成了项目的硬件方面(除了即将到来的Rapi添加)。

我在我的服务器上运行CentOS。如果你把这篇文章当做指南,一定要记住这一点。在RHEL/CentOS/Fedora系列之外,以下软件配置可能会有所不同。

Getty是监听终端连接并提供对给定终端的登录访问的程序。在这里,我启用并启动了Com1(TtyS0)的服务。如果没有此功能,则永远不会提示远程串行用户登录。

我需要将GRUB2配置为使用串行端口进行输入和输出,否则我将无法在重启时与GRUB交互。一个例子是在GRUB菜单中避开引导过程,以便引导到恢复模式或简单地从最后一个已知的工作内核引导。为此,我对/etc/default/GRUB进行了以下更改:

在GRUB_CMDLINE_LINUX的末尾添加了console=ttyS0,115200n8序列,这样内核也会使用串行端口。

从GRUB_CMDLINE_LINUX中删除了rhGB和Quiet,以便详细输出引导状态。

要激活这个新配置,我使用了grub2-mkconfig-o<;输出文件>;。您需要检查您的设置,但是对于最新的RHEL/CentOS/Fedora系统,对于MBR是/boot/grub2/grub.cfg,对于EFI是/boot/efi/efi/<;diso>;/grub.cfg。

有许多不同的工具可以用来访问终端,比如Screen、Minicom或TIP,但我想要一些可以完全作为守护进程管理连接并保留输出日志供我查看的工具。这一点很重要,因为有时当系统出现故障时,即使在永久存储不可用的情况下,它也可以将线索记录到控制台。有一个非常棒的程序叫做conserver,它可以做所有这些事情,甚至做得更多。您可以定义连接,无论它们是本地连接还是通过ssh连接。它可以通过访问规则来促进用户管理,甚至可以通过管理员轮流拥有写访问权限来并发连接到相同的终端会话。在串行控制台的世界里,这一切都非常令人兴奋。嗯,不管怎样,我认为这是令人兴奋的。

对于此特定设置,我以非常有限的方式安装和配置了conserver。两台服务器都独立运行conserver服务,而不是将其集中在一起。我将/etc/hosts中的控制台配置为指向两个系统上的localhost。这是必需的,因为默认情况下,conserver的客户端程序console连接到名为console的主机。最后,/etc/conserver.cf配置非常简单,其定义刚好足以指示它管理我们连接的USB串行适配器的tty(在我的例子中,两个系统的tty都是/dev/ttyUSB0)。

在每台服务器上,我安装了以下两个软件包,分别位于用于REHL/CentOS的Epel repo和用于Fedora的基本fedora repo中:

我发现这个包没有创建默认的日志目录,所以我需要提前创建:

此最小配置将为device/dev/ttyUSB0设置名为PEER的托管会话。如果您更愿意使用远程系统的主机名,请更改该名称。当然,如果tty名称与您的环境不匹配,请调整它。

#/etc/conserver.cf默认*{日志文件/var/consoles/&;;#';&;';&;';替换为控制台名称Timestamp 1hab;#write timeamp rw*;#Allow all user master localhost;}控制台对等{type device;device/dev/ttyUSB0;Parity None;Baud 115200;}Access*{Trusted 127.0.0.1;}。

现在,我已经安装并配置了所有硬件和软件,并将两台服务器分别连接到彼此的串行端口,现在可以使用conserver的控制台命令进行连接了。在上面的示例配置中,我命名了conserver会话对等项,因此我通过发出以下命令进行连接:

如果一切正常,当我在启动控制台后按Enter键时,应该会收到对等服务器的登录提示。控制台中的默认转义序列是ctrl-e c(ctrl和e键,松开,然后按c)。要断开与控制台的连接,请输入转义序列,后跟句点(ctrl-e c.)。要查看所有控制代码,请键入转义序列,后跟问号(ctrl-e c?)。Console上的手册页解释了其余内容,但是它涵盖了连接和断开正在运行的控制台会话的基础知识。您可以从同一界面查看日志历史记录,但我通常发现使用我最喜欢的分页程序在/var/console中打开生成的日志文件更容易。

到目前为止,这个设置对我的服务很好,在进行安装和网络接口重新配置时,我已经需要使用远程控制台访问几次,而不需要访问服务器。

没有解决的一个小缺点是,两个主板都不支持通过COM1访问BIOS,这很糟糕。然而,我可以没有它,因为它对我来说是如此罕见的需要。然而,这也意味着我不能通过远程控制台更改引导顺序来启动PXE引导Kickstart安装。我想我还是得从沙发上爬起来才行。在未来的某个时候,当我在市场上更换这些PC时,我肯定会寻找完全支持远程管理的主板。

还记得我在这篇文章的开头提到过树莓派吗?我还没有在这个项目中使用它,但它仍然在我的计划中。我可以让这两台服务器彼此充当终端服务器,也可以将USB连接和conserver位移到RAPI。考虑到它们紧挨着坐在一起,确实没有理由引入另一个故障点,所以我将保留它现在的配置。

不过,我确实希望能够远程控制每台服务器的电源。系统可能会进入控制台访问不足的糟糕状态。在这种情况下,我希望能够远程重启服务器的电源。当然,市场上有很多智能电源开关,但我的RAPI看起来很伤心,在角落里无所事事。我宁愿抓起几个继电器,并通过GPIO引脚将它们连接起来,这样我就可以通过RAPI进行远程电源切换。如果我能做到这一点,我会把它写进这篇文章的第二部分。

我还通过几本适用于我的环境的手册完成了这里的所有软件配置。我应该把这些角色变成合适的角色,如果有人对它们感兴趣的话,我会把它们发布到银河上。

我希望这对网络上的一些人是有帮助的,或者至少是有趣的。如果您有任何意见,请随时通过主页上的链接联系我。