我在一个三节点磁盘集群上遇到了一个复制问题,这看起来很奇怪,因为这个用例相当典型,所以我完全有可能做错了什么。
下面是在本地复制它的方法:
# relevant disque info
disque_version:1.0-rc1
disque_git_sha1:0192ba7e
disque_git_dirty:0
disque_build_id:b02910aa5c47590a启动端口9001、9002和9003中的3个disque节点,然后让端口9002和9003上的服务器与9001相遇。
127.0.0.1:9002> CLUSTER MEET 127.0.0.1 9001 #=> OK
127.0.0.1:9003> CLUSTER MEET 127.0.0.1 9001 #=> OK不出所料,HELLO会为所有三个节点报告相同的数据。
127.0.0.1:9003> hello
1) (integer) 1
2) "e93cbbd17ad12369dd2066a55f9d4c51be9c93dd"
3) 1) "b61c63e8fd0c67544f895f5d045aa832ccb47e08"
2) "127.0.0.1"
3) "9001"
4) "1"
4) 1) "b32eb6501e272a06d4c20a1459260ceba658b5cd"
2) "127.0.0.1"
3) "9002"
4) "1"
5) 1) "e93cbbd17ad12369dd2066a55f9d4c51be9c93dd"
2) "127.0.0.1"
3) "9003"
4) "1"作业入队成功,但作业不会在其他节点的QLEN或QPEEK上显示。
127.0.0.1:9001> addjob myqueue body 1 #=> D-b61c63e8-IFA29ufvL37FRVjVVWisbO/x-05a1
127.0.0.1:9001> qlen myqueue #=> 1
127.0.0.1:9002> qlen myqueue #=> 0
127.0.0.1:9002> qpeek myqueue 1 #=> (empty list or set)
127.0.0.1:9003> qlen myqueue #=> 0
127.0.0.1:9003> qpeek myqueue 1 #=> (empty list or set)当显式设置高于节点数的复制值时,disque将失败,并返回NOREPL,正如预期的那样,显式复制级别2会成功,但在节点9002和9003中仍然看不到作业。无论我在哪个节点中添加作业,都会发生相同的行为。
我的理解是,复制在调用ADDJOB时同步发生(除非显式使用ASYNC),但它似乎不能正常工作,测试套件正在传递master分支,所以我在这里遇到了困难,必须深入研究源代码,任何帮助都将不胜感激!
发布于 2016-06-09 01:09:08
作业已复制,但仅在一个节点中排队。尝试杀死第一个节点,以查看作业在另一个节点中排队。
https://stackoverflow.com/questions/37707900
复制相似问题