내가 서버 (트랜스 코더) 사이에 균형을로드하기위한 서버를 설정하고 있습니다.
나는 많은 트랜스 코딩 서버가 있고 PHP 알고리즘에 의해 그 servres 사이의 균형을 선택 마녀 서버 요청에 응답합니다. 요청은 RTMP입니다.
예 :
클라이언트 요청 : rtmp : // balancer_ip : 1935 / live / 21? username = jhony & password = hahaha
발란저 워크 플로 : 최상의 트랜스 코더를 찾고 클라이언트 자격 증명에이 트랜스 코딩 서버에 대한 액세스 권한이 있으며 클라이언트를이 트랜스 코딩 서버로 리디렉션 또는 프록시 _ 통과합니다.
트랜스 코딩 서버에서 RTMP 모듈을 사용하여 nginx를 설치하고 구성 했으므로 PHP 알고리즘에 의한 rtmp 인증과 잘 작동합니다. balancer 서버에서 먼저 rtmp 인증과 같이 rtmp 모듈의 on_play 매개 변수를 사용하여 클라이언트를 리디렉션하려고 시도했지만 성공하지 못했습니다.
그래서 내가 다른 연구 mak'it 및 TCP 및 UDP로드 균형 조정 nginx TCP 및 UDP로드 균형 조정이 모듈 리디렉션 할 수 또는 클라이언트 요청을 transcoding 서버에 있지만 여러 번 balancer proxy_pass 클라이언트 잘못 트랜스 코딩 서버 (클라이언트 피난처 ' 이 트랜스 코딩 서버 또는 rtmp 플럭스에 대한 액세스가 중단되었습니다).
#in balancer nginx.conf
stream {
#listen on rtmp port
server {
listen 1935;
proxy_pass rtmp_servers;
}
upstream rtmp_servers {
server transcoder_1_ip:1935;
server transcoder_2_ip:1935;
#check interval=10 passes=2 fails=3 port=1935;
}
}
#in transcoder nginx.conf
rtmp {
server {
listen 1935;
application live {
live on;
on_play http://127.0.0.1:80/rtmp-auth;
notify_method get;
record off;
}
}
}
// php function for rtmp stream authentication in transcoder
$app->get('/rtmp-auth', function (Request $request) use ($app) {
$response = new Response();
$response->setStatusCode(404);
// check with database if user name and posword is ok
$response->setStatusCode(201);
}
/* i tryed in balancer with this code and send a redirection
in the return but she dont work :(*/
return $response;
})->bind('rtmpAuth');
따라서 사용자 지정 알고리즘을 통해 서버간에 리디렉션 또는 균형을 조정할 수있는 방법이 있습니까?
또는 모든 클라이언트 요청에서 클라이언트를 리디렉션하기 전에 트랜스 코딩 서버의 응답을 확인 하시겠습니까?
노트 : 클라이언트 국가와 같은 일부 critiria와 함께 작동하는 트랜스 코딩 서버가 있습니다 ... 그래서 클라이언트 요청을 리디렉션하는 알고리즘을 작성해야합니다.