redis搭建好叢集之後,用用戶端Jedis連接配接測試demo的時候,一直報找不到6380端口。但是使用redis用戶端(redis desktop manager)連接配接沒有問題。在指令行中執行添加删除操作也沒有問題,但是在Java代碼中使用Jedis連接配接沒有問題,單機版通過Jedis 連結redis成功。
1.Java中叢集測試代碼如下:
/**
* (叢集版)添加資料測試
*/
@SuppressWarnings("rawtypes")
@Test
public void testString(){
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
nodes.add(new HostAndPort("192.168.65.128", 6379));
nodes.add(new HostAndPort("192.168.65.128",6380));
nodes.add(new HostAndPort("192.168.65.128", 6381));
nodes.add(new HostAndPort("192.168.65.128",6382));
nodes.add(new HostAndPort("192.168.65.128", 6383));
nodes.add(new HostAndPort("192.168.65.128",6384));
JedisCluster cluster=new JedisCluster(nodes);
cluster.set("key1", "testCluster");
System.out.println(cluster.get("key1"));
cluster.close();
}
2.問題原因
(1)原因
叢集搭建的時候,使用的IP是127.0.0.1,導緻區域網路其他機器連接配接不上。
(2)分析
原來搭建叢集指令使用的是:
是以在建立時候,生成的結點關系如下:
可以看到結點都是127.0.0.1,是以導緻區域網路其他機器連接配接不上。
3.解決方法兩種
(1)第一種方法
第一步, 删除6379、6380等每個結點中的nodes.conf檔案。
第二步,将需要新增的節點下aof、rdb等本地備份檔案删除;同時将新Node的叢集配置檔案删除,即:删除你redis.conf裡面cluster-config-file所在的檔案;
第三步,清空目前資料庫。登入新Node,./redis-cli–h x –p對資料庫進行清除:
如果前三步沒有做好,直接執行第四步,會報如下錯誤:
解決方法:Error Node is not empty Either the node already kneows other nodes
第四步:重新做叢集,執行如下指令。
其中192.168.65.128,是自己linux虛拟機的ip位址。
經過以上步驟,叢集重新建構成功,Jedis執行連接配接叢集操作成功!
(2)第二種方法
Win+r打開運作,輸入services.msc
(2)在服務中找到VMware DHCP Service,VMware NAT Service服務
(3)确認虛拟機網絡連接配接
開啟服務之後,通過網絡配置可以看到已經連接配接了。
4.參考資料
點選打開連結
總結:
上面是我找到的解決方法,我傻,原來我按照自己查的資料,修改位址 ,最後把叢集給搞亂了。然後又重新搭建了一遍。搭建的過程中,又蹦出來好多問題,還好最後解決了。解決這個問題,也讓我更加了redis叢集各個階段的從屬和管理關系,以及叢集的工作方式,也算值得了。