Facebook 또는 Wikipedia의 IP 주소에서 청취하는 하드웨어는 무엇입니까?


32

지적 호기심 때문에 Facebook이나 Wikipedia와 같은 대규모 사이트의 작동 방식을 이해하려고합니다. 확장 가능한 사이트를 구축하기위한 다양한 기술에 대해 읽었지만 여전히 특정 세부 사항에 대해 의아해합니다.

나를 혼란스럽게하는 부분은 궁극적으로 DNS가 전체 도메인을 단일 IP 주소 또는 라운드 로빈 DNS의 경우 소수의 IP 주소에 매핑한다는 것입니다.

예를 들어, wikipedia.org에는 유형 A DNS 레코드가 하나만 있습니다. 따라서 Wikipedia를 방문하는 전 세계 사람들은 DNS에 지정된 하나의 IP 주소로 요청을 보내야합니다.

방대한 사이트의 IP 주소를 수신하는 하드웨어는 무엇이며, 전 세계 사용자의 요청에서 오는 모든로드를 어떻게 처리 할 수 ​​있습니까?

편집 1 : 모든 답변에 감사드립니다! 애니 캐스트는 실현 가능한 해답처럼 보입니다. 누군가 특정 IP 주소가 애니 캐스트 라우팅인지 여부를 확인하는 방법을 알고 있습니까?

편집 2 : 주제를 더 읽은 후에는 일반적으로 애니 캐스트가 동적 웹 컨텐츠에 사용되지 않는 것으로 보입니다. 애니 캐스트는 일반적으로 UDP (예 : DNS 조회) 또는 때로는 정적 컨텐츠에 사용됩니다.

주목해야 할 흥미로운 점은 Facebook은 profile.ak.fbcdn.net을 사용하여 스타일 시트 및 자바 스크립트 라이브러리와 같은 정적 컨텐츠를 호스팅한다는 것입니다. 이 이름을 핑할 때마다 다른 IP 주소에서 응답을받습니다. 그러나 이것이 애니 캐스트인지 또는 완전히 다른 기술인지는 알 수 없습니다.

내 원래의 질문으로 돌아가서, 내가 알 수있는 한, 큰 사이트조차도 소수의 퍼블릭 IP 주소에서 수신 대기하는 고가의로드 밸런싱 하드웨어를 갖게 될 것입니다.


좋은 질문, 너무 나쁜 대부분의 사람들은 그것을 이해하지 못합니다. 누군가가 세부 사항에 대한 답변을 얻을 수 있기를 바랍니다. 약 5 천만 달러에 달하는 Cisco 양자 컴퓨팅 기반로드 밸런서 일 수 있습니다.
OliverS

답변:


9

반드시이 작업을 수행하는 하드웨어 일 필요는 없지만 확장하도록 설계된 완전한 시스템입니다. 여기에는 하드웨어뿐만 아니라 응용 프로그램 설계, 데이터베이스 설계 (관계형 또는 기타), 네트워킹, 스토리지 및 이들 모두가 어떻게 조화되는지를 포괄합니다.

규모가 큰 일부 사이트의 규모가 Wikimedia 아키텍처 , FacebookTwitter의 높은 확장 성-여기에서 시작확장 성 이라는 점을 궁금해하는 좋은 출발점 입니다.

DNS 및 단일 IP 주소 및 라운드 로빈에 대한 질문과 관련하여 이러한 유형의 사이트는 종종 단일 IP 주소를 나타내는 방법으로 로드 밸런싱 을 사용 합니다. 이는 특수 하드웨어로드 밸런서 또는 범용 서버에서 실행되는 소프트웨어를 통해 수행 할 수 있습니다. 로드 밸런서가 관리하는 IP로 들어오는 요청은 최종 서버에 투명하게 일련의 서버에 분산됩니다.

하드웨어 및 소프트웨어로드 밸런서 / 프록시 비교 및 ​​DNS 라운드 로빈과 비교하는 방법을 포함하여이 주제에 대한 자세한 설명을 보려면 로드 밸런싱 웹 애플리케이션을 읽으십시오 .


고마워, 심 내 질문을하기 전에이 기사들 대부분을 읽었지만 구체적인 답을 찾지 못했습니다. 그렇다면 누군가가 Wikipedia 페이지를 볼 때마다 발생하는 단일 하드웨어로드 밸런서 (또는로드 밸런싱 소프트웨어를 실행하는 단일 시스템)가 실제로 있습니까? 아니면 병목 현상을 피하기위한 또 다른 방법이 있습니까?
Igor Ostrovsky

나는 확실히 위키 백과는 지금 무엇을하고 있지 않다 그러나 오징어의 시리즈를 사용하여 약 2,008 회담이 문서는 프록시 서버 리버스 blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7

2
하나의 ip-address를 핑하는 애니 캐스트 주소도 있지만, 임의의 "임의의 \ 임의로"의도 된 범위의 "실제"엔드 포인트 중 하나로 분배됩니다. Wikipedia \ Google에서이 기능을 사용하는지 잘 모르겠지만 일부 루트 DNS 서버가 사용하고 있다고 확신합니다. Wikipedia에 대한 나의 핑은 당신과 일치하고 (그리고 나는 아일랜드에 있습니다) 그래서 나는 그들이 그것을 사용하고 있다고 생각합니다.
Helvick

1
Anycast는 DNS 쿼리에서 가장 가까운 IP 주소를 얻기 위해 사용됩니다. 그런 다음로드 밸런서는 해당 IP 주소를 수신하고 요청을 지원 서버로 분배합니다.
Andy Shellam

2
Wikipedia는 또한 많은로드 밸런싱을 위해 pdns의 geoip 백엔드를 사용합니다. 자세한 정보는 여기 : wikitech.wikimedia.org/view/PowerDNS 및 여기 : wikitech.wikimedia.org/view/DNS
faultyserver

3

연결 수명이 짧아서 연결 수명 동안 경로가 변경되지 않는다고 가정하면 Anycast를 TCP 연결에도 사용할 수 있습니다. 이것은 HTTP 연결에 대한 좋은 가정입니다 (특히 Connection : Keep-Alive가 짧은 시간 초과로 유지되거나 비활성화 된 경우).

많은 CDN (CacheFly, MaxCDN 및 기타 많은 것)은 실제로 DNS뿐만 아니라 TCP 연결 (HTTP)에 애니 캐스트를 사용합니다. CacheFly에서 호스트 이름을 확인하면 전세계에서 동일한 IP 주소를 얻을 수 있으며 "가장 가까운"CacheFly 클러스터로 라우팅됩니다. 여기서 "가장 가까운"은 BGP 경로 길이 및 메트릭과 관련이 있으며, 이는 일반적으로 단순한 지리적 거리보다 네트워크 대기 시간을 측정하는 더 좋은 방법입니다.

Wikipedia의 경우 : http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/


3

IP 주소가 Anycast를 사용하고 있는지 확인하는 가장 쉬운 방법은 다른 위치에서 추적 경로를 수행하는 것입니다. 다음을 시도해보십시오. traceroute.org로 이동하여 위치를 선택한 다음 IP 주소 8.8.8.8 (anycast를 사용하는 Google 공개 DNS)로 경로 추적을 시도하십시오. 호주의 서버에서 호주에 8.8.8.8까지의 추적 경로가 있음을 알 수 있습니다.

Ping 대신 호스트 이름 조회를 시도하십시오. 예 : http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

해당 이름 뒤에 IP 주소 목록이 표시됩니다. 이 IP 주소는 서버를 핑할 때 라운드 로빈 방식으로 사용됩니다.



2

이고르, 당신의 질문은 위대하고, 많은 무고한 질문들과 같이, 다른 수준의 세부 사항들에 많은, 많은 답변들이 있습니다.

하드웨어는 웹 서버입니다. 분명히 ;-)

하드웨어는 실제로로드 밸런서 클러스터로, 모두 공유 스토리지에서 가져 오도록 구성되어 있으므로 모두 동일한 자료로 동일하게 구성됩니다.

하드웨어는 실제로 지리적으로 분산 된 여러로드 밸런서 클러스터 중 하나이며 DNS 서버가 내린 결정에 가장 가까운 하드웨어로 연결되었습니다.


1

구글은 작년에 자체 개발 한 하드웨어 아키텍처에 조금을 발표하고 그것은있게 좋은 읽기 .


이것은 흥미로운 읽을 거리이지만 내 특정 질문에 대한 답은 아닙니다. 4 개의 Google 공개 IP 주소를 수신하고 수천 대의 서버에 부하를 분산시키는 하드웨어가 무엇인지 궁금합니다.
Igor Ostrovsky

1

단일 IP 주소가 반드시 단일 서버를 의미하지는 않습니다 : http://en.wikipedia.org/wiki/Anycast


1
Facebook과 같은 일부 중앙 동기화가있는 경우 Anycast는 유지하기 어려운 설정입니다. 인스턴스가 많은 통신을 필요로하지 않는 DNS 서버 또는 정적 컨텐츠가있는 웹 서버와 같이 실제로 작동합니다.

1
단일 IP가 단일 서버를 의미하는 것은 아니지만, 애니 캐스트는 사용자가 응답하는 한 누가 응답하지 않아도 DNS 쿼리에 사용되므로 UDP 프로토콜에서만 유용합니다. DNS가 사용합니다. TCP (HTTP에서 사용)를 사용하면 응답하는 서버가 구체적으로 요청한 서버인지 확인해야합니다.
Andy Shellam

@AndyShellam, 기사 en.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdf 는 당신과 동의하지 않는 것 같습니다 ...
Pacerier

1

더 큰 사이트는 여러 가지 다른 기술을 함께 사용합니다. 언급 한 웹 사이트는 거의 모든 국가에 여러 서버가 있습니다. 웹 사이트 방문자의 IP 주소를 기반으로 DNS 서버는 방문자에게 가장 가까운 클러스터의 IP 주소를 반환합니다. Akamai 는 이러한 서비스를 제공하고 있습니다 (자세한 내용은이 웹 사이트의 그림을 클릭하십시오).

이 데이터 센터의 "클러스터"는 이제 여러 다른 시스템 (DB 서버, 웹 서버,로드 밸런서 등)으로 구성됩니다. 웹 사이트에 제공하는 내용에 따라 정적 컨텐츠 등을위한 서버가있을 수 있습니다.


1

Facebook 또는 Wikipedia와 같은 대규모 사이트는 여러 가지 다른 기술을 사용하여 확장 성을 달성합니다.

이러한 기술 중 하나는 dns입니다. Dns는 라운드 로빈과 부하 분산되도록 구성되어 있습니다. DNS 구성은 요청이 어디에서 왔는지 파악하고 가장 가까운 사이트의 주소를 반환 할 수있을 정도로 똑똑합니다. 따라서 발굴을하면 여러 레코드가 표시되지만 핑을 수행하면 항상 동일한 주소를 다시 얻을 수 있습니다.

사이트에서 첫 번째로 발견 한 하드웨어는 리버스 프록시 또는로드 밸런서 풀입니다. 풀은 모든 컴퓨터가 동일한 IP에 응답하지만 세션 헤더에 새 IP를 반환하도록 설정됩니다. 모든 추가 요청은 동일한 노드를 통과합니다.

대규모 사이트에 사용되는로드 밸런서는 값 비싼 장비가 아니라 LVS를 실행하는 상용 서버입니다. http://www.linuxvirtualserver.org/


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.