连接zookeeper出现异常:unknowHostException

   我是用vm虚拟机创建了三台虚拟服务机并建立了集群,在用java客户端去连zookeeper集群的时候报错:UnknowHostException,很明显,这是无法识别主机名,我的java客户端代码如下:

public class SimpleZkClient {

  private ZooKeeper zk=null;

  private final static String 
  ****connectString="shizhan02:2181,shizhan03:2181,shizhan04:2181";****

  private final static int sessionTimeout=2000 ;

/*
 * zookeeper Connect
 */
  @Before
  public void initConnect() throws IOException{

      zk = new ZooKeeper(connectString, sessionTimeout, new Watcher(){

        @Override
        public void process(WatchedEvent event) {

            System.out.println("监听事件的类型:"+event.getType()+"--路径:"+event.getPath()+"--状态:" +
                    ""+event.getState()+"--Wrapper:"+event.getWrapper());//wrapper:包装
            //再获得下连接状态
            States stat= zk.getState();
            System.out.println("连接状态"+stat);

        }});


  }

  可以看到我的connectString 连接地址是使用主机名的方式连接,我就思考可能出现问题的地方:
   1.Linux服务器没有配置host,于是我输入命令:
     cat /etc/hosts
     127.0.0.1 localhost.localdomain localhost
     192.168.0.12 shizhan02
     192.168.0.13 shizhan03
     192.168.0.14 shizhan04

    可以看到这里是没有问题的,我已经配置过主机名和ip之间的映射,三台服务器之间可以相互识别。
  彼此之间也可以互相ping通。
  既然Linux中没有问题,我就想,我的java客户端是在windowxp中运行的,是不是windows无法识别我Linux中的ip呢?
 于是我打算在windows中配置下服务器的映射。
 去到如下地址,找到hosts文件
 C:\Windows\System32\drivers\etc
 ![我的etc目录](https://img-blog.csdn.net/20171231144105463?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzQwNjc4OTY5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
 可以看到,里面没有host文件,不用担心,自己新建一个日记文件,取名hosts就好了,同时将imhost.sam文件删除掉。在新建的hosts中配置映射内容:

   192.168.0.12  shizhan02
   192.168.0.13  shizhan03
   192.168.0.14  shizhan04

保存并退出,即可。
好啦,再次运行,没问题啦。

你可能感兴趣的:(zookeeper,linux的管理与使)