TURN 서버를 구성하는 방법
오늘 자습서에서는 TURN 서버를 구성합니다.이 용어는 트렁크 NAT를 사용하여 트래킹하는 것을 의미하며 트렁크 네트워크 트래픽에 사용되는 프로토콜입니다.
TURN 서버는 현재 몇 가지 온라인에서 사용할 수 있는 옵션이 있는데, 자체 위탁 관리 프로그램(예를 들어 소스 COTURN 프로젝트)일 수도 있고 클라우드에서 제공하는 서비스일 수도 있다.
온라인으로 사용할 수 있는 TURN 서버가 있으면 클라이언트 애플리케이션에 적합한 RTC 구성만 제공하면 됩니다.다음 코드 세그먼트는 TURN 서버가 EC2의 공용 IP를 사용하고 포트 3478에서 실행하는 RTPeerConnection의 예제 구성을 보여줍니다.구성 객체는 서버에 대한 액세스를 보장하기 위해 사용자 이름과 암호 속성도 지원합니다.이러한 사항은 TURN 서버에 연결할 때 필요합니다.
const iceConfiguration = {
iceServers: [
{
urls: 'turn:18.23.4.56.7:3478',
username: 'username',
credential: 'password'
}
]
}
const peerConnection = new RTCPeerConnection(iceConfiguration);
오늘 자습서에서는 Coturn 오픈 소스 프로젝트를 사용하여 TURN 서버를 구성하는 방법에 대해 설명합니다.코튼 프로젝트에 대한 더 많은 정보 보기https://github.com/coturn/coturnCoturn 서버 구성
AWS 계정에서 ubuntu EC2를 시작하고 ssh를 삽입합니다.일단 ssh로 EC2에 연결되면 정상적으로 작동하도록 변경이 필요합니다.
층계
// update
sudo apt update
// install coturn
sudo apt-get install coturn
// enable and start coturn service
sudo systemctl enable coturn
sudo systemctl start coturn
sudo systemctl status coturn
또는 다음 파일을 편집합니다.// edit the following file
sudo vim /etc/default/coturn
// uncomment the following line and save
TURNSERVER_ENABLED=1
sudo cp /etc/turnserver.conf /etc/turnserver.conf.backup
# turnserver listening port
listening-port=3478
tls-listening-port=5349
# provide the public IP for your EC2
listening-ip=<PUBLIC_IP>
external-ip=<PUBLIC_IP>
# ports
min-port=49152
max-port=65535
# enable verbose logging
verbose
# use fingerprint in Turn message
fingerprint
# enable a log-term credential mechanism
lt-cred-mech
# server name
server-name=turnserver
# domain name
realm=odongo.com
# provide username and password
user=<USERNAME>:<PASSWORD>
# log file path
log-file=/var/tmp/turn.log
터너서버의 설정에 대한 자세한 정보입니다.형태https://github.com/coturn/coturn/wiki/turnserver.이것이 바로 AWS의 UbuntuEC2에서 coturn 서버를 설정하는 것입니다.라운드 서버를 테스트하려면 이 링크https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/를 방문하십시오.
대규모 생산 배치
위의 설정은 하나의 ubuntu EC2 turn 서버로 귀하의 개인 프로젝트에 서비스를 제공할 수 있습니다.대규모 생산에 대해 우리는 방법을 바꾸어야 한다.우리는 두 가지 방법을 고려할 수 있다.
예를 들어, 재해 복구를 위해서는 서로 다른 AZ에 비슷한 인스턴스를 배치해야 합니다.EC2가 최대 임계값에 도달하면 확대/축소가 문제가 됩니다.
이것은 대규모 생산에 적합한 이상적인 방법이다.우리는 고전적인 부하 균형기와 자동 축소 그룹을 설정해야 한다.
층계
// provide the classic load balancer DNS
listening-ip= corturn-server-********.us-east-1.elb.amazonaws.com
external-ip= corturn-server-********.us-east-1.elb.amazonaws.com
메모
로드 밸런서는 항상 EC2의 상태 점검을 수행하여 그룹의 EC2 인스턴스의 자동 배율을 결정합니다.건강 검진을 수행하기 위해서는 항상 Ping EC2 인스턴스가 있기 때문에 경로를 설명해야 합니다.인스턴스의 경우 EC2 인스턴스에 대해 Ping을 허용할 수 있도록 Nginx를 설치합니다.EC2 보안 그룹에서 포트 22 및 80이 열려 있는지 확인합니다.
// replace index.html in the health check ping section with the following
index.nginx-debian.html
sudo apt-get install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
EC2가 준비되면 자동 배율 조정 그룹을 생성합니다.이 점을 하려면 다음과 같은 절차가 있다.const iceConfiguration = {
iceServers: [
{
urls: 'turn:corturn-server-********.us-east-1.elb.amazonaws.com:3478',
username: 'username',
credential: 'password'
}
]
}
const peerConnection = new RTCPeerConnection(iceConfiguration);
클래식 로드 밸런싱 가격에 대한 자세한 내용은 여기를 참조하십시오https://aws.amazon.com/elasticloadbalancing/pricing/.보너스
보상으로 컨테이너에 coturn을 배치하여 ECR로 전송하고 ECS에 배치할 수 있습니다.
// pull the coturn docker image
docker pull instrumentisto/coturn
// run a coturn container
docker run -d --network=host instrumentisto/coturn -n --log-file=stdout --min-port=49160 --max-port=49200 --lt-cred-mech --fingerprint --no-multicast-peers --no-cli --no-tlsv1 --no-tlsv1_1 --realm=my.realm.org
// ssh to the container
docker exec -it <CONTAINER_ID> sh
따라서 ECR에 이미지를 배포하고 AWS ECS에 호스팅할 수 있습니다.나는 이 강좌가 줄곧 나의 WebRTC 강좌에 관심을 가지고 있는 사람들에게 도움이 되기를 바란다.
고마워요
Reference
이 문제에 관하여(TURN 서버를 구성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kevin_odongo35/how-to-configure-a-turn-server-3opd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)