블로그 작업 끝내기 그리고 Docker Traefik

Updated on

블로그 작업 끝내기 그리고 Docker Traefik

후우… 까미넷 블로그 작업 끝냈다.. 인스턴스 삭제 때문에 이게 무슨 고생인가..
도커 이미지 만들어야할 시간에.. 블로그를 하고 있다..

ㅋㅋㅋ 까미넷 삭제되기 전 마지막 글..

근데 더 웃긴건,, 브라우저에 까미넷 인스턴스 삭제하기 전에 쓰던 글이 있었다는 거다..
원래라면, 로그인도 풀렸어야 했는데… 인스턴스 삭제되면서 호출이 안되니, 그렇게까지는 안됬던거 같다..

마지막 사진.. 기념으로 업로드 해둔다..

위에서 작성했듯이, 현재는 Docker 를 이용해서 서버를 구축해보려고 하는 중이다..
기존 리눅스 서버에서 돌아가던 서비스가 있기 때문에, 현재 이 서비스는 GCP로 잠시 이전하고.. Docker 로 모두 바꾸려고 한다..

근데 생각보다, 도커라는게 어려우면 어렵기도 한데.. 한번 배우면 엄청 편하게 될 것 같다는 생각이 든다.
허나, 리눅스 서버에서 웹서버가 몇개정도 돌아가고 있는데, 도커에서는 컨테이너마다 웹서버를 돌릴 수 있게 될텐데.. 그렇다면, 어떻게 여러개를 돌리는가..? 에 대해서 궁금했는데.
그것은 바로 “reverse proxy” 라는 것을 사용해서 였다.

https://hub.docker.com/r/jwilder/nginx-proxy

실제로 도커 허브에서 직접 리버스 프록시를 제공하는 이미지가 있다.
하지만, 위 리버스 프록시를 하는 이미지 같은 경우 또는 리버스 프록시를 이용하는 컨테이너를 직접 만들었을때에(?) 문제가 있다고 한다.

그것은 바로, Docker Swarm을 사용할 수 없다는 것이였다.
물론, 내가 분산이니 로드밸런싱이니 뭐니 사실 그런 작업을 할 정도의 서비스를 운영하는 것은 아니다.. 하지만, 이왕 하는거… 최대한 변할 수 있는 변수들을 감안하고서 작업하는게 좋지 않겠나 싶은 생각에.. 알아보게 된 것이.

https://traefik.io

바로 이 서비스이다.

이 서비스는 위와 같이, 같은 도메인으로 들어왔을때 로드밸런싱을 해주기도 하고 Docker Swarm.

어떤 도메인으로 들어왔느냐에 따라서, 해당 서비스에 맞는 컨테이너에 연결해주기도 한다.

그러므로, “reverse proxy”를 직접 사용해도 되지만, 차라리 Treafik 서비스를 이용하는것이 더 좋겠다는 생각이 들었다. (분산 + 리버스 프록시)

그래서 일단은, 내가 현재 서비스를 개발 또는 운영해야될 환경의 이미지를 제작한 다음에, 개발 및 작업을 진행하다가. 리눅스에 도커 설치 후에, Treafik 로 설정을 해볼 생각이다.

지금 나의 상상력으로 구상한 컨테이너는 아래와 같다.

  • Traefik (분산 및 리버스 프록시)
  • MYSQL 컨테이너 (외부 볼륨 사용)
  • Redis 컨테이너 (외부 볼륨 사용)
  • Mongodb 컨테이너 (외부 볼륨 사용)
  • 코인넷 프론트엔드 (Nuxt.js)
  • 코인넷 백엔드 (Laravel)
  • 코인넷 Node.js 소켓서버1..2..3..4….
  • 이미지 서버 API (Laravel Lumen)
  • 기존1
  • 기존2

생각보다 이렇게나 많다…
기존1, 기존2, 코인넷같은 경우는 모두 DB를 따로 두지 않고, 해당 DB 컨테이너로 연결할 예정이다.

서비스가 컸다면, 원래 나눠서 하는게 맞을거 같지만, 사실 내가 운영하는 서비스 자체가 크지도 않고.. 사실 커지면 나중에 작업하는게 낫다고 생각이 든다..
(그리고 심지어,, 코인넷 - DB컨테이너1, 기존1 - DB컨테이너2, 기존2- DB컨테이너3 처럼 따로 DB컨테이너를 물린다면, 내가 작업할때 얼마나 힘들겠는가.. 나비켓으로 이리저리 연결하기 쉽지가 않을거라고 생각)

어찌됬든, 일단 이 부분은 다음에 작업할때 더 자세히 작성해보도록 하겠다.