Riak 2.0.0 インストールから起動まで


Debianにインストールした時のメモ。
公式のドキュメントが[Installing on Debian and Ubuntu](http://docs.basho.com/riak/latest/ops/building/installing/debian-ubuntu/)にあります。

以下は単なる覚え書き。

## インストール

```libpam0g-dev``` と ```libssl0.9.8``` をaptでインストール。

```
$ sudo apt-get install libpam0g-dev
$ sudo apt-get install libssl0.9.8
```



BashoのホームページからRiak 2.0.0をダウンロードします。
[Download Riak 2.0.0](http://docs.basho.com/riak/latest/downloads/)

### 各ディストリビューション向けパッケージからインストール

各ディストリビューション向けのパッケージがありますので、ダウンロードしてインストール。(この場合はErlang/OTPのインストールは不要)

### ソースからインストール

ソースからビルド、インストールする場合はダウンロードしたファイルを解凍して
(この場合は[Erlang/OTP R16](http://www.erlang.org/download_release/23)のインストールが必要)

```
$ make
$ make rel
```

とする。

```rel``` ディレクトリ内に```riak```というディレクトリができているので、それを適当な場所へまるごとコピーする。
なお、設定ファイル類は各ディストリビューション向けパッケージから入れた場合は```/etc/riak```以下に、ソースから入れた場合は先ほどコピーしたディレクトリ内の```etc/```以下にある。

## 設定

### SSL証明書
Riakの管理画面を使用する場合はSSL証明書等が必要なので作っておく。

```
$ openssl genrsa -out node1.key 2048 
$ openssl req -new -key node1.key -out node1.csr
$ openssl x509 -req -days 365 -in node1.csr -signkey node1.key -out node1.crt
$ openssl x509 -in node1.crt -out node1.pem -outform PEM
```

できたファイルを```/etc/riak```または```{riak_root}/etc```以下にコピーして、パーミッションを変更しておく。

```
$ cp node1.key /etc/riak
$ cp node1.pem /etc/riak
$ chown riak:riak /etc/riak/node1.pem /etc/riak/node1.key
$ chmod 600 /etc/riak/node1.pem /etc/riak/node1.key
```

以下設定ファイル(```riak.conf```)の編集

### 基本設定

* 必要に応じてノード名を変更。

    ```text:riak.conf
    nodename = riak@127.0.0.1
    ```

### 通信関連の設定

* SSL関係の設定を行う。先ほどのファイルへのパスを指定する。

    ```text:riak.conf
    ssl.certfile = $(platform_etc_dir)/node1.pem
    ssl.keyfile = $(platform_etc_dir)/node1.key
    ssl.cacertfile = $(platform_etc_dir)/node1.pem
    ```

* HTTPのポート番号をHTTPSと被らないように変える。またはコメントアウトしてHTTPを無効にする。
* どのインターフェースでも受け付けるように```0.0.0.0```を指定。

    ```text:riak.conf
    # listener.http.internal = 127.0.0.1:8098
    listener.http.internal = 0.0.0.0:8097 # 8098 -> 8097
    ```

* プロトコルバッファのインターフェースも```0.0.0.0```を指定。

    ```text:riak.conf
    #listener.protobuf.internal = 127.0.0.1:8087
    listener.protobuf.internal = 0.0.0.0:8087
    ```

* HTTPSのインターフェースはデフォルトでコメントアウトされてるので、有効にして同様に変更する。

    ```text:riak.conf
    listener.https.internal = 0.0.0.0:8098
    ```

### バックエンドの設定

* ストレージの指定。私の環境ではmultiバックエンドを使用していたので```multi```を指定。
* デフォルトのバックエンドにleveldbを指定

    ```text:riak.conf
    storage_backend = multi
    multi_backend.default.storage_backend = leveldb
    ```

* 各ストレージの設定

    ```text:riak.conf
        multi_backend.default.leveldb.data_root = $(platform_data_dir)/elevel_db
        multi_backend.elevel_db_tmp_multi.leveldb.data_root = $(platform_data_dir)/data/elevel_db
 
        multi_backend.default.bitcask.data_root = $(platform_data_dir)/bitcask
        multi_backend.bitcask_tmp_multi.bitcask.data_root = $(platform_data_dir)/bitcask_tmp
        multi_backend.bitcask_tmp_multi.bitcask.expiry.grace_time = 1h
    ```

### 管理画面の設定

* 管理画面を有効に。かつ認証を有効に

    ```text:riak.conf
     riak_control = on
     riak_control.auth.mode = userlist
     riak_control.auth.user.admin.password = pass
    ```

* 検索を有効に

    ```text:riak.conf
    search = on
    ```

### 起動

以上、保存してriakを起動する.

```
$ riak start
```