zookeeperの偽クラスタを構築して出会った穴を記録します

6282 ワード

最近実習しながらzookeeperを勉強していて、杭電先輩の「paxosからzookeeperまで」という本を読んでいます.偽のクラスタを作ってみてください.まずzookeeperをダウンロードして、チュートリアルに従ってzooを3部配置します.cfgファイル、起動スクリプトを実行
最初のピット:起動できません
最初のピットはconsoleに表示されていますが、ステータスを表示するとzookeeperが起動していない可能性があります.その最初の反応はログを表示することです.ログがzooにあると思っていました.cfgファイルに配置されたlogディレクトリの下で、後で検索して、binディレクトリの下で、ファイル名はzookeeperであることを発見しました.out
2番目のピット:jdkディレクトリが見つかりません
見てみろoutのログはjavaホームが見つからないことを発見して、その時はすべきではないと思って、私はIDEAを使って完全にjdkを使うことができて、しかし思い出して、私のIDEAの中でjdkはIDEAがインストールする時自動的にインストールしたので、zookeeperの中で使うjdkホームは手動でjdkをインストールするデフォルトのディレクトリです
IDEAにインストールされているjdkディレクトリと手動でインストールされているディレクトリが違うので、無意識にzookeeperを構成しているjdkディレクトリを検索しましたが、検索できず、結局Oracle公式サイトにダウンロードして再インストールしました
3番目のピット:クラスタ構築
私は自分のパソコンで3つのzookeeperインスタンスを起動するつもりです.最初のインスタンスを起動してzookeeperを表示します.outファイルでは、多くのエラーが報告されていることに気づきました.以下のようにします.
java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:562)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:614)
        at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:843)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:913)
2018-07-28 14:35:43,649 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer$QuorumServer@167] - Resolved hostname: 127.0.0.1 to address: /127.0.0.1

接続が拒否され、最初の反応は起動していないことであり、ポートが占有されている異常だと思っていたが、ポートの使用状況を見てみるとポートが占有されていないことが分かった.そして、異常発見は接続異常であり、接続されているポートは他の2つのzookeeperインスタンスの構成ポートであることをよく審査した.その時、私は最初のzookeeperインスタンスだけを起動し、他の2つのインスタンスを起動していないことに気づいた.実は最初のインスタンスが起動しました.次に、他の2つのzookeeperインスタンスを起動し、zookeeperの状態を再確認すると、次のように1つのleader 2つのfollowerになります.
  3:

ZooKeeper JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper-3/bin/../conf/zoo.cfg
Mode: follower



  1:

ZooKeeper JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper-1/bin/../conf/zoo.cfg
Mode: follower



  2:

ZooKeeper JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper-2/bin/../conf/zoo.cfg
Mode: leader