在虚拟机上安装了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