在虛擬機上安裝了CenOS Linux系統,然后配置好了 zookeeper的集群環境,在本地寫了一個Zookeeper測試程序,如下:
package com.xbq.zookeeper; import java.io.IOException; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.ZooKeeper; /** * @ClassName: ZookeeperDemo * @Description: TODO zookeeper測試 * @author xbq * @version 1.0 * @date 2017-3-10 下午5:05:16 */ public class ZookeeperDemo { private static final int SESSION_TIMEOUT = 3000; public static void main(String[] args) { try { ZooKeeper zooKeeper = new ZooKeeper("192.168.242.128:2183", SESSION_TIMEOUT, new Watcher() { @Override public void process(WatchedEvent event) { System.out.println("觸發事件:" + event.getType()); } }); zooKeeper.create("/node_xbq", "coder".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(new String(zooKeeper.getData("/node_xbq", true, null))); } catch (Exception e) { e.printStackTrace(); } } }
執行之后,出現如下錯誤:
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /node_xbq at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1412) at com.xbq.zookeeper.ZookeeperDemo.main(ZookeeperDemo.java:32)
解決方法:
關閉Linux的防火牆。 執行 service iptables stop。
CentOS Linux開啟和關閉防火牆命令有兩種,一種是臨時的,重啟即復原;另外一種是永久性的,重啟不會復原。
1) 臨時生效,重啟后復原 開啟: service iptables start 關閉: service iptables stop
2) 永久性生效,重啟后不會復原 開啟: chkconfig iptables on 關閉: chkconfig iptables off