使用多个端口在单个 EC2 实例上托管多个 Plumber API?
Hosting multiple Plumber APIs on a single EC2 instance using multiple ports?
根据 R 非常好的 Plumber 文档,以及从 this helpful link 获得帮助,我能够使用 Plumber 库在 EC2 实例上设置一个 R API端点。
我在 EC2 实例的端口 8000 上有这个 API,并确认,如果我检查我的 EC2 实例中的进程,我可以在端口 8000 上看到我的 R API:
[ec2-user@ip-123-45-67-890 ~]$ lsof -i tcp:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
R 16784 ec2-user 11u IPv4 152626 0t0 TCP *:irdmi (LISTEN)
我想在同一个 EC2 服务器上启动第二个 API,我的问题是,我可以使用 EC2 服务器上的其他端口来为 API 服务吗?例如,在我的新 API 即 "plumbs" 和 API 的 R 文件中,我只需将端口更改为 8001:
# clear workspace and load library
rm(list = ls())
library(plumber)
# serve API
r <- plumb("NBA_API.R")
r$run(host="0.0.0.0", port=8001)
此外,对于 EC2 实例,更改安全组以便可以访问端口 8001。
这样做(使用不同的端口)是否正常,或者我是否会尝试在不同的端口上托管多个 API 来搞乱 EC2 实例?我想在弄乱我目前的 API.
之前知道这一点
在此先感谢您对此的任何帮助!
编辑 - 另外,如果可以使用端口 8001,这是否意味着我几乎可以使用任何端口来提供额外的 APIs(8002、8003、8004 等)。是否有任何我不应该使用的端口?
这应该不是问题。您可以在任意端口上托管任意数量的这些。您只需要确保安全组允许流量通过您的机器,如果适用,机器的本地防火墙也允许流量进入。
不过请注意,服务器上的 运行 R 并不是最佳选择。如果 R 进程曾经崩溃(例如,由于代码中的错误可能会在不太可能的情况下被绊倒),它不会自动重启。同样,如果服务器需要重新启动,您将需要在适当的端口上手动启动适当的进程以再次获取东西 运行。
您可以查看 https://www.rplumber.io/docs/hosting.html 中提到的一些托管选项,了解如何以更 "productiony" 的方式托管管道工。我没有在文档中专门针对 EC2,但是其中一些模式(包括 PM2)应该在 EC2 机器上工作得很好。
根据 R 非常好的 Plumber 文档,以及从 this helpful link 获得帮助,我能够使用 Plumber 库在 EC2 实例上设置一个 R API端点。
我在 EC2 实例的端口 8000 上有这个 API,并确认,如果我检查我的 EC2 实例中的进程,我可以在端口 8000 上看到我的 R API:
[ec2-user@ip-123-45-67-890 ~]$ lsof -i tcp:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
R 16784 ec2-user 11u IPv4 152626 0t0 TCP *:irdmi (LISTEN)
我想在同一个 EC2 服务器上启动第二个 API,我的问题是,我可以使用 EC2 服务器上的其他端口来为 API 服务吗?例如,在我的新 API 即 "plumbs" 和 API 的 R 文件中,我只需将端口更改为 8001:
# clear workspace and load library
rm(list = ls())
library(plumber)
# serve API
r <- plumb("NBA_API.R")
r$run(host="0.0.0.0", port=8001)
此外,对于 EC2 实例,更改安全组以便可以访问端口 8001。
这样做(使用不同的端口)是否正常,或者我是否会尝试在不同的端口上托管多个 API 来搞乱 EC2 实例?我想在弄乱我目前的 API.
之前知道这一点在此先感谢您对此的任何帮助!
编辑 - 另外,如果可以使用端口 8001,这是否意味着我几乎可以使用任何端口来提供额外的 APIs(8002、8003、8004 等)。是否有任何我不应该使用的端口?
这应该不是问题。您可以在任意端口上托管任意数量的这些。您只需要确保安全组允许流量通过您的机器,如果适用,机器的本地防火墙也允许流量进入。
不过请注意,服务器上的 运行 R 并不是最佳选择。如果 R 进程曾经崩溃(例如,由于代码中的错误可能会在不太可能的情况下被绊倒),它不会自动重启。同样,如果服务器需要重新启动,您将需要在适当的端口上手动启动适当的进程以再次获取东西 运行。
您可以查看 https://www.rplumber.io/docs/hosting.html 中提到的一些托管选项,了解如何以更 "productiony" 的方式托管管道工。我没有在文档中专门针对 EC2,但是其中一些模式(包括 PM2)应该在 EC2 机器上工作得很好。