나는 이것이 쉬운 해결책이라고 확신합니다. 나는 DNS가 어떻게 작동하는지 또는 그것이 이 문제와 관련되어 있는지조차 잘 모릅니다.
여러 인스턴스에 분산되어 Amazon ec2에서 웹 서비스를 실행하는 경우 단일 도메인 이름을 사용하여 수시로 변경되는 전체 서버 풀에 액세스할 수 있도록 하려면 어떻게 해야 합니까?
인스턴스가 1초 동안 존재했다가 다음 순간에 사라질 수 있으므로(또는 그 반대) 라우팅할 클러스터의 활성 구성원을 무작위로 선택하는 방법이 필요합니다. 업데이트는 즉각적이어야 합니다. DNS 캐싱과 함께 이것이 가능합니까?
답변1
이에 대한 접근 방식은 여러 가지가 있으며 그 중 일부는 여러분이 사용할 수 있습니다.
귀하의 경우에는 상대적으로 짧은 TTL을 사용하여 여러 개의 DNS 레코드를 갖는 것이 좋습니다. 배포가 최적이 아니며 클라이언트는 지연 시간이 가장 낮은 노드를 선택하지 않을 수 있습니다. 그러나 이는 매우 간단합니다. DNS 레코드를 추가하기만 하면 됩니다. 이는 널리 사용되고 테스트된 기술입니다.
풀에서 서버를 제거해야 하는 경우 해당 DNS 레코드를 제거하기만 하면 대부분의 클라이언트는 TTL이 만료된 후 서버 사용을 중지합니다. 새 서버에도 동일하게 적용됩니다. 서버를 추가하면 TTL 만료 시간이 지나면 클라이언트가 해당 서버를 사용하기 시작합니다.
예를 들어 Google은 이를 균형 조정 기술의 일부로 사용합니다.
$ dig A google.com
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 297 IN A 74.125.77.99
google.com. 297 IN A 74.125.77.104
google.com. 297 IN A 74.125.77.147
Google은 귀하가 해당 웹사이트에 접속하면 귀하가 거주하고 있다고 추측하는 국가를 기반으로 귀하와 가까운(귀하의 언어로) 호스팅되는 버전으로 귀하를 리디렉션함으로써 이를 확장합니다. 그러나 이는 종종 필요하지 않은 수준입니다.
답변2
업데이트는 즉각적이어야 합니다. DNS 캐싱과 함께 이것이 가능합니까?
아니요, DNS로는 불가능합니다.DNS 레코드는 캐시가 레코드를 사용할 수 있는 시간을 지정하는 TTL(Time To Live)과 함께 제공됩니다.없이권한 있는 DNS 서버로 다시 확인하세요. 그리고 여러 가지 이유로 인해 DNS TTL은 사실상 10분 미만일 수 없습니다. DNS 라운드 로빙은~ 아니다적어도 서비스 가동 시간이 필요한 경우에는 로드 밸런싱 솔루션이 아닙니다. 이 문제를 참조하세요Jeff Atwood의 이전 질문.
너~할 수 있다사용DNS 라운드 로빈과 사전 모니터링을 결합한 타사 DNS 서비스DNS에서 죽은 서버를 자동으로 제거합니다. 좋은 해결책은 아니지만 덜 중요한 사이트에는 충분할 수 있으며 fx DNSMadeEasy 또는 EdgeDirector를 사용하여 설정하는 것은 간단합니다.
웹 서버 가용성을 처리하는 업계 표준 방법은레이어 4 또는 레이어 7 로드 밸런서웹서버 앞.
여러 인스턴스에 분산된 Amazon EC2의 웹 서비스, 단일 도메인 이름을 사용하여 전체 서버 풀에 액세스할 수 있도록 하려면 어떻게 해야 합니까?
Amazon은 이를 위해 플러그 앤 플레이 서비스를 제공합니다.아마존이라고탄력적 로드 밸런싱. 기본적으로 EC2 웹 서버 앞에 계층 7(HTTP) 또는 계층 4(TCP) 로드 밸런서를 설정하는 Amazon의 관리형 서비스입니다.
또 다른 일반적인 옵션은 nginx, HAProxy, Apsis Pound, Apache 2.2, Zeus Load Balancer 등(여러 가지가 있음)과 같은 L7 로드 밸런서를 사용하여 EC2 인스턴스를 설정하는 것입니다. 하지만 이 방법을 택한다면 OS + 로드 밸런싱 소프트웨어를 직접 관리해야 하고, EC2 로드 밸런서 인스턴스 자체의 가용성을 충분히 높게 만드는 방법을 고려해야 합니다.