Erlang VMのコンソールをDetacheする
今のままでは,
erlコマンドには,
それぞれの引数の意味は次のとおりです。
引数 | 説明 |
---|---|
-sname | Erlangノードの名前を指定できます。名前を付ける事で, |
-detached | Erlang VM起動後, |
-remsh | 操作する対象のErlangノードの名前を指定できます。-detachedと同様に-snameと共に使用する必要があります。 |
では,
次のコマンドを実行すると,
$ erl -sname kai -pa ebin -config kai -eval 'application:start(kai).' -detached
-sname kaiを指定すると,
毎回,
この起動スクリプトをstart_
リスト5 start_
#!/bin/sh
ROOT='/path/to/kai-0.4.0'
ERL='/usr/bin/env erl'
for n in $@
do
${ERL} -sname ${n} \
-pa ${ROOT}/ebin \
-config ${ROOT}/${n} \
-eval 'application:start(kai).' \
-detached
done
変数ROOTには,
起動スクリプトの第一引数は,
次に,
$ erl -sname kai_controller -remsh kai@centos Erlang R13B (erts-5.7.1) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.7.1 (abort with ^G) (kai@centos)1> q(). <- プロンプトが接続元 kai_controller@centos ではなく,接続先となる事に注意 ok (kai@centos)2> User switch command <- q(). で接続先が終了してしまい,コンソールが操作できない為,Ctrl+G でメニューを呼び出す --> q <- q で kai_controller@centos を終了させる
このコマンドもスクリプトにしておくと便利です。erlコマンドの引数に習って,
リスト6 remsh.
#!/bin/sh
ERL='/usr/bin/env erl'
${ERL} -sname kai_controller -remsh $1@`hostname -s`
なお,
クラスタを構築する
Kaiは,
今回は,
ここでは,
まず始めに,
リスト7 make_
#!/bin/sh
for n in $@
do
cat <<__END_OF_CONFIG__ > kai${n}.config
[{kai, [
{rpc_port, 1101${n}},
{rpc_max_processes, 30},
{memcache_port, 1121${n}},
{memcache_max_processes, 10},
{max_connections, 32},
{n, 3},
{r, 2},
{w, 2},
{number_of_buckets, 1024},
{number_of_virtual_nodes, 128},
{store, ets}
]}].
__END_OF_CONFIG__
done
次に,
$ /path/to/make_kai_config.sh 1 2 3
スタンドアローンの例とは異なり,
また,
次に,
$ /path/to/start_kai.sh kai1 kai2 kai3
このままでは,
あるノードAに,
NodeA,
$ /path/to/remsh.sh kai1 Erlang R13B (erts-5.7.1) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.7.1 (abort with ^G) (kai1@centos)1> kai_rpc:check_node({{127,0,0,1}, 11011}, {{127,0,0,1}, 11012}). ok (kai1@centos)2> kai_rpc:check_node({{127,0,0,1}, 11012}, {{127,0,0,1}, 11013}). ok (kai1@centos)3> kai_rpc:check_node({{127,0,0,1}, 11013}, {{127,0,0,1}, 11011}). ok (kai1@centos)4>
「ここでは,
最後に,
(kai1@centos)4> kai_rpc:node_list({{127,0,0,1}, 11011}). {node_list,[{{192,168,1,2},11012}, {{192,168,1,2},11011}, {{192,168,1,2},11013}]} (kai1@centos)5> kai_rpc:node_list({{127,0,0,1}, 11012}). {node_list,[{{192,168,1,2},11012}, {{192,168,1,2},11011}, {{192,168,1,2},11013}]} (kai1@centos)6> kai_rpc:node_list({{127,0,0,1}, 11013}). {node_list,[{{192,168,1,2},11012}, {{192,168,1,2},11011}, {{192,168,1,2},11013}]} (kai1@centos)7> User switch command --> q
このように,
次回の予告
以上で,
次回は,