Как отправлять и получать данные среди экземпляров AWS EC2? - PullRequest
0 голосов
/ 20 октября 2019

У меня есть два рабочих и сервер параметров, т. Е. Всего 3 экземпляра ec2. Мне нужно общаться между 3 экземплярами (отправлять и получать пакеты одновременно).

Все три экземпляра имеют одинаковую конфигурацию группы безопасности: Inbound

Outbound

Сервер параметровЭкземпляр запускает следующий код:

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()

Рабочие экземпляры запускают следующий код:

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

Как установить соединение между экземплярами? Заранее спасибо.

1 Ответ

0 голосов
/ 20 октября 2019

Находятся ли экземпляры в одной подсети VPC? Если нет, проверьте правила NACL и убедитесь, что вы пропускаете нужные порты и через NACL подсети.

...