벤자민의 블로그 2기 시작
2023년 6월 13일 갑작스러운 부친상을 격고나서 무언가를 한다라는 것에서 거의 손을 대지 않고 있었네요. 슬프다거나 그런 감정보다는 그냥 무언가 빠져버린
OvenMediaEngine supports the Origin-Edge structure for cluster configuration and provides scalability. Also, you can set Origin as Primary and Secondary in OvenMediaEngine for HA.
(OvenMediaEngine은 클러스터 구성을 위한 Origin-Edge 구조를 지원하고 확장성을 제공합니다. 또한 OvenMediaEngine for HA에서 Origin을 Primary와 Secondary로 설정할 수 있습니다.)
Edge로 실행되는 OvenMediaEngine은 사용자가 요청할 때 외부 서버에서 스트림을 가져옵니다. 외부 서버는 OVT가 활성화된 다른 OvenMediaEngine이거나 RTSP를 지원하는 다른 스트림 서버일 수 있습니다.
OVT는 OvenMediaEngine에서 Origin-Edge 간의 중계 스트림을 위해 정의한 프로토콜이며 OVT는 SRT 및 TCP를 통해 실행될 수 있습니다. SRT 프로토콜에 대한 자세한 내용은 SRT Alliance 사이트를 참조하십시오.
OvenMediaEngine은 오리진에서 에지로 스트림을 전달하기 위한 OVT 프로토콜을 제공합니다. OvenMediaEngine을 Origin으로 실행하려면 다음과 같이 OVT 포트 및 OVT 게시자를 활성화해야 합니다.:
/usr/share/ovenmediaengine/conf/Server.xml
파일의 내용에서 다음의 내용을 활성화 합니다.
<Server version="5">
<Bind>
<Publishers>
<OVT>
<Port>9000</Port>
</OVT>
</Publishers>
</Bind>
<VirtualHosts>
<VirtualHost>
<Applications>
<Application>
...
<Publishers>
<OVT />
</Publishers>
</Application>
</Applications>
</VirtualHost>
</VirtualHosts>
</Server>
에지의 역할은 오리진에서 스트림을 수신하고 배포하는 것입니다. 수백 개의 Edge를 구성하여 플레이어에게 트래픽을 분산할 수 있습니다. 테스트 결과, 단일 엣지는 AWS C5.2XLarge 기반 WebRTC로 4-5Gbps 트래픽을 스트리밍할 수 있습니다. 수천 명의 사람들에게 스트리밍해야 하는 경우 여러 에지를 구성하고 사용할 수 있습니다.
에지는 오리진에서 스트림을 가져오기 위해 OVT 및 RTSP를 지원합니다. 가까운 장래에 더 많은 프로토콜을 지원할 것입니다. OVT 또는 RTSP를 통해 가져온 스트림은 인코딩되지 않고 우회됩니다.:
OVT와 RTSP에 의해 생성된 스트림을 재인코딩하기 위해 기존 애플리케이션에 넣는 기능은 향후 지원될 예정이다.
OvenMediaEngine을 Edge로 실행하려면 다음과 같이 구성 파일에 Origins 요소를 추가해야 합니다.
<VirtualHosts>
<VirtualHost>
<Origins>
<Properties>
<NoInputFailoverTimeout>3000</NoInputFailoverTimeout>
<UnusedStreamDeletionTimeout>60000</UnusedStreamDeletionTimeout>
</Properties>
<Origin>
<Location>/app/stream</Location>
<Pass>
<Scheme>ovt</Scheme>
<Urls><Url>origin.com:9000/app/stream_720p</Url></Urls>
</Pass>
</Origin>
<Origin>
<Location>/app/</Location>
<Pass>
<Scheme>OVT</Scheme>
<Urls><Url>origin.com:9000/app/</Url></Urls>
</Pass>
</Origin>
<Origin>
<Location>/</Location>
<Pass>
<Scheme>RTSP</Scheme>
<Urls><Url>origin2.com:9000/</Url></Urls>
</Pass>
</Origin>
</Origins>
</VirtualHost>
</VirtualHosts>
<VirtualHosts>
<VirtualHost>
<Origins>
<Properties>
<NoInputFailoverTimeout>3000</NoInputFailoverTimeout>
<UnusedStreamDeletionTimeout>60000</UnusedStreamDeletionTimeout>
</Properties>
<Origin>
<Location>/this_application/stream</Location>
<Pass>
<Scheme>OVT</Scheme>
<Urls><Url>origin.com:9000/app/stream_720p</Url></Urls>
</Pass>
</Origin>
<Origin>
<Location>/this_application/rtsp_stream</Location>
<Pass>
<Scheme>RTSP</Scheme>
<Urls><Url>rtsp.origin.com/145</Url></Urls>
</Pass>
</Origin>
</Origins>
<Applications>
<Application>
<Name>this_application</Name>
<Type>live</Type>
<Providers>
<!-- You have to enable the OVT provider
because you used the ovt scheme for configuring Origin. -->
<OVT />
<!-- If you set RTSP into Scheme,
you have to enable RTSPPull provider -->
<RTSPPull />
</Providers>
NoInputFailoverTimeout (default 3000)
NoInputFailoverTimeout은 설정된 시간 동안 입력이 없는 경우 다음 URL로 전환하는 시간(밀리초)입니다.
UnusedStreamDeletionTimeout (default 60000)
UnusedStreamDeletionTimeout은 설정된 시간(밀리초) 동안 뷰어가 없으면 OriginMap으로 생성된 스트림을 삭제하는 기능입니다. 이는 Origin 및 Edge에 대한 네트워크 트래픽 및 시스템 리소스를 절약하는 데 도움이 됩니다.
Origin 요소에 대한 자세한 설명은 다음을 참조하세요.
Location
Origin은 VirtualHost에 속하기 때문에 이미 도메인으로 필터링되었습니다. 따라서 Location에서 App, Stream, File을 도메인 영역을 제외하고 일치하도록 설정합니다. 요청이 여러 오리진과 일치하는 경우 해당 오리진의 맨 위가 실행됩니다.
Pass
패스는 Scheme과 Url로 구성됩니다.
< Scheme >은 Origin Stream에서 가져올 프로토콜입니다. 현재 OVTor RTSP로 구성할 수 있습니다.
원본 서버가 OvenMediaEngine인 경우 OVTin을 < Scheme >으로 설정해야 합니다.
RTSPin을 < Scheme >으로 설정하여 RTSP 서버에서 스트림을 가져올 수 있습니다. 이 경우 < RTSPPull > 공급자를 활성화해야 합니다. Origin에서 자동으로 생성된 애플리케이션은 모든 공급자가 활성화되어 있으므로 걱정할 필요가 없습니다.
Urls는 원본 스트림의 주소이며 여러 URL로 구성될 수 있습니다.
OvenMediaEngine이 요청하는 최종 주소는 설정된 URL과 Location을 제외한 사용자의 요청을 조합하여 생성됩니다. 예를 들어 다음이 설정된 경우
<Location>/edge_app/</Location>
<Pass>
<Scheme>ovt</Scheme>
<Urls><Url>origin.com:9000/origin_app/</Url></Urls>
</Pass>
사용자가 http://edge.com/edge_app/stream을 요청하면 OvenMediaEngine은 ovt: //origin.com: 9000/origin_app/stream에 대한 주소를 만듭니다.
로드 밸런서를 구성할 때 L4 스위치, LVS 또는 GSLB와 같은 타사 솔루션을 사용해야 하지만 DNS 라운드 로빈을 사용하는 것이 좋습니다. 또한 클라우드 기반 AWS Route53 , Azure DNS 또는 Google Cloud DNS와 같은 서비스가 좋은 대안이 될 수 있습니다.
https://github.com/AirenSoft/OvenMediaEngine/issues/343
feature: support proxy protocol #298