Python 如何在AWS负载平衡器上使用ZeroMQ?
我有两个EC2实例(vm1、vm2)和一个内部网络负载平衡器,位于VPC中我的私有子网中。在vm1中,我运行一个程序来连接AWS负载平衡器:Python 如何在AWS负载平衡器上使用ZeroMQ?,python,amazon-web-services,zeromq,amazon-elb,internal-load-balancer,Python,Amazon Web Services,Zeromq,Amazon Elb,Internal Load Balancer,我有两个EC2实例(vm1、vm2)和一个内部网络负载平衡器,位于VPC中我的私有子网中。在vm1中,我运行一个程序来连接AWS负载平衡器: import zmq if __name__ == '__main__': context = zmq.Context() socket = context.socket(zmq.REQ) socket.connect("tcp://aws-loadbalancer-dns-name:1111") for i in ra
import zmq
if __name__ == '__main__':
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://aws-loadbalancer-dns-name:1111")
for i in range(5):
socket.send_string(str(i))
msg = socket.recv()
print('receive respond:', msg)
在vm2中,我还运行一个程序:
import zmq
import time
if __name__ == "__main__":
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:1111")
while True:
msg = socket.recv()
print('receive request:', msg)
socket.send_string(str(msg))
time.sleep(1)
它似乎失败了
如何调整AWS中的设置
还是我的代码有问题?非常感谢。第一部分:“我的代码有什么问题吗?”:
不,ZeroMQ用例代码似乎没有问题
在hunt上,可以根据需要在MCVE源代码中添加任意多个调试跟踪点,以便详细记录它从何处获得以及实际动态报告的内容:
[ 'EADDRINUSE', # L3
'EADDRNOTAVAIL', # L3
'ECONNREFUSED', # L3
'ENETDOWN', # L1 / L2 / L3
'ENODEV', # L1
'EFAULT',
'EFSM', # ZMQ Finite State Machine not in a state to obey this
'EAGAIN', # ZMQ Context() blocked
'EINPROGRESS',
'EINVAL', # ZMQ did not recognise a valid value in param
'EMTHREAD',
'ENOBUFS', # resources
'ENOMEM', # resources
'ENOCOMPATPROTO', # ZMQ protocol-handshaking
'EPROTONOSUPPORT', # ZMQ protocol
'ENOTSOCK', # ZMQ resource - not recognised as an "own" socket
'ENOTSUP', # ZMQ cannot support a request
'ETERM', # ZMQ Context() already entered into a .term()-state
...
]
第二部分:“如何调整AWS中的设置?” 这部分有点棘手 首先,查阅合同参数。如果AWS运营商不允许您在实例之间启动TCP/IP服务,则除了重新协商合同(选择其他限制较少的产品)之外,其他任何步骤都不会有帮助 如果TCP/IP服务未被阻止,请咨询AWS操作员支持热线,在各个实例上允许哪些端口号。除了上面提到的操作员策略之外,操作系统可能还有一些进一步的限制端口号范围,如果您的应用程序使用O/S阻塞的
:/:
(在上面的用例MCVE中是==1111
),任何尝试都会由于尝试使用禁止的资源而系统性地失败(改变
是最简单的补救办法,不是吗?)
对于任何其他情况,ZMQError将帮助您诊断被阻止操作的根本原因。可以根据需要在查找中添加任意数量的调试跟踪点。为什么您认为zeromq==echo服务器?