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/coturn

Coturn 서버 구성


AWS 계정에서 ubuntu EC2를 시작하고 ssh를 삽입합니다.일단 ssh로 EC2에 연결되면 정상적으로 작동하도록 변경이 필요합니다.

층계

  • AWS 콘솔에 로그인하여 EC2
  • 검색
  • ubuntu 인스턴스를 검색하고 T2 micro를 선택하고 기본 설정을 계속 사용합니다.
  • 개인 키를 만들고 다운로드해야 합니다.puttygen에서 사용할 수 있도록 pem 파일을 ppk로 변환합니다.
  • EC2https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html 시작에 대한 자세한 내용 보기
  • EC2에 SSH를 삽입하고 인스턴스를 업데이트하고 coturn 패키지를 설치합니다.
  • // update
    sudo apt update
    
    // install coturn
    sudo apt-get install coturn
    
  • 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
    
  • coturn을 설정하려면 다음 파일/etc/turnserver를 편집해야 합니다.다시 시작해야 할 때 백업 파일을 복사할 수 있도록 편집하기 전에 백업을 만듭니다.
  • 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 서버로 귀하의 개인 프로젝트에 서비스를 제공할 수 있습니다.대규모 생산에 대해 우리는 방법을 바꾸어야 한다.우리는 두 가지 방법을 고려할 수 있다.
  • TURN 서버를 대규모 EC2 인스턴스에 배포합니다.
    예를 들어, 재해 복구를 위해서는 서로 다른 AZ에 비슷한 인스턴스를 배치해야 합니다.EC2가 최대 임계값에 도달하면 확대/축소가 문제가 됩니다.
  • 로드 밸런싱 및 자동 크기 조정 그룹 배포
    이것은 대규모 생산에 적합한 이상적인 방법이다.우리는 고전적인 부하 균형기와 자동 축소 그룹을 설정해야 한다.
  • 층계

  • 새로운 ubuntu EC2를 만들고 coturn을 사용하여 TURN 서버를 설정합니다.귀사의 허락에 따라 더 큰 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
    
  • 클래식 로드 밸런스를 구성합니다.
  • 로드 밸런서 이름을 제공하고 포트 80 및 포트 22를 엽니다.
  • 메모


    로드 밸런서는 항상 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
    
  • ubuntu EC2에 SSH를 설치하고 다음 명령을 실행하여 Nginx를 설치합니다.
  • sudo apt-get install nginx
    sudo systemctl enable nginx
    sudo systemctl start nginx
    
    EC2가 준비되면 자동 배율 조정 그룹을 생성합니다.이 점을 하려면 다음과 같은 절차가 있다.
  • 위에서 만든 EC2의 스냅샷을 생성합니다.이렇게 하면 각 배포에 대해 EC2를 복제할 수 있습니다.
  • 스냅샷을 만든 후 스냅샷에서 AMI 이미지를 만듭니다.
  • 가상화 유형이 하드웨어 보조 가상화인지 확인합니다.
  • TURN 서버의 이미지가 생기면 다음 단계는 시작 템플릿을 만드는 것입니다.
  • AMI를 지정하고 T2 마이크로 인스턴스를 선택하고 시작 템플릿을 작성합니다.
  • 이제 시작 템플릿이 있습니다. 이 템플릿에서 EC2를 시작하여 작동 여부를 테스트할 수 있습니다.인스턴스 수로 1을 지정합니다.
  • 상기 절차가 성공하면 자동 축소 그룹을 만들고 클래식 부하 균형을 연결합니다.
  • 이것이 바로 우리가 해야 할 일이다.우리는 현재 자동 축소 그룹의 UbuntuEC2S를 가진 고전적인 부하 평형기를 가지고 있다.응용 프로그램에서, 이것은 당신이 그것을 어떻게 인용할 것인지입니다.
    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에 배치할 수 있습니다.
  • Docker Hub에서 coturn 이미지를 추출합니다.
  • // pull the coturn docker image
    docker pull instrumentisto/coturn
    
  • coturm instrumentisto 이미지에 용기를 실행합니다.다음과 같이 주석 및 편집을 취소한 구성을 선언합니다.
  • // 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를 사용하여 용기에 연결하려면 아래 명령을 실행하십시오.
  • // ssh to the container
    docker exec -it <CONTAINER_ID> sh
    
    따라서 ECR에 이미지를 배포하고 AWS ECS에 호스팅할 수 있습니다.
    나는 이 강좌가 줄곧 나의 WebRTC 강좌에 관심을 가지고 있는 사람들에게 도움이 되기를 바란다.
    고마워요

    좋은 웹페이지 즐겨찾기