ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쿼리 분리
    검색/Solr 2020. 3. 16. 14:03
    반응형

    상황 : deal Collection 을 위해 만들어진 색인 쿼리가 점점 무거워지고 있다.

    현재 2000만건 색인 중이지만 추후에, 고객사의 데이터의 비중이 1000만건 가량 더 커질 예정이다.


    문제 : 특정 상점만 분리해서 색인을 진행하고 싶다. 그러나 collection은 동일하게 deal 이어야 한다.

     

    대상 서버 정보

     

    수정 설정 파일 (solr.config) : 

    (asis) solrconfig.xml

    <requestHandler name="/dataimport" class="solr.DataImportHandler">

        <lst name="defaults">

          <str name="config">data-config.xml</str>

        </lst>

      </requestHandler>

    (tobe) solrconfig.xml

    <requestHandler name="/dataimport2"

            class="org.apache.solr.handler.dataimport.DataImportHandler">

           <lst name="defaults">

             <str name="config">data-config1.xml</str>

           </lst>

         </requestHandler>

     

         <requestHandler name="/dataimport"

            class="org.apache.solr.handler.dataimport.DataImportHandler">

           <lst name="defaults">

             <str name="config">data-config2.xml</str>

           </lst>

         </requestHandler>

    작업 순서 

    1. 솔라는 중지되어있고 주키퍼가 실행되어있는 상태에서 작업 시작
    2. 위 설정 배포 (젠킨스)
    3. 솔라 기동
    4. 컬렉션 생성 -  다음 명령어를 이용해야한다.

      solr1:8988/solr/admin/collections?
      action=CREATE
      &name=wemake_list
      &numShards=4
      &replicationFactor=2
      &createNodeSet=solr1:8988_solr,solr2:8988_solr,solr3:8988_solr,solr4:8988_solr,solr5:8988_solr,solr6:8988_solr,solr7:8988_solr,solr8:8988_solr
      &dataDir=/usr/local/solrcloud_wemap
      &collection=wemake_list
      &config=solrconfig.xml
      &schema=schema.xml

      이거 한 번 전송하면 클라우드 구성이 완료 된다.

     

    • 서버별 shard-replica 를 지정하는 것을 원하는 대로 선택 할 수 없고 주키퍼에 의해 임의로 나눠진다.

     -  샤드 내에서 리더 순서는 바꿀수있다. 위 그림에서 각 샤드의 리더는 solr1, solr2, solr6, solr8이다. 

          이 상태에서 스케줄을 solr 4에서 수행하고 싶다면 solr4를 리더로 만들어야 dataimport가 가능하므로 solr1을 shutdown 했다가 다시 startup 하면 된다.

          그러면, zookeeper에 의해서 solr4가 자동으로 leader로 승격된다.

     

     

    solr를 재 실행 하고 나면 admin에 다음과 같이 dataimport 창이 하나 더 생성됨

     

     

     첫번째 dataimport 에는 clean, commit 옵션 설정하고

    두번째 dataimport2에는 commit 옵션만 설정

    색인 후 각 db의 데이터가 모두 잘 검색이 된다.

     

    색인 수행 테스트 :  

    1. dataimport1 과 dataimport2를 약간의 텀을 두고 색인을 수행

        색인에 사용되는 쓰레드 수가 증가해서 deal_list 색인 속도가 빨라졌다.
        segments 의 size가 들쭉날쭉하게 생성된다.

    2. dataimport1 수행 완료 후에 dataimport2를 수행

        dataimport를 나눈 의미가 없다.

       segments 의 size가 고르게 생성된다.

     

    ====

    색인 스케줄 구성

    master 색인 시간 피해서 스케줄 생성

    dataimport1 : full-import + clean +commit

    dataimport2 : full-import + commit

     

    검색관리자에 스케줄 추가. 
    dataimport1 : 09,13, 15 시 40분 동작

    dataimport2 : 09,13, 15시 45분 동작

     

     

    반응형

    '검색 > Solr' 카테고리의 다른 글

    multiple dataSource for one Collection  (0) 2019.12.11
Designed by Tistory.