2012-11-13 5 views
6

ELB를 사용하여 aws에 주전원과 보조문이 각각 하나씩 있습니다. 읽고 쓰는 것이 가장 좋은 방법은 무엇입니까?MongoDB Replicate sets and ELB

1) 기본 및 보조 노드가있는 ELB에 모든 노드가있는 단일 LB를 만들고 파이썬 (pymongo)이 읽기 및 쓰기로 정렬을 처리하도록합니까?

2) 아니면 ELB 아래 모든 보조를 배치하고 기본 IP를 탄성 IP에 할당합니까? 이렇게하려면 노드 유형을 추적하고 장애 조치가 필요한 경우 다시 할당하는 스크립트가 필요합니다.

나는 옵션 그것은 상황에 따라 1

감사

+1

로드 밸런서를 전혀 사용하지 않는 이유는 무엇입니까? 일반적으로 클라이언트에게 집합의 모든 구성원 목록을 제공하면 각 구성원의 상태가 무엇인지 파악하고 그에 따라 직접 요청을하게됩니다. –

+0

안녕하세요. Frederick, 감사합니다. 위의 간결한 설명이 내게 정말 빛을 비추 었습니다. 제 답변이 올바른지 신속하게 확인할 수 있습니까? – danday74

+0

@FrederickCheung 개인 네트워크에 mongo 인스턴스가 있고 인터넷에서 인스턴스에 액세스하지 않고 mongo를 노출해야하는 경우는 어떻습니까? – Jonathan

답변

5

를 희망하고있다. mongodb 드라이버를 사용하면 클라이언트가 연결되어있는 노드를 추적 할 필요가 없습니다. 단지 복제본 세트에 대해 알려 주면 자동으로 기본 노드에 연결되어 장애 조치를 처리합니다.

읽기로드를 분산하려는 경우 응용 프로그램에서 보조 프로그램을 읽을 수 있도록 읽기 기본 설정을 설정할 수 있지만 기본 폴더에만 쓸 수 있습니다. 즉, 들어오는 모든 연결에 대해 ELB를 설정하는 것은 불필요하며, 쓰기가 Secondary (실패 할 곳)로 전송 될 수 있으므로 사용자를 해칠 수도 있습니다. 읽기 기본 설정을 사용하면 읽기를 배포 할 수 있으므로 귀하의 경우에는 ELB를 사용하지 않는 것이 좋습니다.

일반적으로 http://www.slideshare.net/jrosoff/mongodb-on-ec2-and-ebs을 살펴 보겠습니다. 도움이 될 것입니다.

+1

그럼 ... 담당자 셋에 세 개의 노드가 있고 몽고와 연결하면 ... IP 주소는 무엇입니까? 누군가가 추락 할 수 있다고 가정합니다. 현재 주 서버에 탄성 IP를 연결하고 누가 기본 서버에 있는지 항상 모니터링해야합니까? – Tampa

1

저는 같은 보트에 있지만, 하나의 복제본, 2 개의 기본 및 1 개의 중재자에서 3 개의 mongo 인스턴스를 실행하고 있습니다. ElasticIP 설정은 당신의 mongo 서버가 당신이 원하지 않는 공개 접속 연결을 가질 것이라는 것을 의미하는 나쁜 아이디어입니다.

2707에서 수신 대기하고 복제본의 기본 구성원 모두에게 전달하는 ELB를 만들었지 만 실제로드 균형 조정이 아닌 내결함성을 위해 작성되었습니다. 따라서 27017 상태 검사에 실패하면 대기 서버가 후속 요청을 처리 할 수 ​​있습니다. 또한 ELB를 사용하면 DNS CNAME 레코드를 만들고 앱에서 사용하도록 지정할 수 있습니다. 제 경우에는 'docstore'를 사용합니다. 이렇게하면 docstore-1이나 docstore-2와 같은 실제 mongo 인스턴스를 지정할 필요가 없습니다.

+0

이것에 대해 설명해주십시오. 개인 서브넷에 3 개의 mongo 인스턴스가 있으며이를 사용 가능하게해야하며 가능하면 단일 IP/elb cname을 통해이를 수행하고 싶습니다. 이것이 가능합니까? – Jonathan

0

저는로드 밸런서를 사용하지 않는다고 생각합니다. 클라이언트는 모든 복제 세트 구성원 (기본 및 보조)에 대한 세부 정보를 제공하며 현재 기본에 연결됩니다.

우리가 복제 세트 (아닌 개별 노드)에 연결하기 위해 명령 행 클라이언트를 사용하고, 여기에 How do you connect to a replicaset from a MongoDB shell?

mongo --host replicaSetName/host1[:porthost1],host2[:porthost1],host3[:porthost3] databaseToConnect 

를 참조하지만, 어떤 클라이언트 nodeJS, MongoChef (지원 복제 세트) 또는 수 당신과 연결하고 있습니다.