如何通过使用Ansible来解决DHCPD和HTTPD启动失败

去年,我遇到了一个问题:HTTPD(Apache Web服务器)在重新启动或冷启动时无法启动。 为了解决这个问题,我添加了覆盖文件/etc/systemd/system/httpd.service.d/override.conf。 它包含以下语句,以延迟HTTPD的启动,直到网络正确启动并在线为止。 (如果您已阅读以前的文章,您将知道我使用NetworkManager和systemd,而不是旧的SystemV网络服务和启动脚本)。

Trying to delay the startup of httpd so that the network is

fully up and running so that httpd can bind to the correct

IP address

By David Both, 2020-04-16

[Unit]
After=network-online.target
Wants=network-online.target
这种规避一直有效到最近,那时我不仅需要手动启动HTTPD,而且还需要手动启动。 我还必须手动启动DHCPD。 由于某种原因,对network-online.target的等待不再起作用。

原因和解决方法
经过更多的互联网搜索并在/ etc目录中进行了一些挖掘之后,我认为我发现了真正的罪魁祸首:我从SystemV和/etc/init.d目录中的起始日期中找到了一个古老的残留物。有一个不应该存在的旧网络启动文件的副本。我认为该文件是我在切换到NetworkManager之前花一些时间使用旧网络程序后遗留下来的。

显然,systemd完成了应做的工作。它从该SystemV启动脚本中即时生成了一个目标文件,并尝试同时使用SystemV启动脚本和它创建的systemd目标来启动网络。这导致systemd在网络准备就绪之前尝试启动HTTPD和DHCPD,并且那些服务超时并且无法启动。

我从服务器上删除了/etc/init.d/network脚本,现在它重新启动,而无需手动启动HTTPD和DHCPD服务。这是一个更好的解决方案,因为它是根本原因,而不仅仅是绕开。

但这仍然不是最佳解决方案。该文件归network-scripts程序包所有,如果该程序包被更新,它将被替换。因此,我还从服务器中删除了该软件包,以确保不会再次发生这种情况。你能猜出我是怎么发现的吗?

在我升级到Fedora 34之后,DHCPD和HTTPD再次无法启动。经过一些额外的实验,我发现override.conf文件还需要添加几行。这两个新行强制这两个服务要等到60秒后才能启动。到目前为止,这似乎再次解决了该问题。

修改后的override.conf文件现在如下所示。它不仅在启动服务之前睡眠60秒,而且还指定直到network-online.target启动后才启动。后面的部分似乎被破坏了,但是我认为我也可以同时做两件事,因为一个或另一个通常都可以工作。

使用Ansible
这种类型的问题很容易使用Ansible解决。 因此,我创建了一个相对简单的剧本。 它有两个戏剧。 首先播放会删除网络脚本,然后删除/etc/init.d/network脚本,因为如果该脚本存在并且该软件包不存在,则该脚本将不会被删除。 我的系统中至少有一个遇到这种情况。 我对所有主机(无论是工作站还是服务器)运行此游戏。

第二次仅在服务器上运行,并安装了override.conf文件。

Ansible消除了我网络上的其他两台主机和我支持的另一台网络上的一台主机的麻烦。所有仍然拥有SystemV网络脚本和network-scripts程序包的主机已有好几年没有重新安装过了。他们都使用dnf-upgrade进行了升级。我从未在较新的主机上规避NetworkManager,因此它们没有此问题。
这本剧本还安装了这两种服务的替代文件。请注意,替代文件没有引用为其提供配置替代的服务。出于这个原因,它可以用于任何无法启动的服务,因为尝试启动它们无法使NetworkManager服务完成启动。

最后的想法
尽管此问题与systemd启动有关,但我不能将其归咎于systemd。这至少部分是我绕过systemd时引起的自我困扰的问题。当时,我以为自己会让事情变得更容易,但是我花了更多的时间来查找由于避免使用NetworkManager而导致的问题,这比我以前节省的时间要多,因为无论如何我都必须学习它。然而实际上,此问题有多种可能的原因,所有这些都由Ansible解决。

好了,本文到此结束。如果对编程、计算机、程序员方面感兴趣的话,欢迎私信联系我,随时交流!点个关注,是对我莫大的鼓励!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miku丨无形

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值