2016년 9월 30일 금요일

Couchbase ( 설치 및 설정 가이드 )

Couchbase 설치 및 설정 가이드


  1. Linux 커널 파라미터 조정 

    1. Swappiness 조정

      1. vi /etc/sysctl.conf  파일에  아래 값을 등록 후 저장 합니다. ( 영구적 저장 )
        vm.swappiness = 0
      2. sysctl 명령어로 현재 Dynamic 환경 설정 
        sysctl -w vm.swappiness = 0


    2.  Disable  Transparent Huge Pages ( THP )
      1. Setting 확인
        cat /sys/kernel/mm/*transparent_hugepage/enabled
        cat /sys/kernel/mm/*transparent_hugepage/defrag
        -> 위 두 파라미터의 결과값이 Never 이여야 Page 할당에 따른 성능저하를 방지할 수 있습니다.
      2. Setting 변경 
        vi /etc/rc.local 에 아래 값을 등록 후 저장
        for i in /sys/kernel/mm/*transparent_hugepage/enabled; do
             echo never > $i; 
        done 
         
        for i in /sys/kernel/mm/*transparent_hugepage/defrag; do
             echo never > $i; 
        done 
      3. 현재값 변경 
        echo "never" > /sys/kernel/mm/*transparent_hugepage/enabled

        echo "never" > 
        /sys/kernel/mm/*transparent_hugepage/defrag

    3. 사용자 리소스 제한값 ulimit 수정  
      1. 확인 
        ulimit -a
      2. 수정 (최소 8192 개로 설정 필요) 
        ulimit -n 10240
  2. 다운로드 

    1. Couchbase Download Website 에서 RPM Package Download 
      1. http://www.couchbase.com/nosql-databases/downloads External Link
      2. Community Edition Tab 에서 3.0.1 Version 을 Download
  3. 설치 

    1. Root 권한으로 Rpm 설치를 할 경우 RPM 에서 자동으로 Couchbase 유저를 생성하여 설치를 하게 되므로, RPM Package Download 후에 RPM 으로 설치를 수행합니다.  
      root> rpm -ivh couchbase-server-community-3.0.1-centos6.x86_64.rpm
    2.  RPM 으로 설치 이후에 Couchbase 가 기동 되며, Service 에 자동으로 등록되어 Couchbase 의 시작과 중지는 다음과 같이 수행할 수 있습니다. 
      시작 : sudo service couchbase-server start
      중지 :  sudo service couchbase-server stop
  4. Server 설정

    1. Couchbase 는 Admin 및 Monitoring 을 위한 Web Console 을 제공하고 있으며,  최초 설정은 Web 으로 설정하는 것이 보다 편리 합니다.  
    2. Web Browser 에서 http://<host>:8091/index.html 을 입력하여 Admin Console 에 접속 합니다.
    3. 위 Setup Click 하여 최초 설정을 진행합니다. 
    4. 개발 서버로 사용할 경우 Setup 이후 Default 설정을 따라 진행하나, Game 성능 QA 또는 상용 서버로 사용될 경우 아래 상세 설정을 참고 하여 Setting 을 진행 할 것을 권장합니다.  

  5. 상세 설정 ( Configure Server )

    1. Disk 설정

      1. Database Path 와 Indices Path 는 Disk I/O 성능 병목을 방지하기 위해 물리적으로 분할하여 지정 합니다.
    2. Hostname 설정

      1. Hostname 은 실서버의 IP 를 지정합니다. ( 노드 간 Clustering 을 위해 사용되므로, IP 를 지정합니다. ) 
    3. Cluster 설정

      1. Cluster 설정은 최초로 설정되는 서버의 경우에는 Start a new Cluster 로 Cluster 를 구성해야 하며, 최초 구성 이후 Scale-Out 으로 사용될 Second 이후 서버는 Join a Cluster Now 로 진행합니다.  
    4. RAM Quota 설정

      1. 서버당 Ram Quota 는 Couchbase 에서 사용될 Server 당 가용 메모리 Max Limit 설정이며, OS 가 사용할 Kernel 및 Cache 등의 Memory 영역 2~4GB 를 제외하고 설정하는 것을 권장합니다.
        (Physical Memory 16GB 서버의 경우 3GB~4GB 여유 메모리를 제외하고 12GB ~13GB 를 Server RAM Quota 로 설정 ) 
      2. RAM Quota 는 Online 상에서 변경 가능합니다. 
    5. 설정 UI


    6. Next 를 Click 하여 다음 Setting 화면으로 넘어가면 , Test 를 위한 Sample Bucket Setting 을 할 수 있으며 선택하지 않고 계속 진행하도록 합니다.

  6. 상세 설정 ( Create Default Bucket )

    1. Default Bucket 설정

      1. Default Bucket 은 사용자가 User Bucket 을 생성하기 전에 만들어지는 Default Bucket 이며, 모든 Setting 을 완료한 이후 삭제 할 수 있으므로 Bucket Type 은 Couchbase Bucket 로 설정하고
        Bucket RAM Quota 는 최소 Size 인 100M를 설정합니다.
      2. Cache Metadata 는 Value Eviction 으로 설정합니다.

        1. Value Eviction 은 Couchbase 가 Memory 확보 시에 Key 와 Meta 정보는 Memory 상에 두고,  Value Data 만 축출하는 옵션이며, Full Eviction 은 Key 와 Metadata, Value 모두를 축출하게 됩니다. 
        2. Full Eviction 은 Memory Overhead 를 줄일 수 있으나 성능저하에 원인이 될 수 있으므로 충분한 Memory 를 확보하고 Value Eviction 모드를 사용하는 것을 권장 합니다. 
    2. Replicas 설정 
      1. Replica 는 최소한 1개 Copies 를 설정합니다.  Memory Quota 산정 시 Memory 가 충분할 경우 안정성 확보를 위해 Replica 를 2로 설정할 수 있습니다.
    3. Disk I/O Optimization 
      1. Disk I/O priority 는 Low 로 설정 합니다. Data durability 확보를 위해 High 를 선택 할 경우 성능 지연 현상이 발생하므로, Disk I/O 우선 순위는 Low 로 설정합니다.
    4. Flush 
      1. Flush 를 활성화하면 Flush 명령어로 Bucket 의 데이터를 모두 삭제 할 수 있으나, 실제 서비스에는 비 활성화를 권장하므로, Enable 을 체크하지 않고 진행한다.
    5. 설정 UI


    6. Next 를 Click 한 이후 Notifications TAB 에서는 Update 알림을 Disable 하고 Next 를 Click 합니다.
  7. 상세 설정 (Configure Server)

    1.  계정 설정
      1. 각 서버의 계정을 설정하도록 합니다. 추가 노드가 Cluster 에 Join 할 때 해당 계정 및 Password 가 사용되며, Password 는 문자 및 특수문자가 포함된 8자 이상의 문자열로 설정하도록 합니다.



      2. 위 설정까지 완료 되면 최초 가용 노드의 설정이 완료 됩니다.
  8. 추가 노드 Join Cluster

    1. 4번 항목의 Server 설정 및 5번 항목의 상세 설정 ( Configure Server )  을 참조 하여 서버를 동일하게 설정합니다. 
    2. 해당 노드는 Cluster 에 Join 되야 하는 추가 노드이므로, Join Cluster 를 선택하여 최초에 설정한 Server 의 IP 및 Username/Password 를 입력하여 연결하도록 합니다.



    3. Join a cluster 가 완료 되고 나면, Cluster Meta 정보에 등록만 되고 바로 사용 할 수는 없습니다.  추가 노드를 Cluster 의 노드로 사용하려면 Bucket 데이터의 Rebalance 작업이 필요합니다. 
    4. 노드를 추가 한 이후 Server Nodes -> Pending Rebalance 정보 Tab 을 확인 하면 추가 된 노드를 확인 할 수 있으며 , Rebalace 를 Click 하면 Data 및 Meta 정보를 Rebalace 후 비로소 Cluster 에 참여하게 됩니다.




  9. 추가 튜닝 설정 

    1. Auto-Compaction 
      1. Couchbase 서버의 스토리지 엔진은 파일을 계속 붙여나가는 방식으로 확장 됩니다. (기존 Page 부분을 Update 방식이 아닌, 추가 적으로 ADD 하고 Flag 로 구분하는 방식  )
        이에 따라 파일의 오래된 정보들을 제거함으로서 스토리지 용량을 관리하게 되며, 이 기능이 Auto-Compaction 기능입니다.  
      2. Auto compaction 이 서비스 Peak Time 에 빈번하게 발생하면 전반적인 성능 저하가발생할 수 있으므로, Time Interval 을 설정하여, 서비스 부하가 가장 낮은 시간대에 수행될 수 있도록
        설정하는 것을 권장 합니다.
      3. 설정 UI
    2. Auto-Failover 설정 
      1. 특정 노드 서버 장애 시 지속적인 서비스 제공을 위해 Auto-Failover 를 설정 합니다.  Timeout 시간은 120초로 설정합니다.




  10. Default Bucket 삭제

    1. 상용 서비스 용으로 설정 시 Memory 의 확보를 위해 최초 설정 시 Setting 되었던 Default Bucket 은 삭제 하도록 합니다.  
    2. Bucket 정보에서 Edit 를 Click 하여 Bucket 을 삭제 할 수 있습니다.





댓글 없음:

댓글 쓰기