我正在尝试在AWS上设置python服务器。 我想通过弹性负载平衡器访问此服务器。但是,我在解决问题时遇到了一些困难。 到目前为止,我已采取的步骤如下。
我创建了一个新的EC2实例,将其ssh-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流量被允许(暂时,在我尝试弄清楚这一点时)
此外,这只是我尝试学习如何使用负载平衡器并从客户端连接的方法。我不打算在更大的项目中使用它:)对我的想法出错的任何帮助将不胜感激!
答案 0 :(得分:3)
您的Python应用仅监听来自本地主机的连接。更改此:
HOST = '127.0.0.1'
对此:
HOST = '0.0.0.0'