여러 지역 cdn 서버 구축?
본문
https://blog.lael.be/post/7605
라엘님 글을 보고 cdn 서버를 구축을 하려는데요
저는 cdn서버를 한곳만이 아니라 미국 유럽 호주등 여러지역에 분산을 하고싶습니다.
클라이언트가 한도메인에 연결시 여러 서버중 근거리에 위치한 서버에 연결하도록 하려는데요
이과정을 무엇으로 해야하나요..? 로드밸런싱?도 대륙간에도 이용하나요?
제가 아는거라곤 서버 부하를 줄이기위해 쓰인다고 생각했는데 이게 대륙간 가까운 위치로 배정하는것까지 가능한가요?
답변 3
직접 구축하시는 것 보다 cloudflare.com 을 사용 하시는 것이 편하 실 거에요.
우선 본문에 있는 해당 링크는 cdn 이라고 하기 보다는 이미지 캐싱 서버 구축이라고 표현하는 것이 맞는 듯 합니다.
대충 cdn 비슷하게 흉내를 낸다면, (간락하게 설명)
1. nginx(apache) geoip 를 사용하여 사용자의 국가 코드를 얻은 다음, 리버스 프록시로 가장 가까운 서버로 연결.
2. php geoip 로 사용자의 국가 코드를 알아 낸 뒤
- cloudflare 사용 중이라면 $_SERVER["HTTP_CF_IPCOUNTRY"] 변수를 사용 가능.
- https://www.maxmind.com/en/geoip2-services-and-databases 로 직접 구현
html 출력 시 img.domain.com 이런 형식의 주소를 kr.img.domain.com 이런 식으로 치환해서 가까운 서버로 연결.
cloudflare 대용량 전송에 한계가 있다고 표현하신 것이 어떤 부분을 말씀하시는 것인지는 모르겠으나,
대부분 해결 방법이 있을실 겁니다.
제가 구축한것 그림 그려 놓은것 있는데 찾아서 시간 되면 오늘 올려 놓도록 하겠습니다.
나머진 제가 잘 정리하지 못한 글 몇개 보시면 도움 되실 겁니다.
[해외서비스] 특정 도메인을 여러국가에서 동일한도메인으로 서비스 > AWS.클라우드 (pabburi.co.kr)
CDN도 캐쉬서버의 일종입니다.
AWS는 클라우드 프론트 이용하면 되며 AWS 네입서버(Route53)에서 지역설정을 해주면 되는데
이에 대한 설명이 제대로 된것이 없어 저도 처음엔 삽질을 좀 했습니다.
사실은 AWS 설명서를 차근차근 읽어 보면 다 있기는 합니다. 그렇게 읽어볼 또는 어느곳을 읽어봐야 할지 몰라서 그게 문제긴 합니다.
네임서버에서 지역설정하는것은 GSLB라고 하는데 찾아 보시면 글 몇개 있습니다.
그리고 BIND 같은것으로 위에 말씀 하신분처럼 GeoIP 받아와서 (주기적으로 업데이트 해야 됨) 하는 방법도 있지만 안정적인 AWS 이용하시는것이 좋습니다.
그리고 클라우드 프론트 CDN 이용시 영국에서 접속한 사람은 영국에 있는 S3에 있는 것 가져다 처리 하려면 람다엣지 프로그램 조금 해줘야 합니다.