node-media-server를 이용한 라이브 스트리밍을 로컬에서 테스트하면 너무 잘되는데 배포환경에서는 안되는 문제 발생
그냥 에러메시지를 반환하는것도 아니고, 로그도 안찍히고 rejected 되었다고만 뜬다.
답답해 미칠 지경...
1. 경로를 모두 절대경로로 수정
이때는 그래도 에러메시지가 뜰 때라서 바로 확인을 할 수 있었다.
윈도우와 ubuntu에서 nest 서버를 여는 방식은 약간 다르다. 윈도우에서는 nest에 npm run start 명령어를 넣으면 빌드부터 스타트까지 알아서 해줄 수 있도록 설정이 되어있지만, ubuntu에서 pm2를 사용하면 빌드는 따로 해고 pm2 start dist/main.js 명령어를 넣어야 한다. 그렇다는건, 서버를 여는 디렉토리가 /dist 라는것. 지금까지 라이브스트리밍에서 사용했던 상대경로도 모두 dist에서 시작하는 경로가 되어버린 것이다. 그래서 파일을 읽어와서 s3에 업로드하고 삭제하는 과정에서 쓰인 상대경로를 모두 절대경로로 바꿔주었다.
// 기존 경로
const liveDirectory = "./media"
// 수정된 경로
const liveDirectory = path.join(
__dirname,
'../../../live-streaming/live',
streamKey,
);
2. 로드밸런싱 보안그룹 설정,
여기서부터 본격 대환장파티 시작
로그가 안떠서 뭐가 문제인지를 못찾음..
일단 한가지 찾은 문제는 이거였다.
보안그룹에서 1935번, 8000번, 그리고 https를 사용한다면 8443번 포트까지 열어줘야 한다. 근데 이걸 ec2에서는 잘 열어놓고, 로드밸런서에서는 설정하는걸 까먹은것..
로드밸런서 > 보안 > 보안그룹 > 인바운드 규칙 편집에서 다음과 같이 포트를 추가해주자.
3. 대상 그룹 설정
그리고 대상그룹에도 위 포트들을 추가
3. Date type
그니까, window에서 불러오는 date와 ubuntu에서 불러오는 date가 달라서 생긴 문제이다...
내가 유효기간을 검사할때, db에 저장된 시각과 현재시각과의 차이로 계산했는데, ubuntu에서는 한쪽만 표준시각으로 계산이 되어 잔여시간(?)이 9시간이 훌쩍 넘는 시간이 나타난것.. 당연히 if문에서 탈락..
근데 한가지 의문인건 분명 console.error를 해놨는데 콘솔에 에러 관련해서는 아무것도 찍히지 않음
쨌든 난 해결했다...
좀 현타오네 로드밸런서 문제인줄 알았더니 아니었음
'TIL' 카테고리의 다른 글
TIL 240813 - node media server에서 hls 변환 시 화질 fission 방법 (0) | 2024.08.14 |
---|---|
TIL 240812 - ubuntu에서 node.js에 할당된 메모리 한도 늘리기 (0) | 2024.08.12 |
TIL 240805 - 로컬에서 https 테스트하기 + 인증서 발급 (0) | 2024.08.05 |
TIL 240802 - unsigned 속성 / foreign key 에러 (0) | 2024.08.02 |
TIL 240801 - 로드밸런싱 (0) | 2024.08.01 |