linux - 使用 rc.local 启动网络依赖服务

标签 linux amazon-web-services networking docker centos

使用/etc/rc.local 来初始化依赖于网络的服务是否安全?

我正在使用它来启动一项服务,该服务在启动过程中向网络发出一些请求。偶尔会发生服务启动失败的情况(并非总是如此)。

这是我遇到的错误:

2016-06-07T12:01:48.724+0000 W NETWORK [ReplicationExecutor] getaddrinfo("my_machine_local_dns") 失败:名称或服务未知

当它失败时,如果我尝试在机器启动完成后手动初始化服务,没有错误。

我正在考虑任何比赛条件。示例:失败是因为服务在网络加载完成之前启动或类似原因。

我在 aws vpc 中使用 centos,相关服务在 docker 容器中运行。

最佳答案

您的服务在启动时失败,因为您的实例位于私有(private)子网中。私有(private)子网中的实例在完全创建之前没有互联网连接。一旦在私有(private)子网中完全创建了实例,他们就开始与 NAT 实例对话,然后获得互联网连接。这就是为什么在启动时运行它会失败的原因。

Is it safe to use /etc/rc.local to initialize services that depend on the network?

/usr/local/确实是正确的地方,而/opt 确实是为第三方应用程序准备的; “/opt 保留用于安装附加应用程序软件包。”根据最佳实践。

关于linux - 使用 rc.local 启动网络依赖服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37704929/

相关文章:

c - 快速比较 IP 地址的最智能方法?

linux - 双角色 WiFi SoftAP

java - Java webapp 中请求的异步处理

c# - 从 .net 程序读取 linux 中的文件?

linux - 仅第一次在 shell 中执行特定命令

linux - 使用 dpkg-deb 创建 deb 文件不会将/etc/中的文件添加到 conffiles

ruby-on-rails - 如何修复部署 AWS eb 的 "Your Ruby version is 2.5.3, but your Gemfile specified 2.5.1"?

amazon-web-services - CDK 中的 SQS 接口(interface)端点

linux - 你如何在 Linux 中批量重命名文件?

amazon-web-services - Amazon AWS NAT 网关不工作,EC2 未在 ECS 集群中注册