분산 웹사이트 서버 이중화

분산 웹사이트 서버 이중화

웹 사이트 인프라가 매우 복잡하고 완전히 분산되어 있다고 가정합니다(대부분의 대규모 웹 회사처럼).

여러 클라이언트 요청을 처리하기 위해 이러한 추가 웹 서버가 모두 있지만 사용자가 입력해야 하는 단일 "머신"이 여전히 있다고 생각하는 것이 맞습니까? 나는 이 기계가 IP 주소와 물리적으로 연결된 기계가 될 것이라고 추측합니다.

분산 시스템이 존재하는 장소에 여전히 단일 실패 지점(일반적으로 제어 노드 또는 이 예에서는 공용 인터넷에 연결된 시스템)이 있는지 알아야 하기 때문에 묻습니다. 두 대의 컴퓨터가 서로 다른 IP 주소를 가져야 하므로 인터넷에 연결될 수는 없겠죠?

이 "머신"은 그 자체로는 서버가 아닐 수도 있지만 Cisco 장비일 수도 있습니다. 실제로 이러한 분산 시스템에 하나의 전자 장치의 무결성에 의존하는 특정 섹션이 여전히 있는지 알고 싶습니다.

답변1

모든 요청이 처리되는 하나의 시스템이 있을 수 있지만 반드시 그럴 필요는 없습니다. 종종 이 시스템을로드 밸런서. 그러나 클라이언트의 각 요청이 자체 포함되어 있거나 분산 프런트 엔드가 동기화된 분산 백 엔드와 통신할 수 있는 경우 클라이언트는 요청이 있을 때마다 다른 시스템과 통신할 수 있습니다.

일어나야 할 일은 클라이언트가 요청을 자체적으로 완료하는 데 필요한 모든 정보를 독립 시스템에 제공하거나 서버가 토큰(주로 웹 사이트의 쿠키)에 대해 백엔드 분산 데이터베이스에 쿼리하는 것입니다. ) 서버는 다른 시스템이 중단한 부분부터 다시 시작할 수 있습니다.

답변2

귀하의 질문에 답변하려면,아니요, 단일 장애 지점 없이 웹 사이트 인프라를 구축할 수 있습니다.

DNS 라운드 로빈을 사용하면 여러 IP를 단일 도메인 이름과 연결할 수 있습니다. 각 프런트 엔드는 차례로 대화할 수 있습니다.클러스터된백엔드 시스템에는 지속적으로 동기화되는 여러 개의 독립적인 데이터베이스 복사본이 있습니다.

제프 앳우드는 실제로블로그에 올렸던테스트에 사용하는 서비스/인스턴스를 무작위로 중단하는 데몬을 포함하여 단일 장애 지점에 영향을 받지 않도록 시스템을 만드는 Netflix의 작업에 대해 설명합니다.

답변3

몇 가지 예:

Ubuntu 9.10(Karmic)에서 IP 장애 조치, Heartbeat 및 Pacemaker를 사용하여 웹 사이트의 가용성을 높입니다.

MSCS(Microsoft Cluster Server)는 클러스터 내에서 IP 주소 리소스를 정의하고 한 노드에서 다른 노드로 장애 조치하는 기능을 제공합니다.

들어오는 HTTP 요청을 서버 팜의 웹 서버 노드에 배포하는 작업을 수행하는 로드 밸런서와 같은 모든 프런트 엔드 시스템에도 동일한 원칙이 적용될 수 있습니다.

답변4

단일 도메인 이름과 연결된 여러 개의 서로 다른 IP 주소가 있을 수 있으며 종종 그럴 수도 있습니다. 예를 들어 google.com은 현재 다음을 확인합니다.

Name:   google.com
Address: 173.194.34.129
Name:   google.com
Address: 173.194.34.130
Name:   google.com
Address: 173.194.34.131
Name:   google.com
Address: 173.194.34.132
Name:   google.com
Address: 173.194.34.133
Name:   google.com
Address: 173.194.34.134
Name:   google.com
Address: 173.194.34.135
Name:   google.com
Address: 173.194.34.136
Name:   google.com
Address: 173.194.34.137
Name:   google.com
Address: 173.194.34.142
Name:   google.com
Address: 173.194.34.128

웹 브라우저 동작은 다양하지만 일반적으로 하나의 IP 주소를 무작위로 시도하고 처음부터 응답이 없으면 다른 IP 주소로 이동합니다. 따라서 여기에는 단일 실패 지점이 없습니다.

관련 정보