首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >限制内核监听的地址( riak2,{inet_dist_use_interface,inet:ip_address()})

限制内核监听的地址( riak2,{inet_dist_use_interface,inet:ip_address()})
EN

Stack Overflow用户
提问于 2017-01-12 03:55:55
回答 1查看 183关注 0票数 0

我们所有的erlang节点只监听它们的私有地址。在riak 1中,我们习惯于向app.config添加类似于以下内容的内容:

代码语言:javascript
运行
复制
{kernel, [        
          {inet_dist_use_interface, {192,168,0,42}},

在Riak2中,这似乎不再可能。riak.conf不允许任意的应用程序参数。所以我给了vm.args一个机会:

代码语言:javascript
运行
复制
-kernel inet_dist_use_interface '{192,168,0,42}'

这反过来又导致了以下错误:

代码语言:javascript
运行
复制
{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]}}}}}}

我怎么才能从这里开始呢?

EN

回答 1

Stack Overflow用户

发布于 2017-01-12 13:53:34

cuttlefish config tool使用可扩展的架构。在https://github.com/basho/cuttlefish/wiki/Cuttlefish-for-Erlang-Developers上有关于如何编写新设置的参考资料

下面的代码块将定义如下所示的riak.conf设置:

erlang.distribution.interface = 192.168.0.42

还有一个转换函数,将其转换为4元组,并将其插入到生成的app.config中,如下所示:

{kernel,[{inet_dist_use_interface, {192,168,0,42}}]}

您可以将此块添加到/usr/lib/riak/lib中的现有.schema文件中。或者,您可以创建一个新的模式文件,如"0-my-custom.schema“,以使其在升级期间不太可能被践踏。

代码语言:javascript
运行
复制
{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
}.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41599625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档