2016-12-10 9 views
0

私は、飼育者のバックエンドとしてZookeeperを使用して、生産準備が整ったSwarmクラスタを構築することを任されています。私はこの目的のために公式の文書、https://docs.docker.com/swarm/install-manual/を使用しました。バックエンドの発見に関して私はこれを使った:https://docs.docker.com/swarm/discovery/。今私は問題があります。私は群れと通信しようとすると、私はこのエラーがあります:選ばれた主クラスタマネージャーはありません。Docker Swarm with Zookeeper - 選択されていないプライマリクラスタマネージャー

これは私の設定です:

私は私の群れマネージャと同じホストでのZooKeeper 3.4.9打ち上げで、ドッキングウィンドウのクライアント/サーバーバージョン1.12.3でのUbuntu 16.04上で実行していますよ。オン

$ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <swarm-manager-ip>:4000 zk://<swarm-manager-ip>/swarm 

:私は、群れのマネージャーに今1つの群れマネージャと1つの群れワーカー

各ノードのドッカーEngineのインストール後に2つのノードアーキテクチャ、

$ nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock & 

を使用していますswarm worker:

$ docker run -d swarm join --advertise=<swarm-worker-ip>:2375 zk://<swarm-manager-ip>/swarm 

ここですべてがうまくいくかどうかを確認するには、以下のコマンドを実行します。結果は次のようになります。

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS        NAMES 
91c3864ba6ee  swarm    "/swarm manage -H :40" 17 hours ago  Up 19 minutes  2375/tcp, 0.0.0.0:4000->4000/tcp swarm-master 

私は群れのマスターを見ることができると私は群れノードのログを参照しようとすると、私はこの見ることができます:

$ docker logs 91c3864ba6ee 
time="2016-12-09T20:29:39Z" level=info msg="Initializing discovery without TLS" 
time="2016-12-09T20:29:39Z" level=info msg="Listening for HTTP" addr=":4000" proto=tcp 
time="2016-12-09T20:29:39Z" level=info msg="Leader Election: Cluster leadership lost" 
2016/12/09 20:29:40 Failed to connect to <swarm-manager-ip>:2181: dial tcp <swarm-manager-ip>:2181: i/o timeout 
time="2016-12-09T20:29:40Z" level=error msg="zk: could not connect to a server" 
time="2016-12-09T20:29:40Z" level=error msg="zk: could not connect to a server" 
time="2016-12-09T20:29:40Z" level=error msg="Discovery error: zk: could not connect to a server" 
2016/12/09 20:29:42 Failed to connect to <swarm-manager-ip>:2181: dial tcp <swarm-manager-ip>:2181: i/o timeout 
time="2016-12-09T20:29:42Z" level=error msg="Discovery error: zk: could not connect to a server" 
2016/12/09 20:29:44 Failed to connect to <swarm-manager-ip>:2181: dial tcp <swarm-manager-ip>:2181: i/o timeout 
time="2016-12-09T20:29:44Z" level=error msg="Discovery error: zk: could not connect to a server" 
time="2016-12-09T20:29:44Z" level=error msg="Discovery error: Unexpected watch error" 
2016/12/09 20:29:46 Failed to connect to <swarm-manager-ip>:2181: dial tcp <swarm-manager-ip>:2181: i/o timeout 
2016/12/09 20:29:48 Failed to connect to <swarm-manager-ip>:2181: dial tcp <swarm-manager-ip>:2181: i/o timeout 
time="2016-12-09T20:29:50Z" level=info msg="Leader Election: Cluster leadership lost" 
2016/12/09 20:29:50 Failed to connect to <swarm-manager-ip>:2181: dial tcp <swarm-manager-ip>:2181: i/o timeout 
time="2016-12-09T20:29:50Z" level=error msg="zk: could not connect to a server" 
time="2016-12-09T20:29:50Z" level=error msg="zk: could not connect to a server" 
を私はこれを行う

$ docker -H <swarm-manager-ip>:4000 ps -a 
Error response from daemon: No elected primary cluster manager 

しかし、単純なtelnetコマンドは、私の飼い猫のホストが動作していることを私に示しています。だから、群れが飼い猫発見のバックエンドに接続しようとすると、私はどのようにしてI/Oタイムアウトを取ることができますか?

+1

あなたは古い遺産群と協力していると思いますか?バージョン1.12ではドッカーに新しい「Swarmモード」が追加されました。私はこれがアプリケーションディスカバリーのためのサポートを提供しているので、これを調べることを強くお勧めします(あなたには飼い葉桶が不要です) –

+0

お返事ありがとうございますO'Connor。私は更新するつもりです。 –

+0

あなたはDocker 1.12を実行しています...なぜ、あなたはまだ古いSwarmを実行しようとしていますか? Swarmを実行するために、飼い主のようなバックエンドは必要なくなりました。 –

答えて

1

コメントに記載されているように、1.12以降、Dockerに埋め込まれたSwarm modeという新しいバージョンがあります。これには高可用の分散オブジェクトストアが組み込まれているため、外部KVストアを自分で設定する必要はありません。それは飼育係があなたのマシン上で実行されていないか、あなたは右を指していなかったようだ私には

2016/12/09 20:29:50 Failed to connect to <swarm-manager-ip>:2181: dial tcp <swarm-manager-ip>:2181: i/o timeout 

:今スウォームの最初のバージョンを使用して問題に関して

、1行目は私の注意を引きましたポート。あなたは、プロセスの実行を確認する必要があり

ps aux | grep zookeeper 

:と飼育係がマシン上で実行されていることを

最初のチェック。

ない場合は、例えば、右のポートを指定して、あなたの飼育係のインストールのconfディレクトリにzoo.cfgファイルを作成することを確認してください。

tickTime=2000 
dataDir=/var/zookeeper 
clientPort=2181 

あなたは飼育係をブートストラップするThis Tutorialで見ることができます。

これ以降、zkStart.shスクリプトを実行してzookeeperインスタンスを起動すると、swarmが正しく接続してLeaderキーを登録できるようになります。

これでも動作しない場合は、Docker Swarm Modeに切り替えてから最後にサポートされているバージョンであるため、動物園の3.4.6にダウングレードしてみます。

関連する問題