May 5, 2023

OvenMediaEngine의 클러스터 구성

OvenMediaEngine의 클러스터 구성

cluster

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로 설정할 수 있습니다.)

Origin-Edge Configuration

Edge로 실행되는 OvenMediaEngine은 사용자가 요청할 때 외부 서버에서 스트림을 가져옵니다. 외부 서버는 OVT가 활성화된 다른 OvenMediaEngine이거나 RTSP를 지원하는 다른 스트림 서버일 수 있습니다.
OVT는 OvenMediaEngine에서 Origin-Edge 간의 중계 스트림을 위해 정의한 프로토콜이며 OVT는 SRT 및 TCP를 통해 실행될 수 있습니다. SRT 프로토콜에 대한 자세한 내용은 SRT Alliance 사이트를 참조하십시오.

Origin

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

에지의 역할은 오리진에서 스트림을 수신하고 배포하는 것입니다. 수백 개의 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>		  

< Properties > 프로퍼티즈

NoInputFailoverTimeout (default 3000)

NoInputFailoverTimeout은 설정된 시간 동안 입력이 없는 경우 다음 URL로 전환하는 시간(밀리초)입니다.

UnusedStreamDeletionTimeout (default 60000)

UnusedStreamDeletionTimeout은 설정된 시간(밀리초) 동안 뷰어가 없으면 OriginMap으로 생성된 스트림을 삭제하는 기능입니다. 이는 Origin 및 Edge에 대한 네트워크 트래픽 및 시스템 리소스를 절약하는 데 도움이 됩니다.

< Origin >

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로 구성될 수 있습니다.

Rules for generating Origin 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에 대한 주소를 만듭니다.


Load Balancer

로드 밸런서를 구성할 때 L4 스위치, LVS 또는 GSLB와 같은 타사 솔루션을 사용해야 하지만 DNS 라운드 로빈을 사용하는 것이 좋습니다. 또한 클라우드 기반 AWS Route53 , Azure DNS 또는 Google Cloud DNS와 같은 서비스가 좋은 대안이 될 수 있습니다.

https://github.com/AirenSoft/OvenMediaEngine/issues/343
feature: support proxy protocol #298

Load Balancer OME with nginx