如何在具有多个 IP 的机器上设置守护进程?

如何在具有多个 IP 的机器上设置守护进程?

我有一个带有两个 IP 地址(即 IP1 和 IP2)的 Linux 机器。

我有一个服务器进程正在监听特定端口(例如 60000)。现在,我想在上述 Linux 机器上运行该服务器进程的两个副本。我该如何设置系统,以便让进程 1 处理发往 IP1:60000 的数据包,让进程 2 处理发往 IP2:60000 的数据包?

或者我可以吗?

答案1

通常,大多数守护进程在配置中都会有一个选项来控制它将使用哪个 IP 地址和端口对绑定或者继续监听(请参阅man 2 bind以了解 C 系统调用级别的详细情况)。

更改配置并重新启动守护程序后,您可以使用该netstat -ln命令查看它绑定的内容。示例输出如下:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     

0.0.0.0表示所有 IP,:22表示它正在监听目标 TCP 端口 22。第二列0.0.0.0:*表示接受所有源 IP 和源端口。

就您而言,您应该看到一行具有像这样的本地地址12.12.12.12:6000,而另一行具有像这样的本地地址13.13.13.13:6000

如果配置文件中似乎没有选项,则可能是守护进程本身的命令行开关。在这种情况下,您可能需要编辑启动文件/etc/init.d/whatever。但通常情况并非如此。

答案2

进程本身通常控制其监听的 IP 地址。例如,在 Apache 中,您可以在指令中设置监听 IP <VirtualHosts>

相关内容