amazon-web-services - 如何在 AWS EC2 实例之间发送和接收数据?
问题描述
我有两个工人和一个参数服务器,即总共 3 个 ec2 实例。我需要在 3 个实例之间进行通信(同时发送和接收数据包)。
Parameter-server 实例运行以下代码:
import socket
TCP_IP = '0.0.0.0'
port = 8080
s = 0
MAX_WORKERS = 2
###other codes
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Connecting to port : ", port)
s.bind((TCP_IP, port))
s.listen(1)
conn, addr = s.accept()
print('Connection address:', addr)
conn, addr = s.accept()
print('Connection address:', addr)
k=0
while 1:
size = safe_recv(8,conn)
size = pickle.loads(size)
data = safe_recv(size,conn)
###other codes
conn.sendall(size)
conn.sendall(global_var_vals.value)
###Other codes
conn.close()
s.close()
Worker 实例运行以下代码:
import socket
TCP_IP = '<parameter-server ip>'
port = 8081 #for worker-1, 8082 for worker-2
port_main = 8080
###other codes
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, port_main))
#receiving the variable values
recv_size = safe_recv(8, s)
recv_size = pickle.loads(recv_size)
recv_data = safe_recv(recv_size, s)
var_vals = pickle.loads(recv_data)
s.close()
###Other codes
# Opening the socket and connecting to server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, port))
while not mon_sess.should_stop():
###other codes
s.sendall(send_size)
s.sendall(send_data)
#receiving the variable values
recv_size = safe_recv(8, s)
recv_size = pickle.loads(recv_size)
recv_data = safe_recv(recv_size, s)
var_vals = pickle.loads(recv_data)
###Other codes
s.close()
但是当我运行这段代码时,它显示连接超时
我也尝试通过telnet连接,但除了端口 22,其他端口显示以下错误:
> telnet <parameter-server ip> 8080
Trying <parameter-server ip>...
telnet: Unable to connect to remote host: Connection timed out
但是对于端口 22,它显示:
> telnet <parameter-server ip> 22
Trying <parameter-server ip>...
Connected to <parameter-server ip>
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
如何在实例之间建立连接?提前致谢。
解决方案
实例是否在同一个 VPC 子网中?如果没有,请检查 NACL 规则以确保您也让您需要的端口通过子网 NACL。
推荐阅读
- c# - C# 有没有办法在一个函数中转换 2 个事件?
- c# - 如何在二进制文件中将 AssemblyVersion 标记为 FileVersion
- python - 使用 Tabula 从 PDF 中将表格作为字符串读取
- angular - 角度 9 的运行错误:严格模式代码可能不包含 with 语句
- javascript - 列表中的信息并显示在地图上
- domain-driven-design - 六边形架构在控制器或服务中聚合
- html - WKWebView 没有响应长按
- php - 如何使用 PHP 检查特定范围内的变量
- python - 遍历列,查找选择,创建新列
- typescript - 仅当用户在指定时间内离线时才发出值