CouchbaseServerを触ってみよう -Couchbaseを使うまでの準備-

CouchbaseServerを触ってみよう
3章 Couchbaseを使うまでの準備
======================================

この記事は、SoftwareDesign 2016年12月号(以下、SD誌)のKVS特集中のCouchbaseServer紹介記事に関する補足記事となります。
CouchbaseServerの簡単な紹介から、実際に手を動かして利用してみるところまでを対象としています。

Couchbaseサーバに関する公式のドキュメントは大量にあるのですが、バージョンが古いものも大量に残っていたり、リンク切れなどがあるため、まずざっくり触ってみたいというときに参考にして頂きたいと思います。
この記事はCouchbase4.5を元に記載しています。

[Indexはこちら](http://qiita.com/taruhachi/items/0f96a2f7da81383866df)

# Couchbaseのインストール
AWS上にCouchbaseを構築する場合、Marketplaceにあるイメージから作成することも出来ますが、ここでは公式サイトからパッケージをダウンロードしてインストールする方法を記載します。

インスタンスの推奨スペックはかなり高いのですが、開発環境などでは小さなインスタンスで問題ありません。
ここではt2.small(2016/09/16現在-0.04$/時 -100円/日)のインスタンスを利用することとします。
管理コンソールを利用するために、今回は起動時にGlobalIPを利用可能な状態としておきます。

日本語版のページは古いですので、
http://www.couchbase.com/nosql-databases/downloads
こちらからShow all platformsを押下して最新版をダウンロードします。

ここではcentos6 64bit版のインストールを行ないます。(ダウンロード先のURLが判明すればwgetでも可能です。)

    wget http://packages.couchbase.com/releases/4.5.0/couchbase-server-enterprise-4.5.0-centos6.x86_64.rpm
    sudo rpm -Uvh couchbase-server-enterprise-4.5.0-centos6.x86_64.rpm
    
コマンドとしてはこれだけです。

      Preparing...                          ################################# [100%]
      Warning: Transparent hugepages looks to be active and should not be.
      Please look at http://bit.ly/1ZAcLjD as for how to PERMANENTLY alter this setting.
      Warning: Swappiness is not set to 0.
      Please look at http://bit.ly/1k2CtNn as for how to PERMANENTLY alter this setting.
      Minimum RAM required  : 4 GB
      System RAM configured : 1.96 GB

      Minimum number of processors required : 4 cores
      Number of processors on the system    : 1 cores

      Updating / installing...
         1:couchbase-server-4.5.0-2601      ################################# [100%]
      Starting couchbase-server
      [  OK  ]

      You have successfully installed Couchbase .
      Please browse to http://*******:8091/ to configure your server.
      Please refer to http://couchbase.com for additional resources.

      Please note that you have to update your firewall configuration to
      allow connections to the following ports:
      4369, 8091 to 8094, 9100 to 9105, 9998, 9999, 11209 to 11211,
      11214, 11215, 18091 to 18093, and from 21100 to 21299.

      By using this software you agree to the End User License Agreement.
      See /opt/couchbase/LICENSE.txt.

インストールはほぼ数秒で終わりますが、この時点でcouchbaseがサービスとして起動します。
この時、Couchbaseがが利用するポートも表示されますので、利用するサーバ間では上記のポートを開けて下さい。(今回はlocalhostで試験しますのでそのまま進むこととします。)

## クラスタの初期化
最初に管理コンソールにアクセスしてクラスタを初期化する必要があります。
既に初期化されたクラスタにノードを追加する場合もこちらから行うことが出来ます。

Couchbaseをインストールしたサーバの8091ポートで管理コンソールが起動していますのでアクセスし、Setupを押下して次へ進んでください。
初回はまだUser/Passwordを設定していませんのでそのまま進むことが出来ます。
http://[Global IP]:8091/

![cms_02.png](https://qiita-image-store.s3.amazonaws.com/0/38018/db1a26f9-cd7d-ea79-26b9-dec505d86c44.png)


サービスはデフォルトでDataサービス、Indexサービス、Queryサービスを利用可能となっていますのでそのまま進みます。
また、このノードではデフォルト状態だとRAMが不足するため、DataRAM Quotaを1024MB,Index RAM Quotaを256MBに変更して次に進むことにします。

Couchbaseでは初回にサンプルバケットを作成します。サンプルバケットに投入するデータを選べますが、このバケットは最初に削除する予定のため、そのままNextを押下します。

メールアドレスなどを聞かれますが入力しなくても構いません。

途中でパスワードを聞かれるので、適当に設定して下さい。このパスワードは次回以降に管理コンソールを使うときや、クラスタに他のノードを追加するとき、XDCR機能を利用するときなどに利用されますので忘れないようにメモしておいて下さい。

## 管理コンソールの利用開始
ここまで来ると、Couchbase管理コンソールのフル機能を利用する事ができます。
管理画面では、Cluster内の各ノードごとの詳細なリソース使用状況や、バケット毎のリソース使用状況、オペレーションなどを一元管理する事ができます。
今回は触れませんが、Clusterへのノード追加や削除、View追加やXCDR設定もこの管理コンソールから行うことが出来ます。

モニタリング可能な項目は膨大ですので個別の説明は避けますが、各種のリソースがリアルタイムで更新されていく様は圧巻ですので是非一度確認してください。

![cms_08.png](https://qiita-image-store.s3.amazonaws.com/0/38018/36bea301-528c-be1d-3cdf-c8513cac3091.png)


## デフォルトバケットの削除
初期化時に作成されたデフォルトバケット[default]は特殊なバケットであり、そのまま利用する事が難しいですので、削除します。

![cms_04.png](https://qiita-image-store.s3.amazonaws.com/0/38018/47a16030-bde1-8cc0-4560-cefa525a6ecb.png)


以下の手順でバケットの編集ページに移動します。
1. Data Bucketsタブを押下
2. バケット名の横の?を押下してバケットの詳細情報を展開
3. Deleteを押下

## 新規バケットの追加
以下の手順でバケットを新規追加します。
1. Data Bucketsタブを押下
2. Crate New Data Bucketを押下
3. Bucket Nameにsampleと入力
4. Per Node Ram Quotaに100と入力
5. Access Control->Enter passwordにパスワード入力(先ほど設定したものとは異なる新しいパスワードを設定して下さい。)
6. Replicas->Enabeのチェックを外す(ノードが1つしか無いため)
7. Createボタンを押下

![cms_06.png](https://qiita-image-store.s3.amazonaws.com/0/38018/8ac18a63-3b1f-16df-e472-e72685b00fb8.png)


これで、Couchbaseの起動とバケットの準備が整いました。

## [コラム] 商用環境での利用について
今回は省略しましたが、実際に負荷がかかる環境で利用したい場合にはパフォーマンスチューニングのため以下の2つのパラメータを変更しておく必要があります。
http://blog.couchbase.com/often-overlooked-linux-os-tweaks

### スワップ利用を無効化する
    # スワップ無効化
    $ sudo echo 0 > /proc/sys/vm/swappiness
    $ sudo echo "vm.swappiness = 0" >> /etc/sysctl.conf

### Transparent huge pageを無効化する
    $ sudo vi /etc/init.d/disable-thp
    
    #!/bin/bash
    ### BEGIN INIT INFO
    # Provides: disable-thp
    # Required-Start: $local_fs
    # Required-Stop:
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Disable THP
    # Description: disables Transparent Huge Pages (THP) on boot
    ### END INIT INFO
    
    case $1 in
      start)
        if [ -d /sys/kernel/mm/transparent_hugepage ]; then
           echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
           echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
        elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
          echo 'never' > /sys/kernel/mm/redhat_transparent_hugepage/enabled
          echo 'never' > /sys/kernel/mm/redhat_transparent_hugepage/defrag
       else
          return 0
       fi
       ;;
    esac

    $ sudo chmod 755 /etc/init.d/disable-thp
    $ sudo service disable-thp start
    $ sudo chkconfig disable-thp on