版本
OS: RHEL 8.x
我已经安装了一项服务 - 称之为
foosvc
- 到 /usr/lib/systemd/system/foo.service
,配置如下:
[Unit]
...
After=syslog.target network.target
[Service]
...
ExecStart=/usr/sbin/foosvc fg
...
[Install]
WantedBy=multi-user.target
当主机 EC2 重新启动时,此服务将按预期重新启动。但是,似乎存在竞争条件:即,如果我手动重新启动服务,
sudo systemctl restart foosvc
它监听端口 6000,如下所示:
foosvc 780 username 21u IPv4 22462 0t0 TCP 127.0.0.1:6000 (LISTEN)
foosvc 780 username 21u IPv4 22462 0t0 TCP 172.30.41.149:6000 (LISTEN)
其中 IP 地址
172.30.41.149
是 AWS 内部的 IP,外部 IP 是附加到此 EC2 的弹性 IP(此处未列出)。
但是,如果我从仪表板重新启动 EC2,
foosvc
会按预期自动启动,但仅侦听端口 6000 以获取环回 IP 地址:
foosvc 780 username 21u IPv4 22462 0t0 TCP 127.0.0.1:6000 (LISTEN)
问题:如何配置
foosvc
以便在系统重新启动时,foosvc
侦听本地主机和内部 AWS IP 地址上的端口 6000?
注意:
foosvc
在端口 6000 上侦听 TCP 和 UDP。
私有IP地址通过DHCP分配。在开始服务之前,您需要使接口变得可路由。
/etc/systemd/network
中为您的主 ENI 创建配置文件,并指定 RequiredForOnline=routable
。systemd-networkd-wait-online
的需求依赖项。确保其已启用。