まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:local

IBM Bluemix からも提供されているスケーラブルな NoSQL データベースである Cloudant 。Bluemix から提供されているのはいわゆる "DBaaS(DataBase as a Service)" と呼ばれている形態です。データベースの管理や多重化、スケーリング対応などは全てクラウドベンダーである IBM が管理しており、利用者は単にデータを読み書きするだけのデータベースとして提供しています。

(特にクラウド環境下で使う場合であれば)これはこれで便利なデータベースだと思うのですが、中にはこの Cloudant をオンプレミス環境で構築したい/使いたい!という猛者な方もいらっしゃるかもしれません。そんな貴方に Cloudant Data Layer Local Edition(通称 "Cloudant Local") をご紹介します:

Cloudant Data Layer Local Edition
cloudantlocal


Cloudant Local はその名の通りで、Cloudant をローカル(オンプレミス)環境に構築するためのミドルウェアです。Cloudant のソフトウェア部分だけを単体で提供するもので、対応環境(X86_64 の Debian 6.0.10 / Ubuntu 12.04.4 / RHEL 6.5 / CentOS 6.5 / Oracle Linux 6.5、または zSystems の RHEL 6.5)の OS 上にミドルウェアとしてインストールして利用します。

なお、現時点で Cloudant Local は無料で提供されているものではありません。IBM ソフトウェア製品として購入する必要があります。興味のある方や詳しく知りたい方はこちらからお問い合わせください:
https://cloudant.com/cloudant-local-info/


さてインストールガイドを見ると、推奨環境としてこのようなアーキテクチャ図が紹介されています。要はロードバランサーに1ノード以上、そしてデータベースとして3ノード以上、計4ノードを最小構成環境にしろ、ということらしいです。Cloudant は分散させることでスケール対応させたり、可用性を上げたりしているわけなので、そういった意味での推奨環境なのでしょう:
cloudant_local_architecture_ports


ただ、まあそのような環境を個人で用意するのは結構ハードル高いです(1ノードあたりのスペックもそこそこ高い)。というわけで自分はデータベースに1ノード(つまり分散なし)、そしてそこにロードバランサーは使わない、という1インスタンス構成で作ってみました。以下、この珍しい環境の導入手順の紹介です。

まずは入手した Cloudant Local の導入モジュールを展開します。2016/Feb/13 時点での Cloudant Local の最新バージョンは 1.0.0.4 ですが、自分が入手したバージョンは 1.0.0.3 で、ファイル名は CLO_DLLED_1.0.0.3_LNX8664_RH,COS_.tar.gz でした。以下このファイルを使う前提で記載します:
# tar xzvf CLO_DLLED_1.0.0.3_LNX8664_RH,COS_.tar.gz

展開後のフォルダに quiet_install.sh というサイレントインストール用のシェルスクリプトがあります。これを使って導入するのですが、シングルノードでの1インスタンス構成で導入するには以下のコマンドを実行します:
# ./quiet_install.sh -a -s -E

3つのオプションの意味を解説します。-a は利用条件の Agreement 、-s はシングルノード構成でのインストール指示、そして -E は EPEL リポジトリを有効にするスイッチです。これでしばらく待つとデフォルト条件で Cloudant Local がインストールされます。


次に Cloudant Local の構成を行います。構成は ~/Cloudant/repo/configure.sh コマンドを実行するだけですが、その前に構成条件(の足りない部分)を ~/Cloudant/repo/configure.ini ファイルで指定しておく必要があります。具体的には _ADMIN_PASSWORD(管理パスワード)や、_CLOUDANT_PASSWORD(システムに作成される cloudant ユーザーのパスワード)、_HAPROXY_PASSWORD(プロクシーのパスワード)、_JMXREMOTE_PASSWORD(リモートJMXのパスワード)、_METRICS_PASSWORD(METRICSのパスワード)といった各種パスワードをこのファイル内に指定します(デフォルトでは全て空になっていて、何かを設定しないと configure.sh は正しく動きません)。
  :
  :
_ADMIN_PASSWORD=*****
  :
_CLOUDANT_PASSWORD=*****
  :
_HAPROXY_PASSWORD=*****
  :
_JMXREMOTE_PASSWORD=*****
  :
_METRICS_PASSWORD=*****
  :
  :

加えて、同ファイル内の DB ノードとロードバランサーの情報をシングルノード構成用に書き直します。具体的にはこのような感じにします(はコメント):
  :
  :
_DB_NODE_CNT=1               # データベースノードは1個
_DB_NODE_ARRAY=( localhost ) # データベースノードのホスト名配列
_DB_IP_ARRAY=( 127.0.0.1 )   # データベースノードのIPアドレス配列
  :
  :
_LB_CNT=0                    # ロードバランサーの数
_LB_ARRAY=                   # ロードバランサーのホスト名配列(指定しない)
  :
  :

データベースノードを1つに指定し、従ってロードバランサーは不要なので使っていないことを指定(_LB_CNT=0)しています。

この状態で ~/Cloudant/repo/configure.sh ファイルを実行して構成を行います:
# ~/Cloudant/repo/configure.sh

ここまでの処理が正しく完了すれば Cloudant Local は正しく導入/構成され、このマシン上に(インストール手順の中で)導入された Nginx を使ったウェブコンソールごと稼働しているはずです。ウェブブラウザを使って、以下の URL にアクセスしてみます:
http://(このマシンのIPアドレス)/dashboard.html

Cloudant Local が正しく導入され、構成も行われていれば以下の様なログイン画面が表示されるので、configure.ini 内で _ADMIN_USER_ID (デフォルトのままであれば admin )と _ADMIN_PASSWORD で指定したユーザー名とパスワードを指定してログインします:
2016021201


正しくログインが完了すると、Bluemix ではお馴染みの Cloudant のダッシュボード画面が表示されます。アドレスもオンプレミス環境のものになっていて、ローカル環境で導入できて動いています!:
2016021200


データの中身は実質的に何もない状態ですが、この時点で OS 含めて 5GB くらい使っています。なので 5GB プラス自分が格納するデータサイズくらいのディスクがあれば一応動かせる、ということになりますね。


Cloudant Local は本来はロードバランサーごと複数台構成にすることでスケーラブルな NoSQL データベースになりますが、利用目的が限られていればこんな1台構成で環境を構築することも可能、でした。オンプレミス環境であれば容量や読み書きの API ごとの課金を心配することもないので、構成や使いみちを自由に決めたい(またはまだ決めたくない)場合の NoSQL データベースの選択肢になりえます。

発表済み Bluemix サービスの中で、唯一サービスが開始されていなかった Bluemix Local のサービス提供が開始されました:
http://www.zdnet.com/article/ibm-launches-bluemix-local-aims-to-bridge-public-private-clouds-with-data-center/

3つの Bluemix サービスをわかりやすく比較すると、こんな感じになります:
Bluemix サービス提供形態説明
Publicパブリッククラウド多くの人がマルチテナントで使っている、普通の "Bluemix" はこれ
DedicatedプライベートクラウドIBM のデータセンター上に、シングルテナントの専用 Bluemix 環境を構築して、専有して利用する
Localオンプレミスお客様のデータセンター上に、シングルテナントの専用 Bluemix 環境を構築して、専有して利用する


例えばですが、アプリケーションの開発・テスト・研究段階は気軽に使えるパブリッククラウド版(Public)の Bluemix を使って開発して、テストして、改良して・・・ そして本格的なサービスとして稼働する場合はプライベートクラウド版に移行して、というシナリオがこれまでもご利用できましたが、これからは「本格稼働後はオンプレミス環境内で」という選択肢が増えたことになります。

この Bluemix Local (と Bluemix Dedicated)環境は、お客様の専有環境としての Bluemix ですが、いずれも IBM がリモート管理を行うものです。例えばサービスカタログの管理は IBM が行います。またバージョン管理や Bluemix Public との同期などは "Relay" と呼ばれる同期アップデート機能によって自動化されます:
2015100601
https://developer.ibm.com/bluemix/2015/10/01/introducing-bluemix-local-relay/


パブリックに提供されている Bluemix の環境を専有したり、オンプレミスに用意したり、またはそれらを組み合わせたり・・・ という、「ハイブリッドなクラウド」が IBM の特徴の1つといえますね。


このページのトップヘ