WebRTC 彻底改变了我们通过网络进行实时交互和通信的方式。然而,对于拥有复杂网络结构的大型企业来说,实施 WebRTC 的一大挑战在于穿越 NAT(网络地址转换)防火墙并确保通信的可靠性。
这就是 CoTURN 服务器发挥作用的地方。CoTURN 是一个开源 TURN(使用中继穿越 NAT)服务器,即使在无法直接通信的情况下,也能在实时网络应用程序中实现点对点通信。通过在企业环境中部署 CoTURN 服务器,企业可以扩展 WebRTC 的潜力,确保无缝、可靠和安全的实时通信。在本文中,我们将探讨在企业中部署 CoTURN 服务器的好处,以及如何利用它来释放 WebRTC 技术的全部潜力。
部署企业级 TRUN 服务器的基本步骤
处理 1000 个并发会话的企业级 turn 服务器的部署过程具有以下特性:
1、首先,您需要将 coturn 服务器安装到合适的机器上,如虚拟专用服务器(VPS)或专用服务器。
2、其次,需要对服务器进行适当的配置,以处理大量并发会话。这可能包括增加文件描述符和工作线程的数量,以及调整 TURN 服务器的内存限制。
3、要扩展 coturn 服务器,可以使用负载平衡器在多个 coturn 服务器之间分配流量。这可以通过使用硬件负载平衡器或软件负载平衡器(如 HAProxy 或 Nginx)来实现。
4、还需要对负载平衡器进行配置,使其使用 TURN 服务器的共享秘密和其他身份验证设置。
5、要跟踪并发会话的数量,您可能需要使用 Prometheus 或 Grafana 等监控工具来收集和分析 TURN 服务器的指标。
6、要处理超过 1000 个并发会话,可能需要部署多个 coturn 服务器,并配置它们共享同一个数据库,以跟踪分配的 IP 地址。
7、最后,您需要使用大量并发会话测试部署,以确保 TURN 服务器能够处理负载,并且不会出现瓶颈或错误。
值得注意的是,部署 TURN 服务器并非易事,您可能需要考虑咨询该领域的专家,或使用可为您处理扩展和维护的托管 TURN 服务器服务。
处理 1000 个并发会话的 AWS 实例规格
部署 1000 个并发会话的最佳 AWS 机器可能是具有大量 vCPU 和大量内存的亚马逊弹性计算云 (EC2) 实例。具体的实例类型取决于您的应用程序和工作负载的具体要求。可以考虑的实例类型有 C5、R5 或 M5。此外,还建议考虑使用自动扩展组来根据流量自动扩展实例,并考虑使用负载平衡器来分配负载。
CoTURN Docker 部署
部署 coturn 服务器的最佳方法是使用官方文档中的 coturn docker 镜像;
docker pull coturn/coturn
要运行 coturn TURN 服务器,只需启动容器即可:
docker run -d -p 3478:3478 -p 3478:3478/udp -p 5349:5349 -p 5349:5349/udp -p 49152-65535:49152-65535/udp coturn/coturn
我主要建议在 TCP 和 UDP 的 80 和 443 端口上运行 coturn 服务器。在 80 和 443 端口上运行 coturn 服务器将有助于 TURN 服务器绕过几乎所有企业级防火墙。
这样,TURN 服务器就可以监听 3478 和 5349 端口以及 80/443 端口。你也可以使用 Mauz Khan 的文档通过以下链接设置 TURN 服务器:TURN 服务器安装指南。
使用 Bash 脚本进行 CoTURN 部署
经过广泛的研究和测试,我发现必须使用 Bash 脚本才能在 AWS 的 EC2 实例上可靠地部署 Coturn。该脚本旨在配置服务器,以支持 80、443、3478 和 5349 等常用通信端口。
- 80 和 443分别是 HTTP 和 HTTPS 协议的众所周知的端口。它们用于 Web 浏览器和 Web 服务器之间的通信。
- 3478是 是 STUN(Session Traversal Utilities for NAT)的标准端口,该协议用于穿越网络地址转换(NAT),以实现实时语音和视频通信。
- 5349是TURN(Traversal using Relays around NAT)的标准端口,TURN协议用于STUN无法提供直连的通信场景中的NAT穿越。TURN 充当客户端之间的中继,即使它们位于 NAT 之后也允许它们进行通信。
总之,这些端口对互联网上的实时通信至关重要,尤其是在客户端位于 NAT 后面的情况下。
此外,该脚本还将生成一个动态秘钥,以增强安全性,并将服务器链接到数据库,以方便维护。此外,该脚本还将启用集群功能,以提高性能和可扩展性。对于任何希望开始 Coturn 部署之旅的人,尤其是初学者来说,该脚本是一个全面的解决方案,因为它会处理所有必要的配置。
示例
下面是一个 bash 脚本示例,可用于在 AWS 的 EC2 实例上部署 Coturn,支持端口 80、443、3478 和 5349、动态秘钥、将其链接到数据库并启用群集:
#!/bin/bash
# Update package lists
sudo apt-get update
# Install Coturn
sudo apt-get install -y coturn
# Install mysql-server
sudo apt-get install -y mysql-server
# Configure mysql
sudo mysql_secure_installation
# Create database and user
sudo mysql -e "CREATE DATABASE coturn;"
sudo mysql -e "CREATE USER 'coturn'@'localhost' IDENTIFIED BY 'secure_password';"
sudo mysql -e "GRANT ALL PRIVILEGES ON coturn.* TO 'coturn'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
# Generate dynamic secret key
secret_key=`openssl rand -hex 32`
# Insert the secret key into the database
sudo mysql coturn -e "INSERT INTO secrets (realm, value) VALUES ('myrealm.com', '$secret_key');"
# Configure Coturn
sudo bash -c "cat > /etc/turnserver.conf << EOL
listening-port=80
tls-listening-port=443
listening-ip=0.0.0.0
relay-ip=0.0.0.0
min-port=49152
max-port=65535
fingerprint
userdb=/etc/turnuserdb.conf
realm=myrealm.com
# Enable Clustering
turn-admin-user=admin:adminpassword
turn-admin-password=adminpassword
EOL"
# Configure userdb
sudo bash -c "cat > /etc/turnuserdb.conf << EOL
user=coturn:secure_password
host=127.0.0.1
dbname=coturn
table=secrets
password_col=value
user_col=realm
EOL"
# Start Coturn
sudo service coturn start
# Open ports in firewall
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
# Check status
sudo service coturn status
要运行该脚本,请按照下列步骤操作:
- 打开终端。
- 使用文本编辑器创建脚本、保存并使其可执行。例如,如果您使用的是 nano:
nano deploy_coturn.sh
- 将脚本粘贴到编辑器中并保存
Ctrl + O, then Enter
- 关闭编辑器
Ctrl + X
- 使脚本可执行
chmod +xdeploy_coturn.sh
- 使用以下命令运行脚本:
sudo ./deploy_coturn.sh
该脚本将开始执行,在此过程中系统将提示您输入密码。
注意:本脚本是为基于 Ubuntu 的系统编写的,假定系统是最新的,且已安装所需的依赖项。
该脚本安装 coturn,配置它监听端口 80、443、3478 和 5349,并启动 Coturn 服务。它还会打开防火墙中的端口,以接收传入流量。它还会生成一个 32 字节的随机秘钥,并将其插入 MySQL 数据库,然后将该数据库与 coturn 相链接。
需要注意的是,该脚本假定你已经安装、配置并运行了 MySQL 服务器。此外,脚本中 coturn 用户的身份验证用户名和密码、realm 和 secure_password 需要替换为自己的用户名和密码。
5349 端口用于通过 TCP 发送 TURN,主要用于绕过阻止 UDP 流量的防火墙和 NAT。建议使用 443 端口通过 TLS 进行 TURN,因为它更安全,而且不太可能被防火墙或 NAT 屏蔽。
还需注意的是,本脚本不包括针对 MySQL 服务器的任何安全措施。在生产环境中,应确保遵循保护 MySQL 安装安全的最佳实践,并限制只有授权用户和应用程序才能访问 coturn 数据库。
此外,还可以考虑添加一个服务管理器(如 systemd 或 upstart),以便在 Coturn 服务崩溃或服务器重启时自动管理和重启该服务。
值得注意的是,该脚本只是一个示例,您可能需要根据具体使用情况和安全要求进行调整。
小结
作者提供了在企业环境中部署开源 TURN 服务器 CoTURN 的简明信息和最新研究成果。部署 CoTURN 可使企业实现可靠、安全的实时通信,并扩大 WebRTC 的潜力。
要部署一个可容纳 1000 个并发会话的企业级 CoTURN 服务器,必须遵循一定的步骤,如将其安装在合适的机器上、使用正确的设置进行配置、使用负载平衡器、使用 Prometheus 或 Grafana 等工具进行监控以及测试部署。C5、R5 或 M5 等 AWS 实例适合使用 Docker 映像或 bash 脚本进行部署,这些脚本旨在配置服务器,支持常用的通信端口。
作者:Muhammad Usman Bashir
相关阅读:解读 Coturn 服务器的功能: 防火墙规避分析
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/29282.html