Couchbase 설치 및 설정 가이드
Linux 커널 파라미터 조정
- Swappiness 조정
- vi /etc/sysctl.conf 파일에 아래 값을 등록 후 저장 합니다. ( 영구적 저장 )
vm.swappiness = 0 - sysctl 명령어로 현재 Dynamic 환경 설정
sysctl -w vm.swappiness = 0
- Disable Transparent Huge Pages ( THP )
- Setting 확인
cat /sys/kernel/mm/*transparent_hugepage/enabled
cat /sys/kernel/mm/*transparent_hugepage/defrag-> 위 두 파라미터의 결과값이 Never 이여야 Page 할당에 따른 성능저하를 방지할 수 있습니다. - 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
- 현재값 변경
echo "never" > /sys/kernel/mm/*transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/*transparent_hugepage/defrag
- 사용자 리소스 제한값 ulimit 수정
- 확인
ulimit -a - 수정 (최소 8192 개로 설정 필요)
ulimit -n 10240
- Swappiness 조정
다운로드
- Couchbase Download Website 에서 RPM Package Download
- http://www.couchbase.com/nosql-databases/downloads
- Community Edition Tab 에서 3.0.1 Version 을 Download
- http://www.couchbase.com/nosql-databases/downloads
- Couchbase Download Website 에서 RPM Package Download
설치
- Root 권한으로 Rpm 설치를 할 경우 RPM 에서 자동으로 Couchbase 유저를 생성하여 설치를 하게 되므로, RPM Package Download 후에 RPM 으로 설치를 수행합니다.
root> rpm -ivh couchbase-server-community-3.0.1-centos6.x86_64.rpm - RPM 으로 설치 이후에 Couchbase 가 기동 되며, Service 에 자동으로 등록되어 Couchbase 의 시작과 중지는 다음과 같이 수행할 수 있습니다.
시작 : sudo service couchbase-server start
중지 : sudo service couchbase-server stop
Server 설정
- Couchbase 는 Admin 및 Monitoring 을 위한 Web Console 을 제공하고 있으며, 최초 설정은 Web 으로 설정하는 것이 보다 편리 합니다.
- Web Browser 에서 http://<host>:8091/index.html 을 입력하여 Admin Console 에 접속 합니다.
- 위 Setup Click 하여 최초 설정을 진행합니다.
- 개발 서버로 사용할 경우 Setup 이후 Default 설정을 따라 진행하나, Game 성능 QA 또는 상용 서버로 사용될 경우 아래 상세 설정을 참고 하여 Setting 을 진행 할 것을 권장합니다.
상세 설정 ( Configure Server )
- Disk 설정
- Database Path 와 Indices Path 는 Disk I/O 성능 병목을 방지하기 위해 물리적으로 분할하여 지정 합니다.
- Database Path 와 Indices Path 는 Disk I/O 성능 병목을 방지하기 위해 물리적으로 분할하여 지정 합니다.
- Hostname 설정
- Hostname 은 실서버의 IP 를 지정합니다. ( 노드 간 Clustering 을 위해 사용되므로, IP 를 지정합니다. )
- Cluster 설정
- Cluster 설정은 최초로 설정되는 서버의 경우에는 Start a new Cluster 로 Cluster 를 구성해야 하며, 최초 구성 이후 Scale-Out 으로 사용될 Second 이후 서버는 Join a Cluster Now 로 진행합니다.
- RAM Quota 설정
- 서버당 Ram Quota 는 Couchbase 에서 사용될 Server 당 가용 메모리 Max Limit 설정이며, OS 가 사용할 Kernel 및 Cache 등의 Memory 영역 2~4GB 를 제외하고 설정하는 것을 권장합니다.
(Physical Memory 16GB 서버의 경우 3GB~4GB 여유 메모리를 제외하고 12GB ~13GB 를 Server RAM Quota 로 설정 ) - RAM Quota 는 Online 상에서 변경 가능합니다.
- 서버당 Ram Quota 는 Couchbase 에서 사용될 Server 당 가용 메모리 Max Limit 설정이며, OS 가 사용할 Kernel 및 Cache 등의 Memory 영역 2~4GB 를 제외하고 설정하는 것을 권장합니다.
- 설정 UI
- Next 를 Click 하여 다음 Setting 화면으로 넘어가면 , Test 를 위한 Sample Bucket Setting 을 할 수 있으며 선택하지 않고 계속 진행하도록 합니다.
- Disk 설정
상세 설정 ( Create Default Bucket )
- Default Bucket 설정
- Default Bucket 은 사용자가 User Bucket 을 생성하기 전에 만들어지는 Default Bucket 이며, 모든 Setting 을 완료한 이후 삭제 할 수 있으므로 Bucket Type 은 Couchbase Bucket 로 설정하고
Bucket RAM Quota 는 최소 Size 인 100M를 설정합니다. - Cache Metadata 는 Value Eviction 으로 설정합니다.
- Value Eviction 은 Couchbase 가 Memory 확보 시에 Key 와 Meta 정보는 Memory 상에 두고, Value Data 만 축출하는 옵션이며, Full Eviction 은 Key 와 Metadata, Value 모두를 축출하게 됩니다.
- Full Eviction 은 Memory Overhead 를 줄일 수 있으나 성능저하에 원인이 될 수 있으므로 충분한 Memory 를 확보하고 Value Eviction 모드를 사용하는 것을 권장 합니다.
- Default Bucket 은 사용자가 User Bucket 을 생성하기 전에 만들어지는 Default Bucket 이며, 모든 Setting 을 완료한 이후 삭제 할 수 있으므로 Bucket Type 은 Couchbase Bucket 로 설정하고
- Replicas 설정
- Replica 는 최소한 1개 Copies 를 설정합니다. Memory Quota 산정 시 Memory 가 충분할 경우 안정성 확보를 위해 Replica 를 2로 설정할 수 있습니다.
- Replica 는 최소한 1개 Copies 를 설정합니다. Memory Quota 산정 시 Memory 가 충분할 경우 안정성 확보를 위해 Replica 를 2로 설정할 수 있습니다.
- Disk I/O Optimization
- Disk I/O priority 는 Low 로 설정 합니다. Data durability 확보를 위해 High 를 선택 할 경우 성능 지연 현상이 발생하므로, Disk I/O 우선 순위는 Low 로 설정합니다.
- Disk I/O priority 는 Low 로 설정 합니다. Data durability 확보를 위해 High 를 선택 할 경우 성능 지연 현상이 발생하므로, Disk I/O 우선 순위는 Low 로 설정합니다.
- Flush
- Flush 를 활성화하면 Flush 명령어로 Bucket 의 데이터를 모두 삭제 할 수 있으나, 실제 서비스에는 비 활성화를 권장하므로, Enable 을 체크하지 않고 진행한다.
- Flush 를 활성화하면 Flush 명령어로 Bucket 의 데이터를 모두 삭제 할 수 있으나, 실제 서비스에는 비 활성화를 권장하므로, Enable 을 체크하지 않고 진행한다.
- 설정 UI
- Next 를 Click 한 이후 Notifications TAB 에서는 Update 알림을 Disable 하고 Next 를 Click 합니다.
- Default Bucket 설정
상세 설정 (Configure Server)
- 계정 설정
- 각 서버의 계정을 설정하도록 합니다. 추가 노드가 Cluster 에 Join 할 때 해당 계정 및 Password 가 사용되며, Password 는 문자 및 특수문자가 포함된 8자 이상의 문자열로 설정하도록 합니다.
- 위 설정까지 완료 되면 최초 가용 노드의 설정이 완료 됩니다.
- 각 서버의 계정을 설정하도록 합니다. 추가 노드가 Cluster 에 Join 할 때 해당 계정 및 Password 가 사용되며, Password 는 문자 및 특수문자가 포함된 8자 이상의 문자열로 설정하도록 합니다.
- 계정 설정
추가 노드 Join Cluster
- 4번 항목의 Server 설정 및 5번 항목의 상세 설정 ( Configure Server ) 을 참조 하여 서버를 동일하게 설정합니다.
- 해당 노드는 Cluster 에 Join 되야 하는 추가 노드이므로, Join Cluster 를 선택하여 최초에 설정한 Server 의 IP 및 Username/Password 를 입력하여 연결하도록 합니다.
- Join a cluster 가 완료 되고 나면, Cluster Meta 정보에 등록만 되고 바로 사용 할 수는 없습니다. 추가 노드를 Cluster 의 노드로 사용하려면 Bucket 데이터의 Rebalance 작업이 필요합니다.
- 노드를 추가 한 이후 Server Nodes -> Pending Rebalance 정보 Tab 을 확인 하면 추가 된 노드를 확인 할 수 있으며 , Rebalace 를 Click 하면 Data 및 Meta 정보를 Rebalace 후 비로소 Cluster 에 참여하게 됩니다.
추가 튜닝 설정
- Auto-Compaction
- Couchbase 서버의 스토리지 엔진은 파일을 계속 붙여나가는 방식으로 확장 됩니다. (기존 Page 부분을 Update 방식이 아닌, 추가 적으로 ADD 하고 Flag 로 구분하는 방식 )
이에 따라 파일의 오래된 정보들을 제거함으로서 스토리지 용량을 관리하게 되며, 이 기능이 Auto-Compaction 기능입니다. - Auto compaction 이 서비스 Peak Time 에 빈번하게 발생하면 전반적인 성능 저하가발생할 수 있으므로, Time Interval 을 설정하여, 서비스 부하가 가장 낮은 시간대에 수행될 수 있도록
설정하는 것을 권장 합니다. - 설정 UI
- Couchbase 서버의 스토리지 엔진은 파일을 계속 붙여나가는 방식으로 확장 됩니다. (기존 Page 부분을 Update 방식이 아닌, 추가 적으로 ADD 하고 Flag 로 구분하는 방식 )
- Auto-Failover 설정
- 특정 노드 서버 장애 시 지속적인 서비스 제공을 위해 Auto-Failover 를 설정 합니다. Timeout 시간은 120초로 설정합니다.
- 특정 노드 서버 장애 시 지속적인 서비스 제공을 위해 Auto-Failover 를 설정 합니다. Timeout 시간은 120초로 설정합니다.
- Auto-Compaction
Default Bucket 삭제
- 상용 서비스 용으로 설정 시 Memory 의 확보를 위해 최초 설정 시 Setting 되었던 Default Bucket 은 삭제 하도록 합니다.
- Bucket 정보에서 Edit 를 Click 하여 Bucket 을 삭제 할 수 있습니다.
댓글 없음:
댓글 쓰기