Как использовать AWS Network Load Balancer с пользовательским python сервером - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь настроить сервер 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 на всех портах (пока я пытаюсь это выяснить)

Кроме того, я просто пытаюсь научиться использовать балансировщик нагрузки и подключаться с клиента. Я не планирую использовать это в более крупном проекте :) Любая помощь в том, где мое мышление пошло не так, будет принята с благодарностью!

1 Ответ

3 голосов
/ 08 апреля 2020

Ваше Python приложение только прослушивает соединения с локального хоста. Измените это:

HOST = '127.0.0.1'

На это:

HOST = '0.0.0.0'
...