概要
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有効にして運用してるとこってどのくらいあるんだろう。
# setenforce 0
# vi /etc/selinux/config
-SELINUX=enforcing
+SELINUX=disabled
ファイアウォール停止
こちらもお決まりの手順。
ファイアウォールは上位で実施することが前提。
# systemctl disable firewalld.service
# systemctl stop firewalld
ttyなしのsudoをrootでも許可する。
# visudo
Defaults requiretty
+Defaults:root requiretty
RiakCSインストール準備
# vi /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)
# rpm -ivh riak-1.4.10-1.el6.x86_64.rpm
# vi /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"}
+ ]}
+ ]},
# vi /etc/riak/vm.args
--name riak@127.0.0.1
+-name riak@192.168.1.101
RiakCSのインストールと設定(192.168.1.101)
# rpm -ivh riak-cs-1.5.2-1.el6.x86_64.rpm
# vi /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"},
# vi /etc/riak-cs/vm.args
--name riak-cs@127.0.0.1
+-name riak-cs@192.168.1.101
Stanchionのインストールと設定(192.168.1.101)
# rpm -ivh stanchion-1.5.0-1.el6.x86_64.rpm
# vi /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"},
# vi /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)
# vi /etc/riak-cs/app.config
- {anonymous_user_creation, false},
+ {anonymous_user_creation, true},
# 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となる。
# vi /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"},
# systemctl restart riak-cs
# vi /etc/stanchion/app.config
- {admin_key, "admin-key"},
- {admin_secret, "admin-secret"}
+ {admin_key, "XXXXXXXXXXXXXXXXXXXX"},
+ {admin_secret, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
# systemctl restart stanchion
RiakCSクラスタ設定
他のノード(ここでは192.168.1.102, 192.168.1.103とする)も同様の手順でRiakとRiakCSをインストールする。変更箇所はノードのIPアドレスのみ。
Stanchionは一つだけあればいいのでインストールしない。管理者ユーザー作成も不要。
Riakのインストールと設定(192.168.1.102)
# vi /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"}
+ ]}
+ ]},
# vi /etc/riak/vm.args
--name riak@127.0.0.1
+-name riak@192.168.1.102
RiakCSのインストールと設定(192.168.1.102)
# rpm -ivh riak-cs-1.5.2-1.el6.x86_64.rpm
# vi /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"},
# vi /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