Я пытаюсь настроить сервер python на AWS. Я хотел бы получить доступ к этому серверу через балансировщик нагрузки elasti c. Однако у меня возникли некоторые проблемы с устранением неполадок в моей проблеме. Шаги, которые я предпринял, следующие:
Я создал новый экземпляр EC2, s sh -ed в нем, создал мой сервер и запустил его.
код для этого сервера выглядит следующим образом:
import socket
HOST = '127.0.0.1'
PORT = 3002
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
print("listening")
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
Затем я создал новую целевую группу и зарегистрировал для нее этот экземпляр ec2. Целевая группа установлена для того же порта, что и сервер (3002).
Далее я создал балансировщик сетевой нагрузки. У этого балансировщика нагрузки есть прослушиватель, настроенный на порт 3002, для пересылки в целевую группу, которую я настроил.
Наконец, я создал локальный клиент на своем компьютере с python для связи с сервером.
Код для этого клиента следующий:
HOST = DNS name for load-balancer
PORT = 3002
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
Я думал, что клиент подключится к балансировщику нагрузки через порт 3002. Балансировщик нагрузки, у которого есть прослушиватель на этом порту, будет перенаправлять в целевую группу, которая также использует порт 3002. Следовательно, экземпляр ec2 получит подключение к этому порту и сможет справиться с этим. Однако ничего не принимается, и время соединения истекает.
Группы безопасности настроены так, чтобы разрешать все TCP-трафик c на всех портах (пока я пытаюсь это выяснить)
Кроме того, я просто пытаюсь научиться использовать балансировщик нагрузки и подключаться с клиента. Я не планирую использовать это в более крупном проекте :) Любая помощь в том, где мое мышление пошло не так, будет принята с благодарностью!