天天看點

【redis】搭建叢集遇到的問題

  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)分析

原來搭建叢集指令使用的是:

是以在建立時候,生成的結點關系如下:

【redis】搭建叢集遇到的問題

可以看到結點都是127.0.0.1,是以導緻區域網路其他機器連接配接不上。

3.解決方法兩種

  (1)第一種方法

      第一步, 删除6379、6380等每個結點中的nodes.conf檔案。

      第二步,将需要新增的節點下aof、rdb等本地備份檔案删除;同時将新Node的叢集配置檔案删除,即:删除你redis.conf裡面cluster-config-file所在的檔案;

      第三步,清空目前資料庫。登入新Node,./redis-cli–h x –p對資料庫進行清除:        

              如果前三步沒有做好,直接執行第四步,會報如下錯誤:

【redis】搭建叢集遇到的問題

              解決方法:Error Node is not empty Either the node already kneows other nodes

       第四步:重新做叢集,執行如下指令。

          其中192.168.65.128,是自己linux虛拟機的ip位址。

       經過以上步驟,叢集重新建構成功,Jedis執行連接配接叢集操作成功!

【redis】搭建叢集遇到的問題

    (2)第二種方法

            Win+r打開運作,輸入services.msc

【redis】搭建叢集遇到的問題

       (2)在服務中找到VMware DHCP Service,VMware NAT Service服務          

【redis】搭建叢集遇到的問題

            (3)确認虛拟機網絡連接配接

                開啟服務之後,通過網絡配置可以看到已經連接配接了。

【redis】搭建叢集遇到的問題

  4.參考資料

       點選打開連結

總結:

    上面是我找到的解決方法,我傻,原來我按照自己查的資料,修改位址 ,最後把叢集給搞亂了。然後又重新搭建了一遍。搭建的過程中,又蹦出來好多問題,還好最後解決了。解決這個問題,也讓我更加了redis叢集各個階段的從屬和管理關系,以及叢集的工作方式,也算值得了。

繼續閱讀