CDN (콘텐츠 배포 네트워크)은 어떻게 작동합니까?


37

Akamai를 CDN으로 사용 내가 이해 한 바에 따르면 클라이언트가 페이지를 요청하면 요청이 Akamai 중앙 서버로 이동합니다.이 서버는 클라이언트의 위치에 따라 Akamai 에지 서버를 선택하고 클라이언트의 후속 요청은이 에지 서버로 직접 이동합니다. 내 질문은 :

고객이 웹 사이트를 이름으로 요청할 때, DNS가 Akamai 중앙 서버의 IP 주소로 이름을 확인하고 클라이언트로 전달하면 클라이언트는이 IP 주소를 유지 한 후 후속 요청을 어떻게 처리 할 수 ​​있습니까? Akamai Edge 서버의 IP 주소로 직접 이동하려면?

아니면 CDN을 사용할 때 CDN 서버에서 DNS 확인 자체를 수행해야합니까?

Google, Amazon, Facebook과 같은 대기업에는 자체 CDN 서버가 있거나 Akamai와 같은 타사 CDN 공급자를 사용합니까? 구글과 야후! 둘 다 Akamai CDN을 사용하고 Yahoo! Google은 같은 서버에 있습니까? 잠재적 인 보안 문제가되지 않습니까?

답변:


27

CDN을 사용 하여 전체 사이트 를 호스팅 하는 것이 아니라 콘텐츠 만 호스팅 하면 됩니다 .

방금 비슷한 질문에 대답했습니다. akamaihd.net은 무엇을합니까?

데이터 요청 흐름WikiMedia의 이미지

따라서 귀하의 사이트는 참조 http://akamai/myfile.ext합니다. myfile.ext에서 요청 akamai합니다. akamai그런 다음 실제 컨텐츠 서버 로 HTTP 리디렉션 을 보낼 수 있습니다 .

이제 마지막 단계가 캐시되면 향후 모든 요청이 가장 가까운 컨텐츠 서버로 이동합니다.

어떻게 작동합니까?

이 웹 사이트를 가정 해 봅시다 :

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

본인의 웹 서버에서이 웹 사이트를 요청합니다. .html파일이되어 있지 함께 호스팅 cdn. 내 웹 서버의 DNS도 아닙니다.

초기 요청

그래서 내 브라우저는 HTML 파일을 가져 와서 구문 분석합니다. 참조 된 이미지를 찾고 해당 위치에있는 메모를 찾습니다 http://cdn/oliver.png. 해당 파일을 요청합니다.

그렇게하려면의 IP 주소를 찾아야합니다 cdn. 이 예에서 해당 IP 주소는 10.10.10.10입니다.

해당 IP 주소를 사용하여 cdn서버에 연결하고을 요청할 수 /oliver.png있습니다.

지리적 위치

이제는 cdn" 그 사람은 독일 출신이야! " 그래서 내가 원하는 멋진 사진을 보내지 않고 HTTP 리디렉션을 보냅니다.

/oliver.png는 여기에 없습니다. ~에있다10.10.33.33/oliver.png

그래서 내 브라우저는 사진을 요구합니다 10.10.33.33(바람직하게 나에게 더 가깝습니다).

진심이야?

이것이 모든 CDN이 작동하는 방식이라고 말하지는 않지만 한 가지 접근 방식이 될 것입니다.

쿼리를 보낸 사람의 위치에 따라 이름 조회에 대해 다른 결과를 반환하는 DNS 데몬을 구현할 수도 있습니다.
그러나 이것이 실제로 이루어 졌는지 의심합니다. 그러나 어쩌면 나는 그것을 올바르게 설정하는 방법을 상상할 수 없을 것입니다. 그것이 작동하는 방법에 대한 솜털의 대답 을 참조하십시오 .

누가 CDN을 운영합니까?

대부분의 글로벌 플레이어 는 자체 방식으로 자신의 콘텐츠 전달 네트워크를 가지고 있습니다. 일부 공급자는 특정 서비스를 더 큰 CDN으로 오프로드합니다 (Microsoft는 MSDN 다운로드를 사용하는 것처럼). 그리고 이것은 두 번째 주제를 어떻게 든 만질 수 있습니다.

MSDN에서 Microsoft는 제품 다운로드를 제공합니다. 이 다운로드는 Akamai에서 제공합니다. 해당 다운로드의 URL을 확인할 수 있으면 Microsoft에 문의하지 않고도 제품을 다운로드 할 수 있습니다.

보안 문제입니까? 실제로 다운로드되는 것은 여전히 ​​제품 키로 보호되어 있기 때문에 실제로는 아닙니다.

그러나 다른 데이터는 어떻습니까?

데이터가 보안과 관련이 있으면 CDN 자료가 아닙니다. 가능한 한 광범위하게 사용 하지 않으 려면 CDN에 넣지 마십시오 .


사이트가 somewebsite / file.txt 라고 가정하십시오 . Akamai DNS가 사용되고 있다고 가정하십시오. 그런 다음 클라이언트의 첫 번째 요청이 웹 사이트로 이동하거나 첫 번째 요청 자체가 Akamai로 이동합니까 (어떻게 든 클라이언트가 사용하는 DNS가 Akamai CDN이 사용 중임을 알고 있기 때문에)?
p2pnode

그리고 아마도 HTTP 리디렉션과 그들이 달성 할 수있는 것을 이해하지 못하기 때문에 Akamai 중앙 서버가 그림을 그릴 필요가 없도록 클라이언트가 Akamai 에지 서버의 IP 주소를 사용하는 방법을 어떻게 알 수 있습니까? 모든 ...
p2pnode

@ p2pnode : 나는 대답을 조금 확장했습니다. 잘만되면 그것은 당신이 궁금해하는 것을 포함합니다.
Der Hochstapler

1
이로 인해 상당한 성능 저하가 있습니까? 단일 TCP 스트림을 통해 발생하는 모든 데이터 전송 대신 여러 스트림이 사용되며 핸드 쉐이킹 등의 오버 헤드가 증가합니다.
Akash

@Akash : 일반적으로 CDN은 모든 것이 아니라 개별적인 큰 파일에만 사용합니다. 실제로, 이것은 문제가되지 않습니다.
Der Hochstapler

11

CDN에 대한 일반적인 접근 방식은 " anycast "라고 알려진 것을 사용하는 것 입니다. 이것이 작동하는 방식은 분산 서버가 해당 서버와 대상으로 응답하는 DNS와 함께 배치되어 있다는 것입니다. 예를 들어 서로 다른 호스팅 시설에 3 대의 서버가있을 수 있으며 각 DNS는 모두 IP 주소를 서버의 표준 주소라고 주장합니다 (예 :) content.example.com. DNS는 각각 동일한 글로벌 IP 주소를 갖도록 구성되어 있으며 각 서버 기능은 BGP 업데이트를 사용하여 가장 가까운 서버로의 경로를 확보하므로 가장 content.example.com빠른 / 가장 가까운 이름 검색을 수행 할 때 / most available DNS는 HTTP 서버로 요청에 응답합니다.

이러한 방식으로, GeoIP 트릭이 필요하지 않으며, 인터넷의 이질적 특성으로 인해 물리적 위치와 관련이 있거나없는 서버 중 가장 빠른 서버를 통해 항상 컨텐츠를 제공 받게됩니다.

Akamai가 적어도 부분적으로 이런 식으로 작동한다는 것을 이해합니다.


5

Origin Pull 유형 CDN도 사용할 수 있습니다.

Amazon Cloudfront는이 기술을 사용할 수 있습니다.

할당 된 서버 이름을 가리키고 모든 컨텐츠를 서버에 남겨 두는 media.example.com과 같은 CNAME을 설정합니다. CDN을 통해 전달할 이미지 및 컨텐츠의 경우 URL에서 media.example.com을 사용합니다. 요청은 서버 네트워크로 이동하고 컨텐츠를 사용할 수없는 경우 서버는 서버에서 컨텐츠를 가져옵니다. 시스템에 들어가면 콘텐츠가 수요가 존재하는 곳과 가장 가까운 서버 팜에 배포되어 할당 된 TTL에 대해 유지됩니다. TTL이 만료되고 Cloudfront에서 새로 고쳐야 할 때까지 서버는 더 이상 캐시 된 콘텐츠의 트래픽을 보지 못합니다.


1

Akamai는 이런 식으로 작동하지 않습니다. 다른 CDN은 다르게 작동하지만 Akamai는 웹 서버에 대해 애니 캐스트를 수행하지 않습니다.

NY의 사용자가 원하는 www.acme.com경우 acme.com의 이름 서버가 Akamai 이름 서버로 리디렉션 ( "위임")됩니다. Akamai 이름 서버는 질문을하는 컴퓨터의 위치 (IP 주소를 기준으로)를보고 가장 가까운 Akamai 서버의 IP 주소를 반환합니다 www.acme.com.


어떻게 작동합니까? Akamai 네임 서버는 사용자로부터 직접 또는 Akamai 네임 서버에 위임하는 사용자 DNS 서버로부터 요청을 수신합니까? 따라서 사용자의 위치가 아닌 DNS 서버 위치에 따라 지리적 위치가 지정됩니까?
odiszapc

0

Akamai의 CDN 작동 방식에 대한 요약은 여기에서 확인할 수 있습니다.

한마디로 :

  • CDN 서버에는 Akamai의 DNS 서버를 가리키는 CNAME 레코드가 있습니다.
  • 따라서 클라이언트 브라우저가 CDN 서버에 요청한 첫 번째 요청은 Akamai의 DNS 서버에서 DNS를 조회 한 것으로 사용자와 가까운 Akamai 서버의 IP 주소 ( "Edge Server"라고 함)로 응답합니다.
  • 이 에지 서버는 최근에 다른 사용자가 요청한 경우 로컬 캐시에서 정적 요소를 제공 할 수 있으며 자산의 사본을 얻기 위해 서버로 돌아 가지 않아도됩니다.
  • 누락 된 요소 또는 캐시 할 수없는 페이지는 Akamai 네트워크를 통해 호스트 근처의 다른 에지 서버로 라우팅됩니다. 해당 에지 서버는 실제 요청을 호스트 사이트로 보내고 네트워크를 통해 원래 에지 서버로 다시 전달하여 최종 사용자에게 반환합니다.
  • 에지 서버는 Akamai의 독점 프로토콜을 사용하여 내부적으로 통신하고 병목 현상을 해결하기 때문에 공용 인터넷보다 훨씬 빠르게 트래픽이 흐를 수 있습니다.

위에 나열된 블로그 게시물에서 언급했듯이 일부 대기업은 자체 서버를 사용하여 DNS를 확인하므로 CDN 사용의 이점을 무시할 수 있습니다.


-2

CDN은 Anycast DNS에서 작동합니다. Anycast DNS는 Anycast IP에서 작동합니다. 애니 캐스트 IP : 하나의 IP가 여러 서버에 할당됩니다. dns resolver에 대한 사용자 요청이있을 경우 해당 쿼리는 가장 가까운 서버에서 처리하며 대기 시간이 가장 적은 서버의 데이터를 제공합니다.


이것이 기존의 훨씬 더 충실한 답변을 어떤 방식으로 개선합니까?
Chenmunka
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.