【问题标题】:How to use AWS Network Load Balancer with custom python server如何将 AWS 网络负载均衡器与自定义 python 服务器一起使用
【发布时间】:2020-07-20 22:04:40
【问题描述】:

我正在尝试在 AWS 上设置 python 服务器。 我想通过弹性负载均衡器访问此服务器。但是,我在解决我的问题时遇到了一些困难。 我目前采取的步骤如下。

我创建了一个新的 EC2 实例,通过 ssh 进入其中并创建了我的服务器并启动了它。

该服务器的代码如下:

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 流量都被允许(暂时我尝试解决这个问题)

另外,这只是我尝试学习如何使用负载平衡器并从客户端连接。我不打算在更大的项目中使用它:) 任何关于我的想法出错的帮助将不胜感激!

【问题讨论】:

  • 更正环回地址后,请务必了解 AWS 负载均衡器上的运行状况检查。

标签: python amazon-web-services sockets amazon-ec2 amazon-elb


【解决方案1】:

您的 Python 应用程序仅侦听来自 localhost 的连接。改变这个:

HOST = '127.0.0.1'

到这里:

HOST = '0.0.0.0'

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2020-04-21
    • 2021-01-10
    • 1970-01-01
    • 2018-04-02
    • 2019-12-30
    • 1970-01-01
    • 2015-05-24
    • 2021-07-16
    相关资源
    最近更新 更多