限制riak2侦听的地址(内核,{inet\u dist\u use\u interface,inet:ip\u address()})
我们所有的erlang节点只监听它们的私有地址。对于riak 1,我们过去常常在限制riak2侦听的地址(内核,{inet\u dist\u use\u interface,inet:ip\u address()}),riak,Riak,我们所有的erlang节点只监听它们的私有地址。对于riak 1,我们过去常常在app.config中添加类似于以下内容的内容: {kernel, [ {inet_dist_use_interface, {192,168,0,42}}, 这在riak 2中似乎不再可能riak.conf不允许任意应用程序参数。所以我给了vm.args一个机会: -kernel inet_dist_use_interface '{192,168,0,42}' 这反过来又导致了
app.config
中添加类似于以下内容的内容:
{kernel, [
{inet_dist_use_interface, {192,168,0,42}},
这在riak 2中似乎不再可能riak.conf
不允许任意应用程序参数。所以我给了vm.args
一个机会:
-kernel inet_dist_use_interface '{192,168,0,42}'
这反过来又导致了以下错误:
{application_start_failure,
riak_core,
{bad_return,
{{riak_core_app,start,[normal,[]]},
{'EXIT',
{{function_clause,
[{orddict,
fetch,
[nonode@nohost,
[{'riak@192.168.0.42',
[{{riak_control,member_info_version},[v1,v0]},
{{riak_core,bucket_types},[true,false]},
{{riak_core,fold_req_version},[v2,v1]},
{{riak_core,net_ticktime},[true,false]},
{{riak_core,resizable_ring},[true,false]},
{{riak_core,security},[true,false]},
{{riak_core,staged_joins},[true,false]},
{{riak_core,vnode_routing},[proxy,legacy]},
{{riak_kv,anti_entropy},[enabled_v1,disabled]},
{{riak_kv,crdt},
[[pncounter,riak_dt_pncounter,riak_dt_orswot,riak_dt_map],
[pncounter],
[]]},
{{riak_kv,crdt_epoch_versions},
[[{riak_dt_map,2},{riak_dt_orswot,2},{riak_dt_pncounter,2}],
[{riak_dt_pncounter,2}]]},
{{riak_kv,handoff_data_encoding},[encode_raw,encode_zlib]},
{{riak_kv,index_backpressure},[true,false]},
{{riak_kv,legacy_keylisting},[false]},
{{riak_kv,listkeys_backpressure},[true,false]},
{{riak_kv,mapred_2i_pipe},[true,false]},
{{riak_kv,mapred_system},[pipe]},
{{riak_kv,object_format},[v1,v0]},
{{riak_kv,put_fsm_ack_execute},[enabled,disabled]},
{{riak_kv,secondary_index_version},[v3,v2,v1]},
{{riak_kv,vclock_data_encoding},[encode_zlib,encode_raw]},
{{riak_kv,vnode_vclocks},[true,false]},
{{riak_pipe,trace_format},[ordsets,sets]}]}]],
[{file,"orddict.erl"},{line,72}]},
{riak_core_capability,renegotiate_capabilities,1,[{file,"src/riak_core_capability.erl"},{line,441}]},
{riak_core_capability,handle_call,3,[{file,"src/riak_core_capability.erl"},{line,213}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,585}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]},
{gen_server,call,
[riak_core_capability,
{register,
{riak_core,vnode_routing},{capability,
[proxy,legacy],
legacy,
{riak_core,legacy_vnode_routing,[{true,legacy},{false,proxy}]}}}, infinity]}}}}}}
如何从这里开始?使用可扩展模式。有一个关于如何在中写入新设置的参考
下面的块将定义一个riak.conf设置,如下所示:
erlang.distribution.interface=192.168.0.42
以及一个转换函数,将其转换为4元组并将其插入生成的app.config,如下所示:
{kernel,[{inet\u dist\u use\u interface,{192168,0,42}}}
可以将此块添加到/usr/lib/riak/lib中的现有.schema文件中。
或者您可以创建一个新的模式文件,如“0-my-custom.schema”,以减少在升级过程中被踩踏的可能性
{mapping, "erlang.distribution.interface", "kernel.inet_dist_use_interface", [
{commented, "true"},
{datatype, string},
hidden
]}.
{translation, "kernel.inet_dist_use_interface",
fun(Conf) ->
IPStr = cuttlefish:conf_get("erlang.distribution.interface", Conf),
list_to_tuple([ list_to_integer(Octet) || Octet <- string:tokens(IPStr,".")])
end
}.
{映射,“erlang.distribution.interface”,“kernel.inet\u dist\u use\u interface”[
{注释为“真”},
{datatype,string},
隐藏的
]}.
{翻译,“kernel.inet\u dist\u use\u接口”,
乐趣(形态)->
IPStr=cartlefish:conf_get(“erlang.distribution.interface”,conf),
list_to_tuple([list_to_integer(Octet)| | Octet)嗨,乔。回答得很好。确实如此。我想知道我怎么会错过乌贼模式。非常感谢!