문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

샤딩된 cluster 배포

이 페이지의 내용

  • 개요
  • 고려 사항
  • 절차

이 튜토리얼에는 mongos, config 서버 복제본 세트 및 2개의 샤드 복제본 세트로 구성된 새로운 샤드 클러스터 생성이 포함됩니다.

샤딩된 클러스터의 각 멤버는 클러스터의 다른 모든 멤버에 연결할 수 있어야 합니다. 여기에는 모든 샤드와 config 서버가 포함됩니다. 모든 인터페이스와 방화벽을 포함한 네트워크 및 보안 시스템이 이러한 연결을 허용하는지 확인하세요.

중요

변경된 IP 주소로 인해 구성이 업데이트되는 것을 방지하려면 IP 주소 대신 DNS 호스트 이름을 사용하세요. 특히 복제본 세트 구성원 또는 샤드 클러스터 구성원을 구성할 때 IP 주소 대신 DNS 호스트 이름을 사용하는 것이 중요합니다.

IP 주소 대신 호스트 이름을 사용하여 분할된 네트워크 범위에 걸쳐 클러스터를 구성합니다. MongoDB 5 부터 시작.0, IP 주소로만 구성된 노드는 시작 유효성 검사에 실패하여 시작되지 않습니다.

호스트 식별자의 호스트 이름 부분으로 localhost 또는 해당 IP 주소를 사용하는 경우, 클러스터의 다른 모든 MongoDB 컴포넌트에 대한 호스트 설정으로 해당 식별자를 반드시 사용해야 합니다.

예를 들어 sh.addShard() 메서드는 타겟 샤드의 호스트 이름에 대해 host 매개 변수를 받습니다. hostlocalhost로 설정한 경우, 클러스터 내의 모든 다른 샤드들에 대해서도 localhost를 호스트로 사용해야 합니다.

이 튜토리얼에는 내부/멤버십 인증 또는 역할 기반 액세스 제어를 구성하는 데 필요한 단계는 포함되어 있지 않습니다.

프로덕션 환경에서는 샤딩된 클러스터가 내부 인증 및 클라이언트 액세스를 위해 최소 x.509 보안을 사용해야 합니다.

다음 단계는 config 서버 복제본 세트를 배포하는 단계입니다.

프로덕션 배포의 경우, 최소 세 멤버를 갖는 config 서버 복제 세트를 배포하세요. 테스트를 위해서 단일 멤버 복제본 세트를 생성할 수 있습니다.

참고

config 서버 복제본 세트는 샤드 복제본 세트와 동일한 이름을 사용하면 안 됩니다.

이 튜토리얼에서 config 서버 복제본 세트 멤버은 다음 호스트와 연결됩니다.

config 서버 복제본 집합 멤버
호스트 이름
회원 0
cfg1.example.net
회원 1
cfg2.example.net
멤버 2
cfg3.example.net
1

mongod를 시작할 때 구성 파일 또는 명령줄을 통해 mongod 설정을 지정합니다.

2

mongosh 를 config 서버 멤버 중 하나에 연결합니다.

mongosh --host <hostname> --port <port>
3

mongosh 에서 rs.initiate() 메서드를 실행합니다.

rs.initiate()는 선택 사항으로 복제본 세트 구성 문서를 가져올 수 있습니다. 복제본 세트 구성 문서에 다음을 포함합니다.

  • _idreplication.replSetName 또는 --replSet 옵션에 지정된 복제본 세트 이름으로 설정됩니다.

  • config 서버 복제본 세트에 대해 configsvr 필드가 true로 설정.

  • 복제본 세트의 각 멤버에 대한 문서가 있는 members 배열.

중요

복제본 세트에 대해 mongod rs.initiate() 하나의 인스턴스에서만 를 실행합니다.

rs.initiate(
{
_id: "myReplSet",
configsvr: true,
members: [
{ _id : 0, host : "cfg1.example.net:27019" },
{ _id : 1, host : "cfg2.example.net:27019" },
{ _id : 2, host : "cfg3.example.net:27019" }
]
}
)

복제본 세트 구성 문서에 대한 자세한 내용은 복제본 세트 구성을 참조하세요.

config 서버 복제본 세트(CSRS)가 시작되고 작동되면 샤드 복제본 세트 생성을 진행합니다.

프로덕션 배포에서는 멤버가 세 개 이상 포함된 복제본 세트를 사용하세요. 테스트를 위해서는 단일 멤버 복제본 세트를 생성할 수 있습니다.

참고

샤드 복제본 세트는 config 서버 복제본 세트와 동일한 이름을 사용해서는 안 됩니다.

각 샤드에 대해 다음 단계를 사용하여 샤드 복제본 세트를 생성합니다.

1

mongod를 시작할 때 구성 파일 또는 명령줄을 통해 mongod 설정을 지정합니다.

2

mongosh 를 복제본 세트 멤버 중 하나에 연결합니다.

mongosh --host <hostname> --port <port>
3

mongosh 에서 rs.initiate() 메서드를 실행합니다.

rs.initiate()는 선택 사항으로 복제본 세트 구성 문서를 가져올 수 있습니다. 복제본 세트 구성 문서에 다음을 포함합니다.

  • _id 필드는 replication.replSetName 또는 --replSet 옵션에 지정된 복제본 세트 이름으로 설정됩니다.

  • 복제본 세트의 각 멤버에 대한 문서가 있는 members 배열.

다음 예시에서는 멤버가 3개인 새 복제본 세트를 시작합니다.

중요

복제본 세트에 대해 mongod rs.initiate() 하나의 인스턴스에서만 를 실행합니다.

rs.initiate(
{
_id : "myReplSet",
members: [
{ _id : 0, host : "s1-mongo1.example.net:27018" },
{ _id : 1, host : "s1-mongo2.example.net:27018" },
{ _id : 2, host : "s1-mongo3.example.net:27018" }
]
}
)

config 서버를 지정하기 위해 구성 파일이나 명령줄 매개변수를 사용하여mongos를 시작합니다.

이 시점에서 샤드 클러스터는 mongos 및 config 서버로 구성됩니다. 이제 mongosh 를 사용하여 샤드 클러스터에 연결할 수 있습니다.

mongoshmongos 에 연결합니다. mongos 가 실행 중인 hostport 를 지정합니다.

mongosh --host <hostname> --port <port>

mongoshmongos 에 연결한 후에는 다음 절차를 계속 진행하여 클러스터에 샤드를 추가합니다.

mongoshmongos sh.addShard() 연결된 세션에서 메서드를 사용하여 각 샤드를 클러스터에 추가합니다.

다음 작업은 클러스터에 단일 샤드 복제본 세트를 추가합니다.

sh.addShard( "<replSetName>/s1-mongo1.example.net:27018,s1-mongo2.example.net:27018,s1-mongo3.example.net:27018")

클러스터에 원하는 모든 샤드가 포함될 때까지 이 단계를 반복합니다.

컬렉션을 샤딩하려면 mongoshmongos 에 연결하고 sh.shardCollection() 메서드를 사용합니다.

참고

샤딩 및 인덱스

컬렉션에 이미 데이터가 포함되어 있는 경우, 컬렉션을 샤딩하기 전에 샤드 키를 지원하는 인덱스를 생성해야 합니다. 컬렉션이 비어 있으면 MongoDB는 sh.shardCollection()의 일부로 인덱스를 생성합니다.

MongoDB는 컬렉션을 샤딩하는 두 가지 전략을 제공합니다.

  • 해시된 샤딩은 단일 필드의 해시된 인덱스 샤드 키로 사용하여 샤딩된 클러스터에서 데이터를 분할합니다.

    sh.shardCollection("<database>.<collection>", { <shard key field> : "hashed" } )
  • 범위 기반 샤딩은 샤드 키로 여러 필드를 사용할 수 있으며, 샤드 키 값에 의해 결정된 연속적인 범위로 데이터를 나눕니다.

    sh.shardCollection("<database>.<collection>", { <shard key field> : 1, ... } )

샤드 키 선택은 샤딩의 효율성뿐만 아니라 구역과 같은 특정 샤딩 기능을 활용하는 능력에 영향을 미칩니다. 효과적인 샤드 키를 선택하는 방법을 알아보려면 샤드 키 선택을 참조하세요.

버전 4 부터 시작됩니다.0, mongoshconvertShardKeyToHashed() 메서드를 제공합니다. 이 메서드는 해시된 인덱스와 동일한 해시 함수를 사용하며 키의 해시된 값을 확인하는 데 사용할 수 있습니다.

다음도 참조하세요.

← 범위 지정된 샤딩
구역 →

이 페이지의 내용