기본 콘텐츠로 건너뛰기

라벨이 Cluster인 게시물 표시

[SolrCloud] ZooKeeper와 SolrCloud를 Tomcat7 에 설정해 보기

[ 참고 및 주의 사항 ] 여기에 정리된 내용은 원문 을 기준으로 여러 가지 테스트와 문제점의 검토 및 해결책을 찾으면서 나름대로 정리한 내용으로 오역과 잘 못 이해하고 정리한 부분이 있을 수 있습니다. 또한 원문의 Solr 버전이 지금 테스트를 진행하고 있는 4.10.2 버전과 다르기 때문에 내용을 잘 확인하면서 진행 해야 합니다. SolrCloud Collection 디자인 SolrCloud 를 운영하기 위해서는 Cluster를 디자인을 하는 것이 가장 중요한 부분이다. 개념적으로는 SolrCloud Cluster 내에서 Collection 과 Shard 는 논리적인 요소로 여러 개의 물리적인 Core 들의 집합을 형성하기 위한 것 이다. 샘플 테스트를 위해서 다음과 같이 Cluster를 디자인 한 것으로 가정한다. Cluster에는 단일 Collection을 관리하고 이름을 test_collection 이라고 한다. ZooKeeper Ensemble 은 3개의 복제된 서버들을 사용하는 것으로 한다. Replication Factor를 3으로 지정하여 SolrCloud 에 3개의 Node를 구성한다. SolrCloud 에 3개의 Shard 를 구성한다. 3개 노드의 3개 Shard에 복제 본들을 수동으로 배포한다. 필요 항목들 이 작업을 테스트하기 위해서는 다음과 같은 구성이 필요하다. Apache Tomcat 7.x Apache ZooKeeper 3.4.6 Apache Solr 4.10.2 Notes 위의 디자인된 SolrCloud 는 단일 장비에서 테스트를 진행한다. 실제로는 여러 장비에 분산하여 운영되는 것이 정상이다. 샘플 디렉터리 구성 단일 장비에서 테스트를 진행할 것이기 때문에 “D:\SolrCloud” 를 기본 경로로 사용한다. Node 구성을 위한 각 Solr Home 폴더 D: \SolrCloud \solr \home 1 D: \SolrCloud \solr \home 2

[SolrCloud] ZooKeeper Cluster 구성해 보기

[ 참고 및 주의 사항 ] 여기에 정리된 내용은 원문 을 기준으로 여러 가지 테스트와 문제점의 검토 및 해결책을 찾으면서 나름대로 정리한 내용으로 오역과 잘 못 이해하고 정리한 부분이 있을 수 있습니다. ZooKeeper 란? ZooKeeper는 분산 어플리케이션들에 대한 분산 조정 서비스를 제공하는 프로그램으로 표준 파일 시스템과 유사하게 구성되어 공유된 계층적 공간을 통해서 분산된 프로세스들이 서로 조정할 수 있는 기능을 관리한다. 공유되는 공간은 ZooKeepr의 용어로 zNodes라고 불리는 데이터 등록의 집합으로 구성 되어 있으며 이 구조는 폴더들과 파일들의 구성과 유사하다. 파일 시스템과는 달리 ZooKeeper는 자바로 실행되며 자바와 C에 대한 바인딩을 가지고 있다. ZooKeeper Cluster 기본 구성 ZooKeeper Service 는 “Ensemble” 이라고 불리는 Host 들의 집합들을 통해서 복제되며, 동일한 어플리케이션을 구성하는 서버들의 복제된 그룹을 “Quorum” 이라고 부른다. Quorum 내의 모든 서버는 동일한 설정 파일들의 복제본을 가지고 있다. ZooKepper의 서버 구성의 수는 절반이 실패해도 기능을 수행할 수 있도록 항상 홀수로 구성하는 것을 권장 한다. 예를 들어 2대의 서버가 장애 상태가 되어도 나머지 서버들이 동작할 수 있도록 5대의 서버로 구성하는 것이다. 이 중에 한 대는 Leader가 된다. 최소한의 구성은 3 대가 된다. ZooKeeper 구성할 때 검토할 부분 ZooKeeper를 구성하기 위해서는 최소한 아래에 언급한 내용들에 대한 검토가 선행이 되어야 한다. 그리고 ZooKeeper Cluster의 구성은 아래의 그림과 같이 기본적으로 Leader를 포함하는 홀 수의 서버 구성이 되어야 한다. 여기서는 샘플을 테스트하는 것을 기준으로 검토를 진행하도록 한다. ZooKeeper 서버 구성의 수는 어떻게 할 것인가? - 위에서 언급한 것과 같이 홀수를 기준으로 구성

[ Solr ] Collection 과 Core 간단 비교

Solr 를 사용하면서 항상 의미가 혼동되는 것 들이 존재하는데 그 중에서 Collection 과 Core 에 대해서 정리를 해 보도록 한다. (현재 이해한 것을 기준으로 정리한 것이라서 향후에 내용이 변경될 수 있다) Collection vs. Core 이 두 가지를 혼동되는 이유는 Solr 구성을 단일 노드로 할지 분산 노드로 할지에 따라서 구성이 다르고 그 구성에 따라서 의미가 달라지기 때문이다. 쉽게 생각해 보면 Collection 이라는 것은 물리적이 아닌 논리적인 인덱스 단위고, Core 는 물리적인 인덱스 단위라고 생각하면 된다. 이제 환경에 따라서 어떻게 다른 의미를 가지는지 정리해 보도록 하자. 분산 환경 분산 환경이라면 컬랙션을 운영하기 위한 클러스터를 구성하고 이 클러스터에 여러 개의 서버노드 (Solr 가 서비스 되는 ) Collection - 클러스터를 구성하고 있는 노드(물리적 및 논리적 서버들) 들에 걸쳐 분산되어 운영되는 논리적인 인덱스를 의미한다. Core - 분산 환경이 되면 컬랙션을 파티션으로 나누게 되며 각 파티션 별로 인덱스 데이터가 나뉘고 물리적으로 관리된다. 이 과정을 Sharding이라고 표현하는데 이렇게 분리된 파티션을 물리적으로 관리하고 서비스하는 단위가 Core 가 된다. 또한 Shard에 참여하는 Solr Instance 들이 여러 개일 경우는 복제본 (Replica)을 관리하는 단위도 Core 가 된다. 비 분산 환경 비 분산 환경이라는 것은 단독 서버로 Solr 가 운영되는 것을 기준으로 한다. 물론 하나의 서버에 여러 개의 노드 (여러 개의 Solr 구동 JVM 구성) 를 구성해서 분산 환경을 만들 수도 있지만 그 부분은 대상이 아니다. Collection - 여러 개의 컬랙션을 Solr Instance에 생성할 수 있고, 논리적인 인덱스와 물리적인 인덱스(Core) 가 1:1 로 매치 된다. Core - 물리적인 인덱스트를 서비스하는 단위로 컬랙션과 1:1 로

[ Solr ] 용어들 정리

Solr 를 사용하기 위해서는 몇 가지 용어들을 확인하고 이해해야 하기 때문에 간단하게 나름대로 정리하도록 한다. (현재 이해를 근거로 정리한 것이므로 향후 변경 또는 추가/삭제가 발생할 수 있다) 이 정리는 Solr Wiki의 Solr Teminology 를 기준으로 한 것이다. 발 번역을 한 것 + 무작정 이해한 것이 덧붙여져 엉뚱한 내용도 많이 포함되어 있을 수 있으므로 원문을 검토해서 이해해야 한다. ㅠㅠ SolrCloud SolrCloud 를 구성한다면 아래의 용어들에 혼동을 느끼기 쉽기 때문에 별도로 구분해서 정리해 놓는다. SolrCloud - Solr 에서 제공하는 분산 기능을 의미하고 고 가용성과 장애 복구 및 분산 인덱싱과 검색을 제공하는 아키텍처라고 이해하면 된다. Cluster - 클러스터는 Solr를 구성하는 모든 노드들의 집합을 의미한다. 클러스터는 하나의 Solr 인덱스를 서비스하기 위한 구성을 가진다. 즉, 단일 schema.xml 과 solrconfig.xml 을 공유한다. Node - 노드는 클러스터에 포함되는 각 논리적 서버(Solr 가 서비스되는 JVM 인스턴스 단위) 를 의미한다. 물리적인 서버에 하나의 노드가 존재할 수도 있고, 여러 개의 노드가 존재할 수도 있다. Partition - Solr 에서 관리하는 문서들을 특정한 단위 (일반적으로 Hash 기준으로 묶어서 처리) 로 분리한 하위 집합을 의미한다. 유사한 경우는 데이터베이스에서 하나의 대량 데이터를 가진 테이블을 여러 개의 세그먼트로 파티셔닝 하는 것과 같다. Collection - 컬랙션은 SolrCloud 클러스터에서 관리되는 논리적인 인덱스를 의미한다. 이 컬랙션은 하나 또는 그 이상의 Shard로 구성되고 설정 세트(Config Set) 와 연관되어 있다. 이 때 하나 이상의 Shard로 구성된 것을 분산 인덱스라고 한다. 보통은 이 컬랙션의 이름을 참조해서 분산 검색 에 필요한 각 Shard에 대한 관리용 파라미터로 사용