LoginSignup
16
16

More than 5 years have passed since last update.

CentOS7にRiakCS環境を構築

Last updated at Posted at 2014-11-04

概要

CentOS7でRiakCSを3台構成でクラスタを構築する手順です。

使用するRiakCS, Riak, Stanchionのバージョンの組み合わせは次の通りです。

Riak CS Riak Stanchion
1.5.2 1.4.10 1.5.0

※2014/11/04現在

バージョンの組み合わせに関する情報はriakdocsのInstall Riak CS - Version Compatibilityに記載があります。

はじめに

CentOS7として記載していますが、CentOS6でもほぼ同じ手順で実施可能です。
CentOS6で実施する場合は、以下の通り読み替えてください。

サービスの無効化
systemctl disable サービス名
↓
chkconfig サービス名 off
サービスの開始
systemctl start サービス名
↓
service サービス名 start
サービスの停止
systemctl stop サービス名
↓
service サービス名 stop
サービスの再起動
systemctl restart サービス名
↓
service サービス名 restart

SELinux無効化

お決まりの手順。
SELinux有効にして運用してるとこってどのくらいあるんだろう。

SELinux無効化
# setenforce 0
# vi /etc/selinux/config
/etc/selinux/config
-SELINUX=enforcing
+SELINUX=disabled

ファイアウォール停止

こちらもお決まりの手順。
ファイアウォールは上位で実施することが前提。

ファイアウォール停止
# systemctl disable firewalld.service
# systemctl stop firewalld

ttyなしのsudoをrootでも許可する。

# visudo
/etc/sudoers
 Defaults    requiretty
+Defaults:root    requiretty

RiakCSインストール準備

limits.confの編集
# vi /etc/security/limits.conf
/etc/security/limits.conf
+riak             soft    nofile          65536
+riak             hard    nofile          65536
+root             soft    nofile          65536
+root             hard    nofile          65536

 # End of file

Riakのインストールと設定(192.168.1.101)

Riakインストール
# rpm -ivh riak-1.4.10-1.el6.x86_64.rpm
Riak設定(app.config)
# vi /etc/riak/app.config
/etc/riak/app.config
-            %% {pb_backlog, 64},
+            {pb_backlog, 128},

-            {pb, [ {"127.0.0.1", 8087 } ]}
+            {pb, [ {"191.168.1.101", 8087 } ]}

 {riak_core, [
+              %% Default bucket props
+              {default_bucket_props, [{allow_mult, true}]},

               %% Default location of ringstate
               {ring_state_dir, "/var/lib/riak/ring"},

-              {http, [ {"127.0.0.1", 8098 } ]},
+              {http, [ {"192.168.1.101", 8098 } ]},

+            {add_paths, ["/usr/lib64/riak-cs/lib/riak_cs-1.5.2/ebin"]},
-            {storage_backend, riak_kv_bitcask_backend},
+            {storage_backend, riak_cs_kv_multi_backend},
+            {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
+            {multi_backend_default, be_default},
+            {multi_backend, [
+              {be_default, riak_kv_eleveldb_backend, [
+                {max_open_files, 50},
+                {data_root, "/var/lib/riak/elevel_db"}
+              ]},
+              {be_blocks, riak_kv_bitcask_backend, [
+                {data_root, "/var/lib/riak/bitcask"}
+              ]}
+            ]},
Riak設定(vm.args)
# vi /etc/riak/vm.args
/etc/riak/vm.args
--name riak@127.0.0.1
+-name riak@192.168.1.101

RiakCSのインストールと設定(192.168.1.101)

RiakCSインストール
# rpm -ivh riak-cs-1.5.2-1.el6.x86_64.rpm
RiakCS設定(app.config)
# vi /etc/riak-cs/app.config
/etc/riak-cs/app.config
-              {cs_ip, "127.0.0.1"},
+              {cs_ip, "192.168.1.101"},

-              {riak_ip, "127.0.0.1"},
+              {riak_ip, "192.168.1.101"},

-              {stanchion_ip, "127.0.0.1"},
+              {stanchion_ip, "192.168.1.101"},

RiakCS設定(vm.args)
# vi /etc/riak-cs/vm.args
/etc/riak-cs/vm.args
--name riak-cs@127.0.0.1
+-name riak-cs@192.168.1.101

Stanchionのインストールと設定(192.168.1.101)

Stanchionインストール
# rpm -ivh stanchion-1.5.0-1.el6.x86_64.rpm
Stanchion設定(app.config)
# vi /etc/stanchion/app.config
/etc/stanchion/app.config
-                   {stanchion_ip, "127.0.0.1"},
+                   {stanchion_ip, "192.168.1.101"},

-                   {riak_ip, "127.0.0.1"},
+                   {riak_ip, "192.168.1.101"},
Stanchion設定(vm.args)
# vi /etc/stanchion/vm.args
/etc/stanchion/vm.args
--name stanchion@127.0.0.1
+-name stanchion@192.168.1.101

サービス起動(192.168.1.101)

サービス起動
# systemctl start riak
# systemctl start stanchion
# systemctl start riak-cs
サービス起動確認
# riak ping
pong
# stanchion ping
pong
# riak-cs ping
pong

管理者ユーザー作成(192.168.1.101)

RiakCS設定変更
# vi /etc/riak-cs/app.config
/etc/riak-cs/app.config
-              {anonymous_user_creation, false},
+              {anonymous_user_creation, true},
RiakCS再起動
# systemctl restart riak-cs
管理者ユーザの作成
# curl -H 'Content-Type: application/json' -X POST http://192.168.1.101:8080/riak-cs/user --data '{"email":"admin@example.com", "name":"admin"}'
{"email":"admin@example.com","display_name":"admin","name":"admin","key_id":"XXXXXXXXXXXXXXXXXXXX","key_secret":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","id":"b8bb225535e278bb022ae292159b5f4309e5e9c3c16988b0c4a33b6dbc36839b","status":"enabled"}
key_idがACCESS KEY、key_secretがSECRET KEYとなる。
RiakCS設定変更
# vi /etc/riak-cs/app.config
/etc/riak-cs/app.config
+              {anonymous_user_creation, true},
-              {anonymous_user_creation, false},

-              {admin_key, "admin-key"},
-              {admin_secret, "admin-secret"},
+              {admin_key, "XXXXXXXXXXXXXXXXXXXX"},
+              {admin_secret, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"},
RiakCS再起動
# systemctl restart riak-cs
Stanchion設定変更
# vi /etc/stanchion/app.config
/etc/stanchion/app.config
-                   {admin_key, "admin-key"},
-                   {admin_secret, "admin-secret"}
+                   {admin_key, "XXXXXXXXXXXXXXXXXXXX"},
+                   {admin_secret, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Stanchion再起動
# systemctl restart stanchion

RiakCSクラスタ設定

他のノード(ここでは192.168.1.102, 192.168.1.103とする)も同様の手順でRiakとRiakCSをインストールする。変更箇所はノードのIPアドレスのみ。
Stanchionは一つだけあればいいのでインストールしない。管理者ユーザー作成も不要。

Riakのインストールと設定(192.168.1.102)

Riak設定(app.config)
# vi /etc/riak/app.config
/etc/riak/app.config
-            %% {pb_backlog, 64},
+            {pb_backlog, 128},

-            {pb, [ {"127.0.0.1", 8087 } ]}
+            {pb, [ {"191.168.1.102", 8087 } ]}

 {riak_core, [
+              %% Default bucket props
+              {default_bucket_props, [{allow_mult, true}]},

               %% Default location of ringstate
               {ring_state_dir, "/var/lib/riak/ring"},

-              {http, [ {"127.0.0.1", 8098 } ]},
+              {http, [ {"192.168.1.102", 8098 } ]},

+            {add_paths, ["/usr/lib64/riak-cs/lib/riak_cs-1.5.2/ebin"]},
-            {storage_backend, riak_kv_bitcask_backend},
+            {storage_backend, riak_cs_kv_multi_backend},
+            {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
+            {multi_backend_default, be_default},
+            {multi_backend, [
+              {be_default, riak_kv_eleveldb_backend, [
+                {max_open_files, 50},
+                {data_root, "/var/lib/riak/elevel_db"}
+              ]},
+              {be_blocks, riak_kv_bitcask_backend, [
+                {data_root, "/var/lib/riak/bitcask"}
+              ]}
+            ]},
Riak設定(vm.args)
# vi /etc/riak/vm.args
/etc/riak/vm.args
--name riak@127.0.0.1
+-name riak@192.168.1.102

RiakCSのインストールと設定(192.168.1.102)

RiakCSインストール
# rpm -ivh riak-cs-1.5.2-1.el6.x86_64.rpm
RiakCS設定(app.config)
# vi /etc/riak-cs/app.config
/etc/riak-cs/app.config
-              {cs_ip, "127.0.0.1"},
+              {cs_ip, "192.168.1.102"},

-              {riak_ip, "127.0.0.1"},
+              {riak_ip, "192.168.1.102"},

-              {stanchion_ip, "127.0.0.1"},
+              {stanchion_ip, "192.168.1.102"},

-              {admin_key, "admin-key"},
-              {admin_secret, "admin-secret"},
+              {admin_key, "XXXXXXXXXXXXXXXXXXXX"},
+              {admin_secret, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"},

RiakCS設定(vm.args)
# vi /etc/riak-cs/vm.args
/etc/riak-cs/vm.args
--name riak-cs@127.0.0.1
+-name riak-cs@192.168.1.102
# systemctl start riak
# systemctl start riak-cs
サービス起動確認
# riak ping
pong
# riak-cs ping
pong

クラスタ構成

3台のサーバでリングを作成します。リングとはクラスタ内でデータを分散保存するハッシュ空間を指します。

ノード192.168.1.101でクラスタの状態を確認してみます。
リングに参加しているのは1ノード(自分自身)となります。

クラスタ状態確認
[root@riak01 ~]# riak-admin member_status
================================= Membership ==================================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid     100.0%      --      'riak@192.168.1.101'
-------------------------------------------------------------------------------
Valid:1 / Leaving:0 / Exiting:0 / Joining:0 / Down:0

ノード192.168.1.102を192.168.1.101のリングに追加します。
ノード192.168.1.102で作業します。

クラスタへの追加
[root@riak02 ~]# riak-admin cluster join riak@192.168.1.101
Success: staged join request for 'riak@192.168.1.102' to 'riak@192.168.1.101'

クラスタ構成の計画を確認します。

クラスタ計画確認
[root@riak02 ~]# riak-admin cluster plan
=============================== Staged Changes ================================
Action         Details(s)
-------------------------------------------------------------------------------
join           'riak@192.168.1.102'
-------------------------------------------------------------------------------


NOTE: Applying these changes will result in 1 cluster transition

###############################################################################
                         After cluster transition 1/1
###############################################################################

================================= Membership ==================================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid     100.0%     50.0%    'riak@192.168.1.101'
valid       0.0%     50.0%    'riak@192.168.1.102'
-------------------------------------------------------------------------------
Valid:2 / Leaving:0 / Exiting:0 / Joining:0 / Down:0

WARNING: Not all replicas will be on distinct nodes

Transfers resulting from cluster changes: 32
  32 transfers from 'riak@192.168.1.101' to 'riak@192.168.1.102'

続いて、クラスタ計画をコミットします。

クラスタ計画コミット
[root@riak02 ~]# riak-admin cluster commit
Cluster changes committed

この時点で192.168.1.102が192.168.1.101のリングに追加され、リバランスが実施されます。

クラスタ状態確認
[root@riak02 ~]# riak-admin member_status
================================= Membership ==================================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid      87.5%     50.0%    'riak@192.168.1.101'
valid      12.5%     50.0%    'riak@192.168.1.102'
-------------------------------------------------------------------------------
Valid:2 / Leaving:0 / Exiting:0 / Joining:0 / Down:0

次の通り、Pendingが -- となったらリバランスが終わり、リングへの追加が完了します。

クラスタ状態確認
[root@riak02 ~]# riak-admin member_status
================================= Membership ==================================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid      50.0%      --      'riak@192.168.1.101'
valid      50.0%      --      'riak@192.168.1.102'
-------------------------------------------------------------------------------
Valid:2 / Leaving:0 / Exiting:0 / Joining:0 / Down:0

同様に192.168.1.103もリングに追加します。
最終的なクラスタ構成は次のとおりです。

クラスタ状態確認
[root@riak03 ~]# riak-admin member_status
================================= Membership ==================================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid      34.4%      --      'riak@192.168.1.101'
valid      32.8%      --      'riak@192.168.1.102'
valid      32.8%      --      'riak@192.168.1.103'
-------------------------------------------------------------------------------
Valid:3 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16