2016.06.06
RethinkDBをZ.com上に構築してみる
1. はじめに
次世代システム研究室のT.Mです。
今回プロジェクトの関係でRethinkDBに触れる機会があったため、その概要について紹介したいと思います。
インストールして使うだけであればドキュメントで簡単にできるため、今回は弊社サービス Z.com 上に環境を構築してみようと思います。
2. rethinkDBについて
RethinkDBは、構築・メンテナンスが容易でスケーラブルな、JSONドキュメントストアタイプのNoSQLデータベースです。
JSONドキュメントストア形式という面ではmongodbと同様ですが、シャーディング/レプリケーションの設定が容易などの特性があります。
ただ、現時点(2016年6月1日現在)では、mongodbのほうが性能面で圧倒的に優れている状況です。
メンテナンス性の高さなどと天秤にかけて優位性があるプロジェクトでは導入を検討してもよいのではないでしょうか。
今回の構築の検証に使用する環境は下記のセットです。
CentOS 7.2.1511 RethinkDB 2.3.2
簡便のため、以降の処理はrootでの作業と仮定します。
root以外での実施の場合は適宜sudoを追加してください。
3. Z.com VPS構築
まず、Z.com上でVPSサーバの環境を構築します。
この作業は特にRethinkDBとはあまり関係ないですが、一応実際にありそうな構成としてプライベートネットワークを構築します。
3-1. Z.comでのサーバ構築
Z.comコンソールからVPSを立ち上げます。
今回は検証用に3台のサーバを構築します。
性能面を考慮して一応メモリは4GBのものを選択しています。
3-2. プライベートネットワークの構築
次にプライベートネットワークを構築して、先ほど構築したVPSを登録します。
アドレスクラスで「クラスC」を選択し、ネットワークアドレスに今回は「192.168.20.0/24」を設定します。
(実際には皆さんが構築する環境に合わせてください。)
プライベートネットワークへのVPSの追加にはVPSインスタンスを落としておく必要があるので、一旦VPSを全てシャットダウンしておきます。
次にZ.comコンソールからプライベートネットワークに各VPSを追加して、VPSを起動します。
3-3. 各VPSでの設定
各VPSにプライベートネットワークの設定を追加します。
# vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE='eth1' IPADDR='192.168.20.x' NETMASK='255.255.255.0' ONBOOT='yes' TYPE='Ethernet' IPV6INIT='no' IPV6_ROUTER='no'
※「IPADDR=”192.168.20.x”」の「x」の部分は各サーバのプライベートIPアドレスに合わせてください。
設定反映のためにネットワークを再起動します。
# service network restart
今回、firewalldについては止めてしまいます。
(皆さんが環境構築する際には適切に設定してください。)
# systemctl stop firewalld
4. RethinkDBの構築
ここからがRethinkDBの構築作業となります。
4-1. サーバのインストール
全台にRethinkDBをインストールしてしまいます。
今回はyumで簡単に入れてしまいます。
# wget http://download.rethinkdb.com/centos/7/`uname -m`/rethinkdb.repo -O /etc/yum.repos.d/rethinkdb.repo # yum install rethinkdb
4-2. サーバの起動
次にサーバの起動です。
最初のサーバ「rethink-1(192.168.20.1)」を起動します。
# rethinkdb --bind 192.168.20.1
次にそれに接続するサーバの「rethink-2(192.168.20.2)」を起動します。
# rethinkdb --join 192.168.20.1 --bind 192.168.20.2
続けて「rethink-3(192.168.20.3)」を起動します。
# rethinkdb --join 192.168.20.1 --bind 192.168.20.3
これで3台構成のRethinkDBクラスターが完成です。
4-2. 管理画面の確認
RethinkDBの管理画面はデフォルトの状態ではlocalhostからの接続しか受け付けません。
今回サーバへのSSH接続にはTeratermを使用していたため、Teratermのトンネリング設定をして管理画面にアクセスします。
「設定」⇒「SSH転送」
「ポート転送」⇒「追加」
「ローカルのポート:58080」「リモート側ホスト:localhost」「ポート:8080」を設定して「OK」
ローカルのブラウザにてhttp://localhost:58080にアクセスすれば管理画面が確認できます。
5. まとめ
今回は、Z.comクラウド上にRethinkDBを構築してみました。
構築自体は非常に簡単で、シャーディングやレプリケーション設定などのメンテナンスも、この管理画面から非常に容易に行えます。
その他RethinkDB には、データセンター間のレプリケーションも容易にできるなど、いろいろな利点がありますので、次回はこういった RethinkDB 特有の特徴を踏まえて、いろいろ検証した内容などを紹介したいと思います。
次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD