首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gcloud负载均衡器背后的UDP服务器:接收确定,应答失败

Gcloud负载均衡器背后的UDP服务器:接收确定,应答失败
EN

Server Fault用户
提问于 2016-04-07 03:35:51
回答 1查看 802关注 0票数 2

我在Google网络负载均衡器后面设置了一个UDP服务器(在VM上)。服务器绑定到0.0.0.0。UDP服务器可以接收发送给平衡器的消息,但回复不会返回到客户端。没有报告错误,而且tcpdump没有显示出任何异常。我已经确保所有防火墙规则都允许这个流量,负载均衡器被设置为转发所有端口。

我绝不是网络专家,但我怀疑UDP服务器出了什么问题,因为接收消息的地址与用于回复(sendto())的地址不同。

我正在使用标准库中的Python的socketserver模块作为回显服务器来测试所有这些:

代码语言:javascript
复制
import SocketServer

class MyUDPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        data = self.request[0].strip()
        socket = self.request[1]
        print "{} wrote:".format(self.client_address[0])
        print data
        socket.sendto(data.upper(), self.client_address)

if __name__ == "__main__":
    HOST, PORT = "0.0.0.0", 5029
    server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler)
    server.serve_forever()

VM只有一个网络接口,具有本地IP 10.240.x.x。如果我将UDPServer绑定到这个本地IP,那么这个服务器甚至不会接收消息。

没有负载均衡器,一切正常工作,即消息被正确地回放回客户端。

问:我应该怎么做才能让我的UDP服务器回复消息?

编辑:这一讨论可能是相关的。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2016-04-07 04:20:31

对于我的一个毕业项目,我不得不处理一个类似的问题:负载平衡DNS。

https://access.redhat.com/documentation/en-US/Red_帽子_企业_Linux/7/html/Load_平衡器_Administration/s1-initial-setup-forwarding-VSA.html

/etc/sysctl.conf

代码语言:javascript
复制
 net.ipv4.ip_nonlocal_bind = 1

然后尝试将python应用程序绑定到负载均衡器的公共IP。

基本上,您的服务器是在其私有IP上响应,而客户端正在期待负载均衡器的响应。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/768681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档