gpt4 book ai didi

NGINX 负载平衡 Turn 服务器

转载 作者:行者123 更新时间:2023-12-03 19:34:10 31 4
gpt4 key购买 nike

我正在尝试将负载均衡器放在 Turn 服务器前面以与 WebRTC 一起使用。我在下面的示例中使用了一个轮流服务器,直到负载平衡器正常工作。 Turn 服务器需要多个端口,包括一个 UDP,如下所示:

  • TCP 80
  • TCP 443
  • TCP 3478
  • TCP 3479
  • UDP 3478

  • 我曾尝试在 Turn Server 前放置一个 Amazon Elastic Load Balancer (AWS ELB),但它不支持 UDP 端口。所以我现在在 EC2 实例上运行 Ubuntu,所有这些端口都打开并且我已经安装了 NGINX。

    我已经编辑了/etc/nginx/nginx.conf 文件,并向其中添加了一个“流”部分,其中包含每个端口的上游和服务器。但是,它似乎没有正确传递流量。
    stream {
    # IPv4 Section
    upstream turn_tcp_3478 {
    server 192.168.1.100:3478;
    }
    upstream turn_tcp_3479 {
    server 192.168.1.100:3479;
    }
    upstream turn_upd_3478 {
    server 192.168.1.100:3478;
    }

    # IPv6 Section
    upstream turn_tcp_ipv6_3478{
    server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:3478;
    }
    upstream turn_tcp_ipv6_3479{
    server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:3479;
    }
    upstream turn_udp_ipv6_3478{
    server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:3478;
    }

    server {
    listen 3478; # tcp

    proxy_pass turn_tcp_3478;
    }
    server {
    listen 3479; # tcp
    proxy_pass turn_tcp_3479;
    }
    server {
    listen 3478 udp;
    proxy_pass turn_upd_3478;
    }
    server {
    listen [::]:3478;
    proxy_pass turn_tcp_ipv6_3478;
    }
    server {
    listen [::]:3479;
    proxy_pass turn_tcp_ipv6_3479;
    }
    server {
    listen [::]:3478 udp;
    proxy_pass turn_udp_ipv6_3478;
    }
    }

    我还在/etc/nginx/conf.d/load-balancer.conf 中创建了一个自定义负载均衡器配置文件,并将以下内容放入其中。
    upstream turn_http {
    server 192.168.1.100;
    }
    upstream turn_https {
    server 192.168.1.100:443;
    }

    upstream turn_status {
    server 192.168.1.100:8080;
    }

    upstream turn_ipv6_http {
    server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:80;
    }
    upstream turn_ipv6_https {
    server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:443;
    }

    server {
    listen 80;

    location / {
    proxy_pass http://turn_http;
    }
    }

    server {
    listen 443 ssl;

    server_name turn.awesomedomain.com;
    ssl_certificate /etc/ssl/private/nginx.ca-bundle;
    ssl_certificate_key /etc/ssl/private/nginx.key;

    location / {
    proxy_pass https://turn_https;
    }
    }

    server {
    listen 8080;

    location / {
    proxy_pass http://turn_status;
    }
    }

    server {
    listen [::]:80;

    location / {
    proxy_pass http://turn_ipv6_http;
    }
    }

    server {
    listen [::]:443 ssl;

    server_name turn.awesomedomain.com;
    ssl_certificate /etc/ssl/private/nginx.ca-bundle;
    ssl_certificate_key /etc/ssl/private/nginx.key;

    location / {
    proxy_pass https://turn_ipv6_https;
    }
    }

    根据自定义 load-balancer.conf 文件,http 和 https 流量似乎工作正常。

    我不确定为什么我在 ngnix.conf 文件中配置的 TCP/UDP 端口没有按预期工作。

    最佳答案

    您对 NGINX 负载均衡器的配置很好。

    我建议验证以下内容:

  • 您的 Amazon EC2 Turn Server 实例中的安全组应具有与您的负载均衡器配置匹配的入站端口。
  • 检查您的turn 服务器上的配置文件,并验证它正在监听的端口与您在负载均衡器上转发的端口是否相同。例如,您在 NGINX 配置上转发了 TCP 3479。您需要确保轮流服务器正在监听该端口。
  • 最后,您可能还需要设置一些类似于您在 Turn 服务器上设置的 IP 表。查看 Turn Server 的配置,看看是否需要在负载均衡器上进行任何 iptables 或 ip6table 配置。
  • 关于NGINX 负载平衡 Turn 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566225/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com