말 그대로 물속에 빠진 사람만 있는 OpenVidu다.
SSAFY에서 공통프로젝트로 진행하는 "웹기술"트랙에서 사용하게 되는 WebRTC 기술인데, 웹 또는 모바일 애플리케이션에서 화상 통화를 쉽게 추가할 수 있는 플랫폼이라고 설명하고 있다.
쉽게... 쉽...게...
일단은 쉽다. 비교 대상은 같은 WebRTC 기술인 Kurento인데, 난이도가 급상승하는 것으로 알고만 있다.
대부분의 교육생들이 웹기술 트랙을 선택하게 되는데, 매번 막히는 부분은 OpenVidu를 AWS 환경에 배포하는 부분이다.
교육생 대부분이 EC2를 CLI로 활용하는 경험이 없기도 하고, EC2 자체가 처음인 교육생도 많아 더 크게 어려움을 겪게 된다.
심지어 배포 과정에서 생기는 문제들은 사람마다 다른 환경이기에 찾아봐야 안되는 경우도 허다하다.
배포 과정에서 오픈비두를 on-premsis 방식으로 ec2에 올리려고 하는데 ./openvidu start 명령어를 실행했을 때
OpenVidu Server using one KMS: ws://localhost:8888/kurento 이후 아무리 기다려도 다음 과정으로 넘어가지 않는 것 같습니다.
말 그대로 배포 과정에서 생긴 오류다.
OpenVidu는 배포를 위한 간단한 솔루션을 on promise로 제공하고 있다. 대부분의 교육생은 해당 과정으로 첫 배포를 하게 되는데, EC2에 이것저것 올려본 뒤 OpenVidu를 배포하면 결국은 문제가 생긴다.
앞서 말하자면, OpenVidu를 배포할 생각을 가지고 있다면 왠만하면 아무것도 건들지 말고 OpenVidu부터 올리는게 나을 수 있다.
오늘의 문제는 포트다. OpenVidu와 관련된 내용은 대부분 port가 문제다.
docker-compose.yml 파일로 한번에 빌드하면서 각각의 컨테이너를 만들게 되는데, 이 과정에서 컨테이너가 사용하는 포트를 다른 서비스가 할당받고 있으면 문제가 발생한다.
OpenVidu는 상당히 많은 포트들을 할당한다.
해당 포트들에는 왠만하면 서비스를 할당하지 않는 것이 좋고, 방화벽도 열어놔야 정상적으로 사용할 수 있다.
하지만 눈은 굵은 글씨만 따라가고 맨 아래에 있는 가장 중요한 정보들을 놓치게 되는데...
바로 이부분이다.
해당 포트들은 OpenVidu를 구성하는 Docker Container들이 할당받게 되는데, 이 포트들이 다른 서비스에 할당되어 있다면 정상적으로 OpenVidu가 실행되지 않는다.
이번 오류의 경우 서버를 새로 받고 설치했던 Jenkins가 8888번으로 할당 후 삭제했는데, 완전히 삭제되지 않아 계속해서 8888번 포트를 차지하고 있었다.
{processNo}/Java
와 같은 형태로 포트에 계속 할당되어 있었는데, 당시 서버에 올라가 있던 서비스는 Back-end(Springboot), Jenkins, DB들(MySQL, Redis)였다.
자바를 사용하면서 프로세스를 지워도 다시 할당해서 좀비처럼 살아나고 있으니, Jenkins를 의심했고, Container로 올라가있는 Jenkins를 삭제했지만 여전히 8888포트는 자바가 가지고 있었다.
Jenkins를 삭제해도 포트를 할당하고 있으니, 해당 프로세스를 다시 찾아봐도 Jenkins였다.
어딘가 살아있겠거니... 하고 완전삭제 방법을 찾아 진행하니 역시나 Jenkins가 범인이였다. 8888포트를 할당하고 있던 Java를 드디어 없앨 수 있었고, 드디어 정상적으로 OpenVidu를 배포할 수 있었다.
대표적으로 발생하는 오류 중 하나는 NGINX가 겹치는 것이다.
Front-end 배포를 위해 NGINX를 사용하는데, 이 NGINX가 포트를 가지고 있으니 OpenVidu는 제대로 동작하지 못한다.
OpenVidu에서도 이렇게나 강조하고 있으니, OpenVidu를 배포한 후에 NGINX를 올리도록 하자.
교육생시절 주제에 맞춰 트랙을 선택하다보니 WebRTC에 대해 잘 알지도, 알려고 하지도 않았다. 웹디자인으로 프로젝트를 완성하는데만 바빴지.
실습코치를 하면서 다양한 질문을 받고, 그 질문에 대한 답변을 생각하면서 성장하는 느낌을 받는 것이 너무나 긍정적이다.
https://kitty-geno.tistory.com/87
https://docs.openvidu.io/en/2.22.0/deployment/ce/on-premises/
ㅋㅋㅋㅋㅋㅋ 이 글을 일찍 봤다면 좋았으련만...
이미 제 nginx 설정 파일은 너덜해졌네요..
잘 읽었습니다.