데이터베이스 확장은 사람들이 피하고 싶어하는 작업인 경우가 많습니다. 수직적 크기의 데이터베이스인 관계형 데이터베이스의 경우, 관리자는 데이터베이스를 오프라인으로 전환하고 서버에 새 하드웨어를 추가해야 합니다. 이 시나리오에서 발생하는 모든 확장은 단방향 작업이므로 하드웨어를 제거하거나 규모를 축소하지 않을 가능성이 높습니다. 분산 데이터베이스인 NoSQL 데이터베이스의 경우, 하드웨어를 제거하는 경우가 많지만 구성의 단순성을 희생하는 경우도 있습니다. 예를 들어 마스터, 슬레이브, 복제본, 샤드 등 여러 가지 노드가 있는 MongoDB를 생각해 보세요.
여기에서 카우치베이스 서버 가 들어옵니다.
Couchbase Server는 쉽게 확장할 수 있도록 설계된 분산형 NoSQL 데이터베이스입니다. 단일 노드 P2P 아키텍처 덕분에 마우스 클릭 몇 번으로 수요에 맞게 클러스터를 확장하거나 축소할 수 있습니다. UI가 사용자의 필요에 맞지 않는 경우 사용 가능한 API와 CLI 도구를 사용할 수 있는 옵션도 있습니다.
Couchbase를 조직에서 선택한 데이터베이스로 사용할 때 클러스터를 얼마나 쉽게 확장할 수 있는지 알아보겠습니다.
이 예제에서는 Docker를 사용한 클러스터 확장에 대해 살펴보겠습니다. 프로덕션 환경에서는 노드를 호스팅하는 데 여러 솔루션을 사용할 수 있습니다. 시나리오에 관계없이 수요 증가 또는 감소에 맞춰 확장하는 단계는 동일합니다.
Docker로 Couchbase 서버 노드 만들기
이미 Docker가 설치되어 있다고 가정하면 Docker CLI에서 다음 명령을 실행할 수 있습니다:
1 2 3 4 |
도커 실행 -d -p 7091:8091 --이름 couchbase1 카우치베이스/서버 도커 실행 -d -p 8091:8091 --이름 couchbase2 카우치베이스/서버 도커 실행 -d -p 9091:8091 --이름 couchbase3 카우치베이스/서버 도커 실행 -d -p 10091:8091 --이름 couchbase4 카우치베이스/서버 |
위의 명령은 다음에서 찾을 수 있는 공식 Docker 이미지를 사용하여 4개의 Couchbase 컨테이너를 생성합니다. 도커 허브. 각 컨테이너는 다른 이름과 다른 호스트 포트를 갖게 됩니다. 카우치베이스 서버는 많은 포트를 사용하지만, 호스트 컴퓨터에서 액세스할 포트는 관리자 포트뿐이므로 관리자 포트만 매핑하면 됩니다. 다른 포트는 컨테이너 네트워크 내의 컨테이너에서 액세스할 수 있습니다.
노드가 준비되면 클러스터를 생성하고 확장할 수 있습니다.
증가하는 수요에 맞춰 Couchbase Server 확장하기
현재로서는 구성된 Couchbase 클러스터가 없습니다. 웹 브라우저에서 http://localhost:7091 으로 이동합니다.
새 노드이므로 새 클러스터를 설정하겠습니다. 구성 마법사의 몇 가지 단계를 따라 Couchbase 관리 대시보드로 이동할 때까지 진행하세요. 축하합니다, 단일 노드 Couchbase 클러스터가 생겼습니다!
버킷을 만들고 문서를 추가한 다음 계속 진행하세요.
미래로 돌아가서 여러분의 비즈니스가 호황을 누리고 있다고 가정해 봅시다. 단일 노드 클러스터로는 더 이상 감당할 수 없고 더 많은 전력이 필요합니다. 웹 브라우저에서 현재 사용하지 않는 노드 중 하나인 http://localhost:8091 으로 이동합니다. 새 클러스터를 설정하는 대신 기존 클러스터에 가입해 보겠습니다.
클러스터에 있는 기존 노드의 호스트를 입력하라는 메시지가 표시됩니다. Docker를 사용하고 있으므로 호스트 IP가 아닌 올바른 컨테이너 IP를 얻어야 합니다. 클러스터에 참여하기로 선택한 후에는 클러스터 내의 서버를 체크아웃할 수 있습니다.
이 시점에서 클러스터에는 두 대의 서버가 있어야 합니다. 기존 클러스터에 가입하고 클러스터를 확장하는 것은 클러스터의 밸런스를 재조정할 때까지 완료되지 않습니다. 클러스터의 밸런스를 재조정하면 데이터가 분산되어 한 노드에 너무 많은 부담이 가지 않도록 합니다. 재조정하는 동안 클러스터는 다운타임 없이 계속 사용할 수 있습니다.
애플리케이션에 대한 수요가 통제 불능 상태여서 클러스터에 다른 노드를 추가해야 한다고 가정해 보겠습니다. 이번에는 조금 다르게 해보겠습니다. 웹 브라우저에서 현재 사용되지 않는 노드인 http://localhost:9091 로 이동합니다. 클러스터에 가입하는 대신 새 클러스터를 만들어 보겠습니다. 클러스터가 구성되면 컨테이너 IP를 기록해 두세요.
원래 클러스터 서버 목록으로 돌아가서 새 서버를 추가하도록 선택합니다. 방금 생성한 새 클러스터가 지워지고 원래 클러스터에 추가됩니다. 리밸런싱을 할 때까지 클러스터 확장이 완료된 것이 아니라는 점을 기억하세요.
클러스터와 데이터 요구 사항이 증가함에 따라 재조정하는 데 시간이 걸릴 수 있습니다. 이 시간 동안 클러스터는 온라인 상태로 유지되므로 운영에 편리합니다.
수요 감소에 대비하여 Couchbase Server 확장하기
좋은 한 해를 보냈지만 서버에 대한 수요가 감소했다고 가정해 보겠습니다. 그럴 수도 있지만, 그럴 때 사용하지도 않는 리소스에 대한 비용을 계속 지불하고 싶지는 않을 것입니다. 다행히도 Couchbase를 축소하는 것은 확장하는 것만큼이나 쉽습니다.
클러스터의 서버 목록으로 다시 이동합니다.
목록에서 제거할 서버를 선택합니다. 그러나 클러스터에서 노드를 삭제하기 전에 몇 가지 주의해야 할 사항이 있습니다:
- 클러스터가 이전과 같은 리소스 없이도 실제로 부하를 처리할 수 있는지 확인하세요.
- 제거와 장애 조치 상황의 차이점을 이해합니다.
장애 조치 또는 제거와 관련하여, 장애 조치는 일반적으로 노드 유지 관리를 위한 것이라는 점에 유의하세요. 즉, 노드를 영원히 없애는 것이 아니라 다시 가져올 계획입니다. 노드를 제거한다고 해서 클러스터에서 삭제되는 것이 아닙니다. 데이터가 파괴되지 않도록 리밸런싱을 수행하여 제거를 마무리해야 합니다. 리밸런싱이 완료되면 이제 클러스터가 더 작아집니다.
결론
방금 애플리케이션의 수요에 따라 Couchbase를 확장하거나 축소하는 것이 얼마나 쉬운지 보셨을 것입니다. 관계형이든 NoSQL이든 대부분의 다른 데이터베이스 솔루션에서도 가능하지만, 다음과 같은 편의성 측면에서는 비교할 수 없습니다. 카우치베이스 오퍼를 제공합니다. 몇 번의 마우스 클릭만으로 모든 클러스터에서 노드를 추가하거나 제거할 수 있습니다.
카우치베이스 사용에 대한 자세한 내용은 다음을 참조하세요. 카우치베이스 개발자 포털.