具有src ip保留功能的AWS UDP负载平衡

时间:2018-12-25 15:29:31

标签: amazon-web-services udp load-balancing

我在AWS上有一个k8s集群,该集群公开了DNS端点。这意味着它需要一个静态IP和端口53 / UDP。我们也将客户端的原始源IP保留到接受请求的k8s服务中。我很难找到执行它的负载均衡器。现在,我公开一个具有其IP的节点。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

目前,没有AWS负载平衡器在AWS内支持UDP-LoadBalancing。

当前有3种AWS负载均衡器类型:

  • 应用程序负载平衡器
    • 相当复杂的第7层负载均衡器,works with HTTP/HTTPS因此仅支持TCP
    • 您不会获得所需的静态IP
    • 这意味着UDP无法正常工作,并且您没有静态IP
  • 网络负载平衡器
  • 经典负载均衡器

这使您可以选择构建自己的负载均衡器for which NGINX might be an option。如果尝试这种方法,建议您设置多个负载均衡器实例以实现高可用性。然后,可以将带有Multi-Value-Answers的Route 53用作其前面的原始负载均衡器,它也可以进行运行状况检查。在这种情况下,您必须自己处理缩放和类似的事情。

答案 1 :(得分:0)

莫里斯的答案是正确的。

但是,有一种方法可以通过运行t3.nano ec2 linux实例来解决此问题,该实例将为您完成负载平衡。

您有责任自行缩放它,但是在某些情况下它是可行的。

只需将以下内容添加到Userdata(下面的cloudformation YAML示例)

UserData:
        Fn::Base64:
          !Sub |
            #!/bin/bash
            echo 1 > /proc/sys/net/ipv4/ip_forward
            service iptables start
            iptables -t nat -A PREROUTING -p udp --dport 53 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination ${instance0.PrivateIp}:53
            iptables -t nat -A PREROUTING -p udp --dport 53 -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination ${instance1.PrivateIp}:53
            iptables -t nat -A PREROUTING -p tcp --dport 53 -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination ${instance0.PrivateIp}:53
            iptables -t nat -A PREROUTING -p tcp --dport 53 -m state --state NEW -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination ${instance1.PrivateIp}:53
            iptables -t nat -A POSTROUTING -p udp --dport 53 -j MASQUERADE
            iptables -t nat -A POSTROUTING -p tcp --dport 53 -j MASQUERADE
            service iptables save

我希望这会有所帮助,我在统计模块中遇到了一些问题,但是使用--every 2 ==> --every 1可以100%满意,对此解决方案感到满意。

答案 2 :(得分:0)