안녕하세요. 달소입니다.
오늘은 Reverse Proxy 구성을 위한 오픈소스 Traefik 를 간단하게 소개해드고자합니다.
Traefik을 소개해드리기 전에 Reverse Proxy에 대해서 알고가시면 도움이 될듯하니 간단하게 짚고 넘어가보겠습니다.
Reverse Proxy란?
리버스 프록시는 간단하게 말해서 기존 프록시의 역방향을 의미합니다.
Proxy의 경우 중계서버로 중간에서 트래픽을 중개해주는 역할이기 때문에 역으로 외부에서 들어오는 트래픽에 대해서 역으로 어떤 서비스로 들어왔는지 확인하고 적절한 서버로 통신의 흐름을 이어가주는것을 의미합니다.
사진출처 : https://danawalab.github.io/common/2021/07/14/traefik-reverse-froxy.html
홈서버를 운영하는 입장에서 예를들어 설명해드리자면
본래 웹서비스는 80/443(http/https) 포트를 이용해서 서비스 하게 됩니다.
하지만 여러 서비스를 동시에 운영한다면 포트가 겹치기 때문에 문제가 발생하는데 이걸 Reverse Proxy를 이용해서 해결할 수 있습니다.
클라이언트의 요청을 도메인으로 받고 1.svrforum.com 요청이 왔을때는 1번서버로 2.svrforum.com 요청이 왔을때는 2번서버로 프록시 해주게 됩니다.
이러한 이점때문에 저 역시도 nginx의 reverse proxy를 이용하고있습니다만 여러모로 떠오르고있는 Traefik도 궁금해서 직접 운영해보려고 합니다.
비슷한 툴로는 NPM(Nginx Proxy Manager)도 있습니다.
Traefik 이란?
자 이제 Traefik에 대해 알아보겠습니다.
Traefik이란 서비스를 쉽게 배포할 수 있도록 해주는 최신 HTTP reverse proxy 및 로드밸런서입니다.
Traefik은 기본적으로 Kubernetes, Docker, Docker Swarm, AWS, Mesos, Marathon과 같은 모든 주요 클러스터 기술과 호환되며 목록은 계속됩니다 . 동시에 많은 것을 처리할 수 있습니다.
기존 Nginx등의 Reverse Proxy의 경우 여러가지 설정에대해서 수동에 의존해야했다면 traefik의 경우 레지스트리/오케스트레이터 API를 이용해서 자동으로 리버스프록시 구성이 되도록 도와줍니다.
또한 Traefik의 대시보드를 통해서 트래픽 현황과 현재 등록되어있는 Reverse Proxy를 보기좋게 볼수있다는 장점도있습니다
특징
- 구성을 지속적으로 업데이트합니다(다시 시작하지 않음!)
- 여러 로드 밸런싱 알고리즘 지원
- Let’s Encrypt (와일드카드 인증서 지원) 를 활용하여 마이크로서비스에 HTTPS 제공
- 회로 차단기, 재시도
- 깔끔한 웹 UI를 통해 마법을 만나보세요
- 웹 소켓, HTTP/2, GRPC 준비
- 메트릭 제공(Rest, Prometheus, Datadog, Statsd, InfluxDB)
- 액세스 로그 유지(JSON, CLF)
- 빠른
- Rest API 노출
- 단일 바이너리 파일로 패키지( ❤️go) 공식 도커 이미지로 사용 가능
이외에 자세한 정보같은경우 아래 공식홈페이지 및 깃허브를 참고하시면 되겠습니다.
https://doc.traefik.io/traefik/TraefikTraefik Documentationdoc.traefik.io – traefik.io
https://github.com/traefik/traefikGitHub – traefik/traefik: The Cloud Native Application ProxyThe Cloud Native Application Proxy. Contribute to traefik/traefik development by creating an account …GitHub
여기서는 간단한 소개만 드린것이니.. 백분이 불여일견이라고 한번 직접 구축해서 어떤 서비스인지 알아보겠습니다.
[Reference] : 달소, 「서버포럼 – Reverse Proxy 구성을 위한 오픈소스 Traefik 소개」
nginx 와 같이 사용가능한가요??? 한번 써보고 싶은데 같은 포트를 사용하는것 같아서요!!
NPM이나 Traefik 모두 같은 포트를 사용합니다 ㅠㅠ
서비스용이랑 테스트용 구분해서 진행하셔야할듯하네요