1. yuukigoodman

    Posted

    yuukigoodman
Changes in title
+Riak2をインストールしてみる
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,120 @@
+Basho社が開発するRiak。
+現在はバージョン2の開発が進められており、近いうちに正式版がリリースされるだろう。
+今回は開発バージョンである2.0.0pre7をインストールする。
+
+## erlangのインストール
+Riakはelrangで作られているので、まずはビルドのためerlangをインストールする。
+Riakをビルドするため、erlnagのバージョンはR15B03-1を用いる。
+http://erlang-users.jp/ にErlangのソースや情報が集まっているので参考にする。
+
+```shell
+[vagrant@localhost ~]$ wget http://download.basho.co.jp.cs-ap-e1.ycloud.jp/otp/download/otp_src_R15B03-1.tar.gz
+[vagrant@localhost ~]$ tar zxvf otp_src_R15B03-1.tar.gz
+[vagrant@localhost ~]$ cd otp_src_R15B03-1
+[vagrant@localhost otp_src_R15B03]$ ./configure --enable-m64-build --disable-hipe --enable-dtrace
+[vagrant@localhost otp_src_R15B03]$ make
+[vagrant@localhost otp_src_R15B03]$ sudo make install
+```
+configureした時に以下のように不足ライブラリが警告される。
+
+```shell
+*********************************************************************
+********************** APPLICATIONS DISABLED **********************
+*********************************************************************
+
+jinterface : No Java compiler found
+odbc : ODBC library - link check failed
+
+*********************************************************************
+*********************************************************************
+********************** APPLICATIONS INFORMATION *******************
+*********************************************************************
+
+wx : wxWidgets not found, wx will NOT be usable
+
+*********************************************************************
+*********************************************************************
+********************** DOCUMENTATION INFORMATION ******************
+*********************************************************************
+
+documentation :
+ xsltproc is missing.
+ fop is missing.
+ The documentation can not be built.
+
+*********************************************************************
+```
+pam-develはriak本体に必須なので同じくインストール。
+javaはRiak2.0の新機能Yokozunaに必須。
+
+```shell
+[vagrant@localhost ~]$ sudo yum install unixODBC-devel.x86_64 java-1.7.0-openjdk-devel.x86_64 pam-devel.x86_64
+`````
+## riakのビルド
+最新のpreタグが付いたコミットを持ってきて、rebarというBasho製ビルドツールでコンパイルする
+
+```shell
+[vagrant@localhost ~]$ git clone https://github.com/basho/riak.git
+[vagrant@localhost ~]$ cd riak
+[vagrant@localhost riak]$ git checkout riak-2.0.0pre7
+[vagrant@localhost riak]$ make rel
+```
+## riakの基本操作(コマンド編)
+起動前に、ファイルディスクリプタ上限値を4096とか大きな値にしておく。
+
+```shell
+[vagrant@localhost riak]$ ulimit -n 4096
+[vagrant@localhost riak]$ rel/riak/bin/riak start
+[vagrant@localhost riak]$ rel/riak/bin/riak ping
+pong
+[vagrant@localhost riak]$ rel/riak/bin/riak stop
+ok
+```
+
+## riakの基本操作(rest編)
+RiakにはwebmachineというHTTPサーバが入っているので、RESTでアクセスできる。
+さっきの死活監視はこう。
+
+```shell
+[vagrant@localhost riak]$ curl -v http://127.0.0.1:8098/ping
+* About to connect() to 127.0.0.1 port 8098 (#0)
+* Trying 127.0.0.1... connected
+* Connected to 127.0.0.1 (127.0.0.1) port 8098 (#0)
+> GET /ping HTTP/1.1
+> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
+> Host: 127.0.0.1:8098
+> Accept: */*
+>
+< HTTP/1.1 200 OK
+< Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained)
+< Date: Sun, 01 Dec 2013 11:06:31 GMT
+< Content-Type: text/html
+< Content-Length: 2
+<
+* Connection #0 to host 127.0.0.1 left intact
+* Closing connection #0
+OK
+```
+
+## riakの基本操作(クライアントライブラリ編)
+Erlangシェルに入り、Riakのクライアントライブラリからアクセスする。
+内部ではPurotocol Bufferを使っている。
+
+```shell
+[vagrant@localhost ~]$ git clone git://github.com/basho/riak-erlang-client.git
+[vagrant@localhost ~]$ cd riak-erlang-client/
+[vagrant@localhost riak-erlang-client]$ make
+```
+クライアントライブラリをロードパスに加えてErlangシェルに入って操作を行う。
+
+```shell
+[vagrant@localhost riak-erlang-client]$ erl -pa ebin/ deps/*/ebin
+Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [async-threads:0] [hipe] [kernel-poll:false]
+
+Eshell V5.9.3.1 (abort with ^G)
+1> {ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087).
+{ok,<0.33.0>}
+2> riakc_pb_socket:ping(Pid).
+pong
+```
+ちなみにerlangシェルは2回C-cを押すと出ることができる。