【问题标题】:Why on testing a Riak node 'riak-admin test' fails but 'curl -v http://127.0.0.1/8098/types/default/props' succeeds为什么在测试 Riak 节点时 'riak-admin test' 失败但 'curl -v http://127.0.0.1/8098/types/default/props' 成功
【发布时间】:2015-03-16 06:46:33
【问题描述】:

我正在建立一个包含五个物理节点的 riak 集群。除了一个未通过 admin-riak 测试 外,其他四个都可以通过所有测试。几个 riak-admin 命令上的集群状态如下所示

do-admin@DBNode1:~$ sudo riak-admin member-status  
=============== Membership ============================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid      20.3%      --      'riak@dbnode1.do.ug'
valid      20.3%      --      'riak@dbnode2.do.ug'
valid      20.3%      --      'riak@dbnode3.do.ug'
valid      20.3%      --      'riak@dbnode4.do.ug'
valid      18.8%      --      'riak@dbnode5.do.ug'
-------------------------------------------------------------------------------
Valid:5 / Leaving:0 / Exiting:0 / Joining:0 / Down:0

dot-admin@DBNode1:~$ sudo riak-admin ring-status
================================== Claimant ===================================
Claimant:  'riak@dbnode2.do.ug'
Status:     up
Ring Ready: true

============================== Ownership Handoff ==============================
No pending changes.

============================== Unreachable Nodes ==============================
All nodes are up and reachable

do-admin@DBNode1:~$ sudo riak-admin cluster status
---- Cluster Status ----
Ring ready: true

+------------------------+------+-------+-----+-------+
|       node             |status| avail |ring |pending|
+------------------------+------+-------+-----+-------+
|     riak@dbnode1.do.ug |valid |  up   | 20.3|  --   |
| (C) riak@dbnode2.do.ug |valid |  up   | 20.3|  --   |
|     riak@dbnode3.do.ug |valid |  up   | 20.3|  --   |
|     riak@dbnode4.do.ug |valid |  up   | 20.3|  --   |
|     riak@dbnode5.do.ug |valid |  up   | 18.8|  --   |
+------------------------+------+-------+-----+-------+

Key: (C) = Claimant; availability marked with '!' is unexpected

do-admin@DBNode1:~$ curl -v http://dbnode1.dot.ug:8098/types/default/props
* Hostname was NOT found in DNS cache
*   Trying 192.168.172.38...
* Connected to dbnode1.dot.ug (192.168.172.38) port 8098 (#0)
> GET /types/default/props HTTP/1.1
> User-Agent: curl/7.35.0
> Host: dbnode1.dotshule.ug:8098
> Accept: */*
> 
< HTTP/1.1 200 OK
< Vary: Accept-Encoding
* Server MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) is not blacklisted
< Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained)
< Date: Sat, 17 Jan 2015 21:05:22 GMT
< Content-Type: application/json
< Content-Length: 428
< 
* Connection #0 to host dbnode1.dotshule.ug left intact
{"props":{"allow_mult":false,"basic_quorum":false,"big_vclock":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_std_keyfun"},"dvv_enabled":false,"dw":"quorum","last_write_wins":false,"linkfun":{"mod":"riak_kv_wm_link_walker","fun":"mapreduce_linkfun"},"n_val":3,"notfound_ok":true,"old_vclock":86400,"postcommit":[],"pr":0,"precommit":[],"pw":0,"r":"quorum","rw":"quorum","small_vclock":50,"w":"quorum","young_vclock":20}}

dot-admin@DBNode1:~$ sudo riak-admin test
Node 'riak@dbnode1.dot.ug ' is not reachable from 'riak_test@dbnode1.dot.ug'.

除了 **riak-admin 测试 ** 在所有其他节点上都是这样,所有节点上的所有测试结果都相同。对于节点三

dot-admin@DBNode3:~$ sudo riak-admin test
Successfully completed 1 read/write cycle to 'riak@dbnode3.dotshule.ug'

我怀疑这个集群是否准备好用于存储数据,因为在这个Basho website resource上,他们说你可以使用任何方法来测试节点是否准备好。如果一种方法成功而另一种方法失败,他们并没有说节点仍然很好。所以我被困在是否继续使用集群上。令人惊讶的是,该节点已成功执行所有操作以将其加入集群!我已尝试再次从头开始创建此节点,但没有帮助!

如果有任何帮助,我会很高兴。

【问题讨论】:

  • Riak 启动后配置文件中的节点名是否改变了? riak-admin test 命令应该通过 env.sh 脚本从配置文件中提取节点名称。当 member_status 显示 riak@dbnode1.do.ug 时,它得到 dbnode1.dot.ug 这一事实似乎意味着它已被更改。
  • 不,这是一个编辑错误,所有节点都是这个命名法riak@dbnodeN.do.ug

标签: curl erlang cluster-computing riak


【解决方案1】:

错误Node &lt;targetnode&gt; is not reachable from &lt;sourcenode&gt;. 表示net_adm:ping(&lt;targetnode&gt;) 返回pang 而不是pong。

检查:

  • epmd 进程正在运行
  • /usr/lib/riak/erts-5.10.3/epmd -names 显示节点已注册(调整路径以匹配您的安装)
  • selinx、iptables 或其他安全软件未阻止临时端口或 epmd 端口 4369

net_adm 模块将尝试解析目标节点名的主机部分,即“@”之后的部分,在该 IP 地址的端口 4369 上联系 epmd 以获取命名节点的端口,然后建立 TCP 连接到该端口的节点。此过程中的某些内容未完成。

【讨论】:

  • 当我在任何其他节点上运行sudo riak attach 以访问erlang 终端,然后我运行net_adm:ping('riak@dbnode1.do.ug')。我得到一个pong。当我运行nodes() 时,它也会出现。当我在该节点上执行相同的程序时,我在其他节点上得到相同的结果!! epmd 端口 4369 也对所有节点开放....
  • 我不知道这个 riak-admin shell 命令sudo riak-admin test 的内部操作,我仍然不知道这个其他节点riak_test@dbnode1.do.ug 在响应@987654336 中的位置@ 来自我运行该命令时sudo riak-admin testBasho 表示如果失败则节点未准备好!!
  • 来自有问题的节点的riak ping呢?
  • sudo riak ping 返回pong。我认为这表明 riak 节点正在常驻(本地)机器上运行。
  • 这很奇怪,因为它执行的检查与导致您记录的错误完全相同。 riak ping 使用代码here ping 节点,riak-admin test 使用代码here 调用client_test function。两者都使用net_adm:ping 进行测试。如果riak ping 可以ping 到本地节点而riak-admin test 不能,可能是权限或selinux 问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 2018-11-05
  • 2012-05-06
  • 2022-01-20
相关资源
最近更新 更多